Chinaunix首页 | 论坛 | 博客
  • 博客访问: 335773
  • 博文数量: 104
  • 博客积分: 2815
  • 博客等级: 少校
  • 技术积分: 595
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-06 16:32
文章分类

全部博文(104)

文章存档

2013年(1)

2012年(2)

2011年(21)

2010年(80)

我的朋友

分类: 系统运维

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设置父邻居的权重来给予他更高的优 先级)

ICP/HCTP和Cache摘要以及CARP一样,都是判断请求的URI是否在邻居中被命中。ICP是发送URL请求,Squid等待着邻居 的回应,网络的延迟也是很大的,而且在姐妹Cache中假命中又显得很突出。No-Query,禁用ICP协议! Cache摘要是在邻居中生成摘要信息,摘要往往把反应在Cache中的信息,邻居下载每个Cache中的摘要,发送URI请求时查看URL是否在某个摘 要中。


摘录两个 squid.conf 的主要配置,如下

第一个居然也是浙大同学发的,里面的代理,还有dns=10.10.0.21,看着都好熟悉啊.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$vi etc/squid.conf

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二级代理

在10.2.1.213上/usr/local/squid安装了 squid-2.5.STABLE7
将此squid配置成二级代理,上级代理IP:10.1.1.12,端口 3128
修改squid.conf使之包含类似如下内容:
cache_peer 10.1.1.12 parent 3128 0 no-query ###定义父代理10.1.1.12,端口3128
acl all src 0.0.0.0/0.0.0.0 ###acl控制列表
http_access allow all
never_direct allow all ###所有请求转发至上级代理
运行squid: # /usr/local/squid/squid ?D


二级代理服务器的架设

  下来架设本文的着重点——二级代理,所使用的软件都一样,也是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中增加了二行内容 。

阅读(4467) | 评论(0) | 转发(0) |
0

上一篇:CentOS下VNC配置

下一篇:IPsec NAT穿越

给主人留下些什么吧!~~