使用squid配置透明代理并对上网行为进行控制

来源:互联网 发布:linux perl 编辑:程序博客网 时间:2024/06/05 15:24

原文地址:http://www.cnblogs.com/Skyar/p/3858915.html


使用Squid配置透明代理

环境:CentOS 6.4 + squid-3.1.10-20.el6_5.3.x86_641.检查squid是否默认安装,没有安装先安装rpm -qa squid假如查找不到,就安装squidyum install squid

2.配置虚拟机的网络,一个网卡是内网,另一个是外网内网:eth0 ip:192.168.10.209  netmask:255.255.255.0  gateway:192.168.10.1外网:eth1 ip:10.10.10.100  netmask:255.255.255.0  gateway:10.10.10.1修改完之后重启网卡 service network restart如果配置完之后发现不能上网,注意用route命令查看下默认路由。将默认路由设置成外网eth1。配置DNS服务器,将/etc/resolv.conf中设置nameserver 8.8.8.8

3.配置squid及透明模式备份squid的配置文件cp /etc/squid/squid.conf /etc/squid/squid.conf.bak修改squid的配置文件:vim /etc/squid/squid.conf根据自己的需要添加对应的IP,端口如果你要使用透明模式,在端口后面添加关键字“transparent”# Squid normally listens to port 3128http_port 3128 transparent在配置文件的最下方添加这条语句,否则squid不能启动!visible_hostname localhost

4.启动squidservice squid restart

5.为透明代理配置iptables,设置转发编写脚本squid.sh
复制代码
#!/bin/bash     echo "1" > /proc/sys/net/ipv4/ip_forward     modprobe iptable_nat     /sbin/iptables -t nat -A POSTROUTING -j MASQUERADE    #将对squid代理服务器DNS的请求转到8.8.8.8上    iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to 8.8.8.8    iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.10.0/24 --dport 80     -j REDIRECT --to-ports 3128
复制代码
给脚本加权限:chmod 777 squid.sh执行脚本:./squid.sh

6.iptables的配置进行保存,并重启iptablesservice iptables saveservice iptables restart

7.测试squid透明代理客户端IP192.168.10.13网关:192.168.10.209DNS服务器:192.168.10.209将客户端的网关和DNS服务器设置成squid透明代理服务器的地址。打开浏览器进行网页的访问。


使用Squid对上网行为进行控制


修改Squid的配置文件/etc/squid/squid.conf
在默认的ACL规则之后添加自定义的ACL
#禁止下载的文件类型acl denyfiles urlpath_regex -i \.mp3$ \.avi$ \.zip$ \.rar$ \.exe$ \.iso$#禁止访问的网站列表acl denysites url_regex -i "/etc/squid/denysites"
禁止访问的网站列表
[root@localhost squid]#cat denysitesweb2.qq.com

在/etc/squid/squid.conf文件中添加与acl对应的http_access在“#INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS”中进行添加。如果没有提示就在“允许访问ip地址“之前进行添加。
http_access allow testhttp_access deny denyfileshttp_access deny denysiteshttp_access allow localnet
注意:假如test和localnet都是允许访问的本地主机ip列表,那么localnet中ip就不能访问“denyfiles和denysites”中的网站,而test中ip就可以正常访问。

注意他们http_access的顺序。因为在test之前并没有进行拒绝访问的控制,而在localnet之前已经进行了拒绝访问的控制,所以test中的ip地址不受到“denyfiles和denysites”的限制,而localnet中的ip受到限制,不能访问“denyfiles和denysites”中的网站。

原创粉丝点击