使用Squid搭建支持IPv6的代理

发布于 2013-07-21  22 次阅读


 

现在VPS泛滥了,很多人手里拿着一堆VPS,VPN、代理、建站、甚至挂着赚钱。虽然网上有很多各种各样的教程来教你怎么样去玩转VPS,但是在实际使用中却难免遇到许多问题,比如藤也我就在使用Squid搭建搭理平台的时候碰到很多挫折。所以,在此写一篇简易的教程,一来做一下笔记,二来为有需要的朋友提供一些建议。如有遗漏或错误之处,请言明。
关于什么是代理,代理是干嘛的,以及一些基本问题我就不详说了,可以百度。我就从Squid下手

Squid是什么

Squid简单点说就是一个代理和缓存服务器,应该说是目前用的最多的Linux下的代理平台吧。具体的东西百科里写的很详细了
http://baike.baidu.com/view/490519.htm#sub9412646

如何安装

说真的,如果你喜欢等待和折腾,那就可以选择下载源码,自行编译安装。但是藤也我尝试了很多次都安装失败了,自我分析一下,问题应该出在初始化的参数配置上。
最新的稳定版本是3.2,可以从官网上获取到 http://www.squid-cache.org/Versions/,然后自行编译安装,命令如下
1 tar zxvf squid-3.2.3.tar.gz
2 cd squid-3.2.3
3 ./configure –prefix=/usr/local/squid
4 make
5 make install

当然,像我这样懒的人也可以选择使用RPM包来安装(最多一分钟的事),不怕告诉你,藤也我当时为了找Squid的RPM包可真的废了不少脑细胞。RPM包下载地址:http://people.redhat.com/jskala/squid/  你可以在这里查看到很多版本的Squid RPM包,最新的是3.1.19(此版本已支持IPv6),安装很简单,命令如下
注意下载RPM时注意自己的VPS架构,一般都是i386的吧

如何配置

说实话,现在网上关于Squid的配置真的一片糟。很多都是讲的朦朦胧胧,有时候关键的几个配置行说的不明不白。
Squid默认的配置文件在 /etc/squid/squid.conf  我们可以编辑来配置Squid,由于安装好后默认的配置是deny all的,所以需要配置此文件来正常使用。
p.s 通过RPM包安装的Squid配置文件只有几行关键配置命令行,而通过编译安装的则有150K大小,其中大部分为注释的说明行。

常用选项

#Squid信息设置
#cache_mgr可填写你的电子邮箱,当错误发生时,该地址会显示在错误页面上,以便于用户联系管理者
visible_hostname yourname.com
cache_mgr [email protected]
#Squid监听客户http连接请求的端口,默认是3128
#如果你要使用透明模式,在端口后面增加关键字"transparent"。如 http_port 3128 transparent
http_port 3128
#cache_dir定义磁盘缓存空间,以存储访问过的页面或其他资源的拷贝
#ufs为存储类型, /var/spool/squid为缓存路径,目测需要自己建立
#100 16 256分别表示缓存空间最大为100M;16到256代表缓存目录下的一级和二级目录数目
#cache_mem定义内存缓存大小,视你的VPS内存大小而定
cache_dir ufs /var/spool/squid 100 16 256
cache_mem 64 MB
#定义不能访问的网址,bansite文件格式为一行一个,可用*做通配符
#需要使用 http_access deny ban 来达到屏蔽的作用
acl ban dstdomain "/etc/squid/bansite"
#大于该值得对象将不被缓存,如果你想要提高访问速度,就请降低该值
maximum_object_size 10M
# hierarchy_stoplist cgi-bin ?

基本访问控制选项

默认的配置文件已包含了一些重要的访问控制选项(为了节省篇幅,这里没一一列出),你不应该改变或删除它们,除非你完全理解它们的意义。例如以下的配置文件,里面的大部分参数都不需要修改,我只在关键行做出注释

#访问控制元素
#注意 ::1 代表可使用IPv6地址
#第一行为本机服务器地址,第二行为白名单地址,第三行为允许使用的端口
acl localhost src 127.0.0.1/32 ::1
acl whitelist src 192.168.0.1
acl Safe_ports port 80 21 443 563 70 210 280 488 591 777 1025-65535
#第一行表示允许本地使用,第二行表示允许白名单IP使用代理,第三行表示拒绝上述端口外的连接
#最后一行的 http_access deny all 表示拒绝所有人使用该代理(本机和白名单除外),如果你没有太多要求和访问控制,改为 http_access allow all 即可实现任何人都可以连接此代理
http_access allow localhost
http_access allow whitelist
http_access deny !Safe_ports
http_access deny all

说明

其实上述的一些Squid配置仅仅只是一小小小小部分,为了简易也为了让新手看明白Squid的配置特点,所以我只挑选了一些最基本的一些做了注释。Squid还有许许多多的高级用法,在这里藤也就不多说了,文末我会贴上一些很有用的Squid教程给大家。
这里我贴出我的配置文件,因为藤也的代理是面向所有用户的,所以写的很简单,就是上述的配置综合起来而已,如有遗漏或错误之处,请指正。

visible_hostname zhainan.org
cache_mgr [email protected]
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl Safe_ports port 80 21 443 563 70 210 280 488 591 777 1025-65535
http_access deny !Safe_ports
http_access allow localhost
http_access allow all
http_port 1988
hierarchy_stoplist cgi-bin ?
cache_dir ufs /var/spool/squid 100 16 256
cache_mem 32 MB
coredump_dir /var/spool/squid
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern -i (/cgi-bin/|?) 0	0%	0
refresh_pattern .		0	20%	4320

参考文献

http://blog.s135.com/book/squid
http://www.visolve.com/squid/squid30/contents.php
http://kangzj.net/squid-reverse-proxy/
http://blog.chinaunix.net/uid/20546486/frmd/47616.html
http://linux.vbird.org/linux_server/0420squid.php
http://logicmd.net/2010/12/centos-setup-squid-over-ipv6/
http://www.dewen.org/q/1100
http://sunting.blog.51cto.com/1244382/281653