1. 程式人生 > >squid 透明代理配置

squid 透明代理配置

內部 並且 代理服務 dst 分析 tar port nor tro

阿銘在教程中已經介紹過squid的安裝和配置,http://study.lishiming.net/chapter22.html 教程中只介紹了初級的正向代理和反向代理,這篇文檔將要介紹透明代理如何配置。

首先,阿銘要介紹一下,什麽是透明代理?

透明代理的意思是客戶端根本不需要知道有代理服務器的存在,它改變你的request fields(報文),並會傳送真實IP,多用於路由器的NAT轉發中。

透明代理的原理是這樣的:
1. 假設A為內部網絡客戶機
2. B為外部網絡服務器,B提供的服務為httpd服務,監聽端口為80
3. C為代理服務器(也是我們的網關),假如代理服務器提供服務端口為3128

過程: 當A向B的80端口請求數據時,TCP連接請求要先經過C,C看到A請求的是B的80端口時,C由於已經設置了轉發規則,所以C會把A的請求80端口轉發到自己的3128端口,也就是說A將要直接訪問C的3128端口,而非B服務器的80端口,此時,C會先去訪問B的80端口,把A要訪問B的請求數據先請求過來,保存到C上,然後C再把請求數據吐給A。而在A看來,它貌似是直接請求的B,而實際並非如此。由於這些連接過程是自動的,不需要客戶端手工配置代理服務器,甚至用戶根本不知道代理服務器的存在,因而對用戶來說是透明的。

下面阿銘來教您配置透明代理:

通過上面的原理分析,可知,只有您的代理服務器為網關時,才可以實現透明代理的功能,否則無效。實際應用中,透明代理服務器應該有至少兩個網卡,第一個網卡連接到外網,或者它可以直接上網,第二個網卡連接的是內部的一個局域網段,也就是想使用代理上網的網段。

假設,透明代理服務器的網卡1eth0設置IP為 10.2.1.100(可以上網的ip), 網卡2eth1的ip設置為192.168.19.1,那麽要通過透明代理上網的局域網段應該為 192.168.19.0/24,並且在該局域網的客戶機應該設置的網關地址為192.168.19.1.

1. 安裝squid
yum install -y squid

2. 配置squid

rm -f /etc/squid/squid.conf
vim /etc/squid/squid.conf

寫入如下內容:
http_port 3128 transparent
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl SSL_ports port 443
acl Safe_ports port 80 8080 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access allow localhost
http_access deny all
cache_dir aufs /data/cache 1024 16 256
cache_mem 128 MB
hierarchy_stoplist cgi-bin ?
coredump_dir /var/spool/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern \.(jpg|png|gif|mp3|xml) 1440 50% 2880 ignore-reload
refresh_pattern . 0 20% 4320

3. 創建緩存目錄,並修改權限
mkdir /data/cahce; chown -R squid:squid /data/cache

4. 初始化緩存目錄
squid -z

5. 啟動squid
service squid start

6. 打開端口轉發
echo "1" > /proc/sys/net/ipv4/ip_forward

7. 設置防火墻規則
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp -s 192.168.19.0/24 --dport 80 -j REDIRECT --to-ports 3128

squid 透明代理配置