正 文:
Squid的功能很强大,除了具有传统的HTTP正向代理,还支持透明代理,反向代理。本文飘易就只说正向代理的搭建方法;搭建好后,客户可以在浏览器里设置代理ip,访问外部网页。
平台CentOS 5 服务器 + 多个公网IP。安装 Squid 之前,我们需要先安装 Apache 组件,因为配置 Squid 需要 Apache里的一个命令:“
htpasswd”,用于生成用户名和密码。
1、
安装Apache,可以考虑LAmp一键包:
LAmp一键安装包-CentOS 5/6下自动编译安装Apache,MySQL,PHP,编译好的傻瓜式安装。
适用环境:
系统支持:CentOS-5 (32bit/64bit)、CentOS-6 (32bit/64bit)
内存要求:≥256M
安装了什么:
1、Apache 2.2.22或Apache 2.4.2
2、MySQL 5.5.24
3、PHP 5.2.17或PHP 5.3.13
4、phpmyadmin 3.5.1
2、
安装好LAmp之后,开始安装 Squid :
yum -y install squid
3、
生成存放用户名密码的文件:
htpasswd -cb /etc/squid/squid_passwd username1 password1
注意,这里可能会提示没有 htpasswd 这个命令,我们把 htpasswd 的完整路径带上就行了,执行:
[root@MyVPS squid]# find / -name htpasswd
/usr/local/apache/bin/htpasswd
得到 htpasswd 的完成路径为:“/usr/local/apache/bin/htpasswd”,把上诉命令改成:
/usr/local/apache/bin/htpasswd -cb /etc/squid/squid_passwd username1 password1
再加一个用户:
/usr/local/apache/bin/htpasswd -b /etc/squid/squid_passwd username2 password2
Apache htpasswd命令选项参数说明:
-c 创建一个加密文件
-n 不更新加密文件,只将apache htpasswd命令加密后的用户名密码显示在屏幕上
-m 默认apache htpassswd命令采用MD5算法对密码进行加密
-d apache htpassswd命令采用CRYPT算法对密码进行加密
-p apache htpassswd命令不对密码进行进行加密,即明文密码
-s apache htpassswd命令采用SHA算法对密码进行加密
-b 在apache htpassswd命令行中一并输入用户名和密码而不是根据提示输入密码
-D 删除指定的用户
4、
修改 Squid 的配置文件 /etc/squid/squid.conf ,先备份一个:
cp /etc/squid/squid.conf /etc/squid/squid.conf.bak
因为这个squid.conf文件里面说明文字太多,用vi命令不方便查找,飘易是直接用FTP工具把 squid.conf 下载到本地编辑好后再上传。
a)
启用ncsa认证。找到auth_param basic的行然后取消注释:
#auth_param basic program <uncomment and complete this line>
#auth_param basic childred 5
#auth_param basic realm Squid proxy-caching web server
#auth_param basic credentialsttl 2 hours
#auth_param basic casesensitive off
改成:
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
b)
创建proxy_auth acl实现用户名/密码方式访问。找到以下行:
在该行下面插入以下proxy_auth规则:
#INSERT YOUR OWN RULE (S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
acl ncsaauth proxy_auth REQUIRED
http_access allow ncsaauth
c)
禁用客户端IP转发默认是SQUID启用客户端IP转发的,默认是on且注释掉了,为了做匿名代理需要禁用这个。找到如下行:
# forwarded_for on
改成:
forwarded_for off
d)
修改代理端口默认端口是3128,为了安全可以修改成其他端口,寻找:
http_port 3128
然后修改成例如使用6666端口:
http_port 6666
e)
配置不用的用户利用不同的ip访问外网:
# TAG: tcp_outgoing_address 找个这行,在下面添加:
acl user1 proxy_auth user1
acl user2 proxy_auth user2
tcp_outgoing_address 92.68.0.10 user1
tcp_outgoing_address 92.68.0.11 user2
用户名和上面建立的对应。
f)
启用匿名代理。将如下行添加到squid.conf文件最后:
header_access Allow allow all
header_access Authorization allow all
header_access WWW-Authenticate allow all
header_access Proxy-Authorization allow all
header_access Proxy-Authenticate allow all
header_access Cache-Control allow all
header_access Content-Encoding allow all
header_access Content-Length allow all
header_access Content-Type allow all
header_access Date allow all
header_access Expires allow all
header_access Host allow all
header_access If-Modified-Since allow all
header_access Last-Modified allow all
header_access Location allow all
header_access Pragma allow all
header_access Accept allow all
header_access Accept-Charset allow all
header_access Accept-Encoding allow all
header_access Accept-Language allow all
header_access Content-Language allow all
header_access Mime-Version allow all
header_access Retry-After allow all
header_access Title allow all
header_access Connection allow all
header_access Proxy-Connection allow all
header_access User-Agent allow all
header_access Cookie allow all
header_access All deny all
g)
设置 visible_hostname 的主机名:
如果不设置该项,启动 squid 时,可能提示“FATAL: Could not determine fully qualified hostname. Please set 'visible_hostname'”错误。输入命令:
hostname
显示 MyVPS
找到 # TAG: visible_hostname
下面加上
visible_hostname MyVPS
h)
设置dns为google的:找到 # TAG: dns_nameservers 下面添加:
dns_nameservers 8.8.8.8 8.8.4.4
5、
服务器管理第一次启动前要创建缓存目录使用,命令
$sudo squid -z
启动服务并设置自动启动服务
service squid start #(启动)
service squid restart #(重新启动)
service squid stop #(停止)
可以使用 telnet localhost 6666测试是否启动成功
6、
设置squid自启动添加一个squid的自启动项使得系统重启后自动启动squid
检查状态:
chkconfig --list squid
squid 0:off 1:off 2:off 3:off 4:off 5:off 6:off
0-6都是off,不会自启动;
开启:
chkconfig squid on
再检查,2-5 on,已经自启动:
chkconfig --list squid
squid 0:off 1:off 2:on 3:on 4:on 5:on 6:off
7、
使用浏览器测试代理浏览器设置-网络-代理,输入代理服务器地址和端口,连接时会提示输入用户名密码。
访问测试网站测试是否匿名代理:
例如目前这个网站可以
http://www.iprivacytools.com/proxy-checker-anonymity-test/参考:
http://www.libertyvps.com/thread-46-1-1.htmlhttp://blog.sina.com.cn/s/blog_622134fd01015s2l.html