在CentOS下安装并配置squid代理

2014-09-19 • 技术文章评论

起初,学校是通过带双绞线LAN口的瘦AP在室内同时提供免费的有线和无线网络。国际工商与管理学院的一个同学送了我一个ChinaUnicom的无线账号,从此上网比学校的5Mbps的带宽快了很多。但是最近,学校却把有线的提供形式改为了电信出资建设的拨号网络,虽然是光纤进了宿舍,但校内免费网络的实际使用速度却只有原来的十分之一左右,让人难以接受,网页难打开,视频更是看不了。于是动手改造,把EPON终端撤了,把双绞线插回了AP,速度又回到了5Mbps的水平,但是和之前用过的ChinaUnicom的账号比起来还是有点慢。

为了改变这种状况,计划搭建校内代理服务器。学校有部分区域的计算机是不限制带宽的,校内互访原则上也是不限速的,但宿舍区直接访问外网却是受限制的。所以,只要在不限制带宽的服务器上搭建代理,作为宿舍区访问网络的跳板就可以实现宿舍区的高速上网了。学院正好有一台性能非常强的CentOS机器暂由我负责管理,其CPU平均使用率都在0.5%以下,作为代理还是不会有什么压力。

我们可以通过yum install squid来安装squid,安装完后其配置文件会生成在/etc/squid/下,该目录下的squid.conf中可以设定squid的默认端口、ACL规则等等。其中的访问控制对于安全而言非常重要,但是由于我们外部已经有了一层NAT,在内部再做基于IP的配置也是没用的,在这里不再详述,配置参数根据说明和名称一看就懂。

考虑到安全性的问题,我们最好为代理服务器设定密码。最简单的密码验证方式如下:

1.在配置文件中加一行auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd来生成passwd文件,文件名自定。

2.自定义一条名为auth_user的ACL,ACL类型为proxy_auth通过外部程序进行用户认证方式,值为REQUIRED,说明接受所有合法用户的访问,然后使用http_access选项允许该列表。在没有开启用户名密码认证时,能成功的只允许某些IP访问代理服务器,并且屏蔽掉客户端的信息。当开启用户名密码认证时,只要验证成功,无论IP是什么,都能够使用代理服务器。

1
2
3
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
acl auth_user proxy_auth REQUIRED
http_access allow auth_user

3.然后回到终端,执行/usr/bin/htpasswd -c /etc/squid/passwd testuser生成前面提到的存储密码用的passwd文件,这里的testuser就是用户名,可自定,然后根据提示输入密码即可。

4.执行chkconfig --list squid可以看到当前squid服务是否会在各level上随机启动,我们执行chkconfig squid on即可设定为随机启动,如果不须随机启动,可跳过本步骤。

5.如果要实现对转发IP地址的隐藏,也就是客户端匿名化,可以在squid.conf中添加指令forwarded_for off。

6.执行service squid start启动squid服务即可提供代理服务器的服务了。

接下来,我们在浏览器中设置好代理服务器的IP和端口,输入用户名和密码就可以使用代理服务器上网了。经实测,代理上网的速度可达到100Mbps,非常快!