這兩天為了架個Transparent Proxy Server搞死我了,網路上大部分的教學不是太舊,要不然就是把Proxy Server和NAT Server架在一起,所有的流量導向指令都混在一起,搞了半天,原來只要在Proxy Server上面加一行iptables的指令,把destination port為80轉給自己的squid就好了。

環境:
Debian Linux
squid版本 2.6 STABLE5

安裝:
apt-get install squid

設定:
squid在2.6以後Transparent的設定就簡單很多,只將squid.conf裡面的
http_port 3128
改為
http_port 3128 transparent
重新啟動squid即可

另外在proxy server上面的iptables裡面要設定把port 80的流量轉給squid處理
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
最後只要把port 80的流量導過來給Proxy Server就大功告成,像我的環境就是用L4的Switch把destination port為80的流量導到proxy server,不過如果L4 switch上面的health check是定80 port的話,那proxy server的listen port也要訂為80,因此,在iptables的部分要改一下,不然在proxy server上的流量會出不去。

假設我proxy server的ip為192.168.1.1,則在導向時,要記得把自己的ip給排除掉,不然http request就會一直loop回自己的80 port。
iptables -t nat -A PREROUTING -i eth0 -s !192.168.1.1 -p tcp --dport 80 -j REDIRECT --to-port 80

什麼是Transparent Proxy?
一般來說,我們為了節省網路頻寬、加快網路瀏覽速度更甚者為了達到控制公司內部的網頁瀏覽情況(邪惡)等等時會使用proxy server,但是假設公司內部有一千台電腦,使用電腦的人又是電腦白痴的時候,為了不要浪費時間教會使用者如何設定瀏覽器Proxy或者是要節省這些功夫,最快的方法就是在網路出口的地方像是NAT伺服器或者L4 switch上面,將這些流量自動的導到proxy server上面。

這樣一來,使用者完全不需要做任何設定,瀏覽網頁時自動就會透過Proxy Server連線出去,對使用者來說,這個proxy就像是透明的一樣,完全感覺不到它的存在。
arrow
arrow
    全站熱搜

    nsysumis94 發表在 痞客邦 留言(1) 人氣()