用squid+nat作透明代理
一,要點:
1.安裝squid包,并啟動squid服務(service squid start)
2.編輯squid.conf文件
3.設置iptables的nat規則。
4.重啟squid服務。
二,重點描述:
1.分析squid.conf
因為suid.conf文件比較復雜,自己寫起來麻煩,所以最好直接在原文件上修改,以達到你的
目的,但在修改之前,最好做個備份。
本文會提到一些要修改的地方,然后,提示怎么修改,最好在注釋的后面添加,不要修改原文。
=====>找到httpd_accel_host
修改為:httpd_accel_host virtual
=====>找到# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
下面有一些提示:
#acl our_networks src 192.168.1.0/24 192.168.2.0/24
#http_access allow our_networks
根據你的內部網地址,修改為:
acl our_networks src 192.168.1.0/24 192.168.2.0/24
http_access allow our_networks
======>找到cache_peer
這是實現多重代理,后有一大堆的說明。
假設你有一個http代理,在這里設定之后,客戶端就不用手動設了。
這里假設你有http代理:1.2.3.4:3128
在注釋的后面添加:
cache_peer1.2.3.4 parent 3128 3130 no-query no-netdb-exchange proxy-only
照這樣,你可以多設幾條,加快訪問速度嘛。至于后面的選項,配置文件里有說明。
======>如果你想限制某些站點不讓客戶端登陸
找到# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
就象上面所說的那樣,可以多定義幾個acl:
acl our_networks src 192.168.1.0/24 192.168.2.0/24
acl deny_networks src 192.168.1.0/24 192.168.2.0/24
http_access deny deny_networks
http_access allow our_networks
需要注意的是:acl后面的名稱要惟一,且deny規則放在allow規則前面。
======>如果你想加速squid代理
重新編譯內核和squid是方法一。方法二是修改squid.conf的配置參數,到底要修改什么,
請仔細閱讀注釋掉的說明文字。
2.設定iptables的nat規則。
作為試驗,你最好在iptables里只保留下面兩條規則。注意:iptables只能在網關上設定。
假設你的squid服務開啟在192.168.1.1,當然squid服務可以開啟在任何地方。
規則一,偽裝內網IP:
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
規則二,實現透明代理:
# iptables -t nat -A PREROUTING -s 192.168.1.0/24 -i eth0 -p tcp --dport
80 -j DNAT --to-distination 192.168.1.1:3128
如果你不明白,192.168.2.0/24怎么辦,你想想網關和客戶機的關系。然后仿照上面的規則
寫到相應網關機器的iptables鏈。
3.重啟服務:service squid restart,如果失敗的話,用 ps -A | grep squid 找到
squid的進程號,然后 kill -9 squid-ID。然后,service squid start.
三,總結:
為什么用squid?有兩大有點:1)作為簡單的網站過濾。2)作為網頁的緩沖, 提高客戶機訪
問速度。