使用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”中的網站。