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

squid-透明代理

nat表 功能 分析 lin 轉換 公網 tin squid服務 mil

squid-透明代理透明(transparent)代理:先把上面做的正向代理的客戶端配置部分去掉(firefox和IE的配置)第一步:在squid服務器上打開路由轉發功能# vim /etc/sysctl.confnet.ipv4.ip_forward = 1 ----因為要使用iptables寫NAT表的規則,所以要打開ip_forward# sysctl -p第二步:修改配置文件# vim /etc/squid/squid.conf --在正向代理的配置基礎上再加上下面一句的配置http_port 3128 intercept# /etc/init.d/squid restart第三步:配置iptables
client squid 公司路由器vmnet1 eth0192.168.1.128 192.168.1.1 172.16.2.9--> 172.16.1.1 公網IP|||client網關指向192.168.1.1--clientDNS指向8.8.8.8 ---------------------------------->外網DNS# iptables -t nat -A POSTROUTING -p udp --dport 53 -o br0 -j SNAT --to-source 172.16.1.40# iptables -t nat -A PREROUTING -p tcp --dport 80 -i vmnet1 -j REDIRECT --to-port 3128
# iptables -t nat -A POSTROUTING -p tcp --dport 443 -o br0 -j SNAT --to-source 172.16.1.40由上面的分析,需要在squid服務器上寫上一句snat,讓DNS能正常訪問外網# iptables -t nat -A POSTROUTING -p udp --dport 53 -o eth0 -j SNAT --to-source 172.16.2.9這樣的話,內網客戶端的DNS OK了,但是http的80端口的訪問如果也做一個SNAT的話,如下的規則:# iptables -t nat -A POSTROUTING -p tcp --dport 80 -o eth0 -j SNAT --to-source 172.16.2.9
那麽這就做的是完全的通過iptables來上外網;與squid無關所以應該換成下面一句規則,把80端口的訪問都重定向到3128端口# iptables -t nat -A PREROUTING -p tcp --dport 80 -i vmnet1 -j REDIRECT --to-port 3128還有443的端口問題,這裏如果也重定向到3128,會出現訪問https網站報ssl錯誤。因為https不能緩存,所以我們這裏把443用iptables直接SNAT轉發出去(也就是說443與squid無關)# iptables -t nat -A POSTROUTING -p tcp --dport 443 -o eth0 -j SNAT --to-source 172.16.2.9第四步:客戶端驗證省略總結:--上面所做的透明代理其實和上次iptables所講的幾乎一樣,唯一不同的就是把80端口的SNAT換成了端口的轉換,把它交給3128的squid來上網--但就上面這樣做,並沒有看出比使用iptables上網有什麽優勢--squid共享上網的優勢就在於使用acl訪問控制,緩存,資源控制等

squid-透明代理