arbor 发表于 2010-05-08 15:41

[原创]用squid做代理服务器,对学生上网行为进行管理实战

本帖最后由 arbor 于 2010-05-08 15:43 编辑

squid是一个非常优秀的代理服务器软件。学生机房的上网比较混乱,几乎不受控制,为了规范他们的上网行为,尝试了一把。

服务器:普通联想台式电脑,E4500+2GB+945主板+160GB,增加一个8169芯片的千兆网卡,板载一个8139的网卡。

安装centos 5.4,选择安装squid和iptables,并设置为自动启动

设置好网络的参数:
eth0:192.168.1.2,接外网
eth1:192.168.2.2,接教室内部网络

安装过程不再赘述

在/etc/rc.d/下面建立一个文件firewall,内容如下:
echo "starting ip forward"
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "starting iptables rules"
modprobe ip_tables
modprobe ip_nat_ftp
/sbin/iptables -F -t nat
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
给firewall加上执行权限 chmod u+x firewall
修改好后运行一下这个文件

然后修改squid的配置文件 /etc/squid/squid.conf,里面除了默认的设置外,红色的是我修改的设置# cat squid2.conf
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
#定义学生机房网络设置
acl students src 192.168.2.0/255.255.255.0
#禁止学生下载的文件类型
acl denyfiles urlpath_regex -i \.mp3$ \.avi$ \.zip$ \.rar$ \.exe$ \.gz$ \.iso$
#禁止学生访问的网站列表
acl denysites url_regex -i "/etc/squid/denysites"

acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
http_access allow manager localhost
http_access deny denyfiles
http_access deny denysites
http_access allow students
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
icp_access allow all
#设置为透明代理模式
http_port 3128 transparent

hierarchy_stoplist cgi-bin ?
access_log /var/log/squid/access.log squid
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
#管理员邮箱
cache_mgr myuser@163.com
#自定义为简体中文提示信息
error_directory /usr/share/squid/errors/Simplify_Chinese编辑好后,重启一下squid服务

让学生机把网关设置为本代理服务器的eth1的IP地址即可,浏览器不需要再设置代理了(透明代理吗)

禁止访问网站列表# cat denysites
qq.com
6.com
因为学生无法去网上下载exe和各种压缩文件,就无法下载安装qq,这里把qq.com也禁止访问,学生连web qq都不能使用,有其他需要拦截的网站,可以自己把网址加入这个文件里面去。

中午完成,下午投入使用,效果良好

xjjjk 发表于 2010-05-10 16:59

很好不错;:em03:

kevin.tan 发表于 2010-05-11 14:57

哈哈,不错不错

dong_kof 发表于 2010-05-12 12:22

denysites里

qq.com
6.com

改为

.qq.com
.6.com

因为aa.com不能匹配到例如down.aa.com,bbs.aa.com等

dong_kof 发表于 2010-05-12 12:22

楼主我也是苏州的.呵呵
有机会交流下

arbor 发表于 2010-05-17 08:55

楼主我也是苏州的.呵呵
有机会交流下
dong_kof 发表于 2010-05-12 12:22 http://bbs.chinaunix.net/images/common/back.gif


49385760 苏州linux爱好者群,呵呵

有空多交流!

    denysites里

qq.com
6.com

改为

.qq.com
.6.com

因为aa.com不能匹配到例如down.aa.com,bbs.a ...
dong_kof 发表于 2010-05-12 12:22 http://bbs.chinaunix.net/images/common/back.gif



这两天正好有大批学生上网进行研究性学习,发现了一些问题,比如封锁了6.com,结果126.com的邮箱也无法打开了,呵呵,封锁了 qq.com,qq邮箱也不行了,于是改为只封锁web.qq.com和qzone.qq.com,另外还有mp3.baidu.com、 118114.cn、xunlei.com等

另外为了封锁ftp,把21也作为关键词加进去了,这个很不恰当,因为有些链接地址里面有21,也无法访问了,于是把21删除

HH106 发表于 2010-05-17 09:31

这两天正好有大批学生上网进行研究性学习,发现了一些问题,比如封锁了6.com,结果126.com的邮箱也无法打开了,呵呵,封锁了 qq.com,qq邮箱也不行了,于是改为只封锁web.qq.com和qzone.qq.com,另外还有mp3.baidu.com、 118114.cn、xunlei.com等

另外为了封锁ftp,把21也作为关键词加进去了,这个很不恰当,因为有些链接地址里面有21,也无法访问了,于是把21删除arbor 发表于 2010-05-17 08:55 http://bbs.chinaunix.net/images/common/back.gif其实这个问题很好解决,
把acl denysites url_regex -i "/etc/squid/denysites"
换成acl denysites dstdomain"/etc/squid/denysites"
denysites里面的内容按4楼dong_kof兄说的写

kevin.tan 发表于 2010-05-17 10:01

持续关注{:2_178:}

dong_kof 发表于 2010-05-17 12:59

禁止FTP的话把端口21给禁了就行了

acl Safe_ports port 21

把默认配置里这条给注释了

toseeme_cu 发表于 2010-05-18 13:31

写得不错,支持楼主。其实软件好不好,只要适合自己就好!跟男人找老婆一个理。。。

7楼的写法比较合理,不用每每修改ACL配置后reload。
页: [1] 2
查看完整版本: [原创]用squid做代理服务器,对学生上网行为进行管理实战