squid-透明代理

Posted skyzy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了squid-透明代理相关的知识,希望对你有一定的参考价值。

squid-透明代理
透明(transparent)代理:
先把上面做的正向代理的客户端配置部分去掉(firefox和IE的配置)
第一步:
在squid服务器上打开路由转发功能
# vim /etc/sysctl.conf
net.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 eth0
192.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-透明代理的主要内容,如果未能解决你的问题,请参考以下文章

Squid代理服务器(传统代理透明代理)(图文详解)

squid传统代理和透明代理

Squid透明代理

实战Squid 缓存服务器 之 传统代理 + 透明代理

squid 透明代理配置

SQUID代理服务