1、簡介
node
Squid Cache(簡稱爲Squid)是HTTP代理服務器軟件。Squid用途普遍的,能夠做爲緩存服務器,能夠過濾流量幫助網絡安全,也能夠做爲代理服務器鏈中的一環,向上級代理轉發數據或直接鏈接互聯網。mysql
2、功能linux
1. 正向代理web
(1)傳統代理sql
(2)透明代理vim
2. 反向代理緩存
正向代理是指:一個位於客戶端和目標服務器(好比:百度)之間的服務器,爲了從目標服務器取得內容,客戶端向代理髮送一個請求並指定目標(目標服務器),而後代理向目標服務器轉交請求並將得到的內容返回給客戶端。安全
反向代理是指:以代理服務器來接受internet上的鏈接請求,而後將請求轉發給內部網絡上的服務器,並將從服務器上獲得的結果返回給internet上請求鏈接的客戶端,此時代理服務器對外就表現爲一個服務器。bash
3、簡單部署服務器
1. 傳統代理
在傳統代理模式下,客戶端必需要一些配置才能夠上網。
環境:
client:[root@oracle ~] IP:192.168.111.2(橋接VMnet1)
proxy:[root@mysql ~] IP:192.168.111.3(橋接VMnet1) 192.168.1.105(橋接宿主機網卡)
proxy server:
[root@mysql ~]# yum install squid -y [root@mysql ~]# vim /etc/sysctl.conf net.ipv4.ip_forward = 1 #開啓IP轉發 [root@mysql ~]# sysctl -p #當即生效 [root@mysql ~]# setenforce 0 #關閉selinux,否則會阻止服務啓動 [root@mysql ~]# vim /etc/squid/squid.conf http_port 192.168.111.3:3128 visible_hostname proxy #其實還有一些其餘參數,如今先不改,ACL默認是將本地地址所在的網段放行的 [root@mysql ~]# squid –k parse [root@mysql ~]# service squid start [root@mysql ~]# vim /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3128 -j ACCEPT [root@mysql ~]# service iptables restart #在iptables上放行3128端口
client:
一些經常使用選項:
http_port x.x.x.x:3128 指定監聽的IP地址和端口號
visible_hostname 只有不知道主機的主機名時,才須要設置,以下報錯
minimum_object_size 0 KB 指定緩存對象的最小大小
maximum_object_size 4096 KB 指定緩存對象的最大大小,如:只有大小在0-4M的對象纔會被緩存
cache_mem 64 MB 指定緩存的大小
cache_swap_low 90
cache_swap_high 95 緩存到達總容量的95%就開始清理緩存,清理到90%爲止
cache_dir ufs /var/spool/squid 100 16 256 utf爲緩存數據的格式
100爲緩存目錄分配的磁盤空間(MB)
16爲緩存空間一級子目錄的個數
256爲緩存空間二級子目錄的個數
ACL功能:
定義acl列表 acl列表名稱 列表類型 列表內容 …
針對acl列表進行限制 http_access allow或deny列表名 …
經常使用指令: squid -k parse 檢查語法
squid -z 初始化squid緩存目錄
2. 透明代理
顧名思義,透明代理對客戶端來講是透明的,客戶端無需任何設置。
環境:
client:[root@oracle ~] IP:192.168.111.2(橋接VMnet1)
proxy:[root@mysql ~] IP:192.168.111.3(橋接VMnet1) 192.168.1.105(橋接宿主機網卡)
[root@mysql squid]# vim /etc/squid/squid.conf http_port 192.168.111.3:3128 transparent #transparent關鍵字 [root@mysql squid]# iptables -t nat -I PREROUTING -i eth0 -s 192.168.111.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 3128 #將從eth0口進來的192.168.111.0/24網段的目標端口爲80的重定向3128端口
咱們都知道,須要上網還須要DNS,DNS是TCP和UDP的53端口,咱們這裏的DNS請求發到了公網DNS服務器上(如8.8.8.8),由於我實驗的實驗的機器是兩臺內網機器,因此回來的包給了咱們的外網防火牆,防火牆根本不知道192.168.111.0網段在哪裏,由於192.168.111.0網段是個人兩臺實驗PC私有的,這裏就有DNS的問題,解決的辦法有3種:
1. 外網防火牆指一條靜態路由到192.168.111.0網段的發給192.168.1.105
2. 內網架設一臺能夠上網的DNS服務器,也可將代理服務器配置爲DNS服務器
3. 代理服務器上作NAT,咱們這裏就是使用第三種方法
[root@mysql ~]# iptables -t nat -A POSTROUTING -s 192.168.111.0/24 -o eth1 -j SNAT --to-source 192.168.1.105
3. 反向代理
環境:
http server:[root@web ~]# IP:192.168.3.91(VMnet1)
squid server:[root@node2 ~]# IP:192.168.3.96(VMnet1) 192.168.2.97
Client:192.168.2.88
squid server:
[root@node2 ~]# vim /etc/squid/squid.conf http_port 192.168.2.97:80 vhost vport cache_peer 192.168.3.91 parent 80 0 originserver weight=1 max-conn=30 visible_hostname node2 #cache_peer Web服務器地址 服務器類型 http端口 icp端口 [可選項]
監聽端口改成80是爲了對應於標準web端口,便於用戶使用cache_peer配置項能夠用於指定真正的Web服務器的位置。其中,服務器類型對應到目標主機的緩存級別,上游Web主機通常使用「parent」(父服務器);icp端口用於鏈接相鄰的ICP(Internet Cache Protocol)緩存服務器(一般爲另外一臺Squid主機),若是沒有,則使用0;可選項是提供緩存時的一些附件參數,例如「originserver」表示該服務器做爲提供Web服務的原始主機,「weight=n」指定服務器的優先權重,n爲整數,數字越大優先級越高(缺省爲1);「max-conn=n」指定反向代理主機到該web服務器的最大鏈接數。