搭建一个大型网站架构的实验环境(Squid缓存服务器篇)第1/2页

2019-10-15 21:33:15王旭



很多文章讲到共享上网就会讲有关透明代理(iptables + squid或ipchains + squid)的内容,我个人认为对于规模不大的网络,又没有内容过滤等功能的要求,使用squid是没有必要的,单纯的使用NAT方式就足够了,并且这样对运行NAT的服务器的要求就更加低,比如使用一台486 + 4M内存的机器,如果使用那些经过特殊定制的Linux系统,甚至连硬盘都不需要,只要一张软盘就可以了。

如果是源代码方式编译安装的squid,请在编译选项里指明--enable-linux-netfilter选项。Red Hat Linux自带的squid支持透明代理,我们可以直接修改/etc/squid/squid.conf文件,设置必要的参数:

httpd_accel_host virtual

httpd_accel_port 80

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

运行/etc/rc.d/init.d/squid reload使设置生效,然后修改fw.sh脚本,在最后添加这样一行:

iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

这将把所有局域网用户通过Linux接入服务器访问www服务的访问请求重定向到工作在3128端口的squid处理。运行fw.sh脚本,使设置生效。就这么简单!

你可能还记得fw.sh里面的关于NAT的规则:

iptables -A POSTROUTING -t nat -s 192.168.100.0/24 -o eth0 -j SNAT --to-source 61.156.35.114

由于PREROUTING规则总在POSTROUTING规则之前应用,所以不用担心squid被NAT规则屏蔽掉。

注意:使用透明代理时,无法同时使用squid基于用户帐号的验证功能!


想了解更多关于透明代理的资料,请访问TLDP(The Linux Documentation Project)上关于透明代理的HOWTO文档:

http://www.tldp.org/HOWTO/mini/TransparentProxy.html

§§ 一个squid.conf的配置实例

现在给出一个支持透明代理并使用MAC地址控制用户上网权限的squid配置文件,该配置还支持特定网站(如色情网站)的过滤功能:

#定义服务器地址和端口

http_port 192.168.100.254:3128

#定义服务器名字

visible_hostname 192.168.100.254

#定义管理员邮件地址

cache_mgr [email]pangty@usa.net[/email]

#定义缓存内存空间和缓存目录

cache_mem 16 MB

cache_dir ufs /var/spool/squid 100 16 256

#支持透明代理

httpd_accel_host virtual

httpd_accel_port 80

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

#定义acl

#sexurl.txt列出要过滤色情网站地址的关键字,每个关键字占一行,如xchina

#maclist.txt列出允许上网的主机的MAC地址,每个地址占一行,如00:50:56:C0:00:08

acl all src 0.0.0.0/0.0.0.0

acl sexurl url_regex "/etc/squid/sexurl.txt"

acl allowedmac arp "/etc/squid/maclist.txt"

#定义访问策略

http_access deny sexurl

http_access allow allowedmac

http_access deny all