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

使用Squid配置透明代理

环境:CentOS 6.4 + squid-3.1.10-20.el6_5.3.x86_64 1.检查squid是否默认安装,没有安装先安装 rpm -qa squid 假如查找不到,就安装squid: yum 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 3128 http_port 3128 transparent 在配置文件的最下方添加这条语句,否则squid不能启动! visible_hostname localhost

4.启动squid service 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的配置进行保存,并重启iptables service iptables save service iptables restart

7.测试squid透明代理 客户端IP:192.168.10.13 网关:192.168.10.209 DNS服务器: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 denysites
web2.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 test
http_access deny denyfiles
http_access deny denysites
http_access allow localnet
注意:假如test和localnet都是允许访问的本地主机ip列表,那么localnet中ip就不能访问“denyfiles和denysites”中的网站,而test中ip就可以正常访问。

注意他们http_access的顺序。因为在test之前并没有进行拒绝访问的控制,而在localnet之前已经进行了拒绝访问的控制,所以test中的ip地址不受到“denyfiles和denysites”的限制,而localnet中的ip受到限制,不能访问“denyfiles和denysites”中的网站。
posted @ 2018-04-20 13:46  技术颜良  阅读(2422)  评论(0编辑  收藏  举报