1. 程式人生 > >使用squid配置透明代理並對上網行為進行控制

使用squid配置透明代理並對上網行為進行控制

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配置透明代理並對上網行為進行控制