分类: 系统运维
2010-07-21 09:48:52
:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://linux.blogbus.com/logs/45676329.html
1)cache_peer邻居分为parent(父邻居),sibling(子邻居).parent和sibling的区别在于父邻居能为子cache转
发丢失的Cache,而子邻居不可能.
2)
cache_peer通过cache_peer_access和cache_peer_domain来控制邻居的访问.二者的区别在于前者一般需要先定义
一个ACL而后者都直接匹配相应的域名就可以了.
如:
cache_peer 192.168.0.1 parent 3128 3130
acl AllowDomain dst
cache_peer_access AllowDomain 192.168.0.1
cache_peer_domain 192.168.0.1 parent .xyc.com
3) cache_peer通过never_direct,always_direct,hierarchy_stoplist等限制对邻居的访问.
4)
squid与邻居cache的通信一般为先为never_direct,always_direct确定怎么样转发(根据相应的标识driect,
never_direct标识为direct_no,always_direct标识为direct_yes即直接转发到原始服务器等等
direct_maybe详情见Squid中文权威指南10.10.1),接着Squid根据Squid的设置查看耕邻居的摘要是否命中(根据ICP或
HCTP的请求所发现的),若命中则立即放入转发列表中.这一切也依靠cache_peer_access,cache_peer_domain的.同时
squid检查netdb侦测的RTT是否最优,决定是否选择此邻居转发.
5)子邻居不转发任何命中丢失的请求,而父邻居可以转发,若Squid发现父邻居到原始服务器的RTT(往返时间)小于自已到原始服务器的RTT,将此请
求转发给此父邻居.(RTT时间需借助Netdb选项的检测,对于父邻居的选择还有另外一些定义选项如:Weigh=N设置父邻居的权重来给予他更高的优
先级)
http_port 8080
cache_peer 10.10.2.53 parent 6666 7 login=username:password default
no-query
cache_mem 60 MB
cache_mgr zdysgs@zju.edu.cn
dns_nameservers 10.10.0.21
visible_hostname zdysgs.zju.edu.cn
cache_dir ufs /usr/local/squid/var/cache 500 16 256
http_access allow all
never_direct allow all
error_directory /usr/local/squid/share/errors/Simplify_Chinese
cache_swap_low 80
cache_swap_high 97
#这两行是设置cache进行替换的闸值。当占用到97%的cache后,cache中的内容将被清空20%
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第二个是网上找来的,比较简略,一目了然, 如下
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
一. Squid二级代理
二级代理服务器的架设
下来架设本文的着重点——二级代理,所使用的软件都一样,也是FreeBSD6.2Release+Squid2.6,而且安装FreeBSD 的步骤和一级代理的也一样(只有内、外网卡的IP及网关不一样),唯独在配置Squid时配置文件有些不同,具体如下:
说明:
操作系统:FreeBSD6.2Release
代理软件:Squid2.6STABLE16
外网卡:xl0 -> 192.168.21.250 (这里的默认网关就应该是一级代理服务器的内网卡地址,为192.168.21.254)
内网卡:xl1 -> 192.168.11.254
1、安装FreeBSD
安装的具体步骤和上面一级代理的方法一样,只是在配置rc.conf时的IP不一样,如下:
hostname="two."
defaultrouter=”192.168.21.254″ //一级代理的内网卡地址
ifconfig_xl0=”inet 192.168.21.250 netmask 255.255.255.0″ //外网IP
ifconfig_xl1=”inet 192.168.11.254 netmask 255.255.255.0″//内网IP
sendmail_enable=”NONE”
inetd_enable=”YES”
linux_enable=”YES”
sshd_enable=”YES”
usbd_enable=”YES”
2、安装Squid2.6
同样,安装方法和上面一级代理的一样,只是在配置squid的配置文件squid.conf不一样。增加了两行内容,如下:
acl web src 192.168.11.0/24
cache_peer 192.168.21.254 parent 3128 3130 proxy-only// 定义父代理(也就是上一级代理)的IP及上网端口3128
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow web
never_direct allow all//所有请求转发至父代理上
http_access deny all
icp_access allow all
http_port 3128
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
cache_mem 64 MB
cache_dir ufs /usr/local/squid/cache 7000 16 256
access_log /dev/null
cache_log /dev/null
cache_store_log none
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
cache_mgr webmaster@
cache_effective_user squid
cache_effective_group squid
visible_hostname two.jscpu.com
这样二级代理也架设完成,按照如下的设置二级代理服务器后的用户应该就也可以上网了。
总结:架设二级代理时,个人感觉最重要的还是要搞清楚一、二级代理四块网卡的IP,至于架设方法,和一级代理没啥区别,最主要的是 squid.conf中增加了二行内容 。