使用squid配置透明代理並對上網行為進行控制
阿新 • • 發佈:2018-04-20
install mes 10.10 path ces 透明代理服務器 限制 BE lB
使用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”中的網站。
使用squid配置透明代理並對上網行為進行控制