飘易博客(作者:Flymorn)
订阅《飘易博客》RSS,第一时间查看最新文章!
飘易首页 | 留言本 | 关于我 | 订阅Feed

Linux利用Squid搭建HTTP代理ip平台

Author:飘易 Source:飘易
Categories:网络技术 PostTime:2013-1-23 3:25:06
正 文:
    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.html
http://blog.sina.com.cn/s/blog_622134fd01015s2l.html
作者:飘易
来源:飘易
版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
上一篇:C#多线程传递参数的方法
下一篇:PHP防SQL注入函数:mysql_real_escape_string
1条评论 “Linux利用Squid搭建HTTP代理ip平台”
1 squid...
2015-4-19 15:39:44
为什么我这里yum安装出来的配置文件squid.conf  里面的文件只有70多行 可以问下你的yum安装的是什么版本的吗?像我这情况应该怎么解决?
发表评论
名称(*必填)
邮件(选填)
网站(选填)

记住我,下次回复时不用重新输入个人信息
© 2007-2019 飘易博客 Www.Piaoyi.Org 原创文章版权由飘易所有