用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)作为网页的缓冲, 提高客户机访
问速度。