天天加油 - 助您成才
SquidProxyServer基础入门
您正在看的Linux|Unix是:SquidProxyServer基础入门。
简介:

九十年代是网际网路大放异彩的年代,尤其是World Wild Web的出现更使得人与人之间的距离越来越小,但是图形、影像和声音的剧增对原本速度就不快的internet来说无疑是雪上加霜,因此大大小小Proxy server便油然而生,其目的是为减轻网路负载,也可加快client端网页浏览的速度。当初proxy server本为保护firewall内主机的安全并做为local与remote间的传输煤介,关如下

Client端不但可以流览网页,也可以透过Proxy存取Inetrnet资源并抵挡外界的网路风暴与破坏。

说明:

Squid Internet Object Cache (Harvest Project的後续版本) 是美国政府大力助的一项研究计画,其目的为解决网路频宽不足的问题,是现在Unix系统上使用者最多功能也最完整的一套软体,目前台湾三大网Tanet、Hinet和Seednet有超过95%以上的Proxy Server使用。Apache和Netscape虽附有Proxy软体,但因功能简单而不够普及。有关squid的详细说明可到squid网站查询http://squid.nlanr.net/Squid/。

安装说明:

我们这次安装的平台是Pentium 200 MMX,使用32 mb 记忆体,有2.5 gb的硬碟,安装的是Slackware-3.3 Linux,核心为 linux-2.0.30。目前squid稳定的版本是1.1.16,另有一个并行发展的软体squid-1.NOVM.16是适合於使用较少虚拟记忆体的主机,如使用的swap memory很小的话可以下载这个版本,但是file descriptors会变大,确定了我们所要使用的软体後,再来就可以把软体下载到主机中,这次我们使用的是squid-1.1.16.tar.gz,首先用adduser增加一个proxy user,因为使用root帐号开启proxy server会有安全上的问题且程式本身也不允许,再来的动作都由proxy user来完成,如此才不会有权限不足而导致cache无法写入的影响,把刚传下来的squid-1.1.16.tar.gz用tar解开,进入squid目录中依序输入

./configure --prefix=/usr/local/squid

make all

make install

便完成了所有compiler和install的过程,此时我们的 squid完全install到/usr/local/squid目录下,进入安装完成的目录中或是link过来也可以,我们可以看到三个目录分别是bin、etc与log,进入bin中使用 squid z把要cache的目录建立起来,再来编辑etc目录下的squid.conf,有关 squid.conf语法稍後会详述,完成所有设定後便可以背景执行squid或是放在/etc/rc里,成一开机便执行的daemon,执行後可使用bin里的client测试squid是否成功的执行,方法 client h localhost p 3128

squid.conf 设定说明:

http_port: squid接受client端http需求使用的阜号,预设 值3128,在命令列中也可使用squid a做设定。

icp_port: squid接收或传送icp讯号所使用的阜号,预设值为3130,如非必要不需做修改,也可使用squid u在命令列中做设定。icp是一种udp_base的封包,主要的功能为web cache主机间连络的讯息格式,也因为是udp_base的封包,所以速度上也就比client与server间的tcp封包还来的快,可减少cache主机间传送的时间。

cache_host: 设定其它的cache主机,当server收到client端的request时,便透过3130这个port传送icp给设定中的每一台cache主机,如cache host有client端所需求的资料,便传送一份给server,如没有server便自己抓取资料。例:

cache_host proxy.nsysu.edu.tw sibling 3128 3130 option

第一为hostname。

第二为type 有 “parent” “sibling” “multicast”。

在web cache的阶层里,同一个cache level里以sibling称之,在上位者则为parent,不过在整个cache level中并没有很明显的分层,所以每一台主机有可能是sibling 或是 parent。当server收到request时,先对所有的sibling和parent送出ICP去询问,等待回应开始对第一个回应HIT的cache抓object,如没有人回覆HIT,就对先回覆MISS的parent开始抓取,找到资料後送给host并自己cache起来,若都失败server便乖乖的自己去source抓取资料。

第三为proxy_port 为cache主机的porxy port。

第四为icp_port cache主机接收icp的port,通常为3130。

第五为option 有proxy-only、weight=n、ttl=n、no-query、default、round-robin、multicast-responder等。当proxy server的储存空间很少时,可加上proxy-only,server便不会把资料cache住,直接将资料送往client。Weight值为与parent间的依赖性,值越大依赖性越大,预设值为1。

Inside_firewall:设定firewall内主机domain。

Local_domain:设定local_domain主要是把这些网域视为本身网域的一部份,如此一来当所要抓取的URL为是在本网域中,则不必再向Neighbor/Sibling询问了,只要是与有直接连线的都可设为local_domain。

Local_ip:与local_domain同。

Neighbor_timeout:当送出icp时等待回应的时间。

Cache_mem:用来储存物件的记忆体大小,包括in-transit、negative和”hot”物件,通常设定实体记忆体的三分之一大小,所谓的实体记忆体是只主记体加上swap memory。In-transit比negative与hot等物件拥有较大的优先权,当有资料进来时,negative与hot objects将会首先被更新,换句话说,两者将会填满所有in-transit objects没有使用的记忆体空间。

Cache_swap: Proxy使用的最大磁碟空间,当使用的空间接近此值的话,cache使用LRU(Least-Recently-Used)的设定来删除过久的资料。Squid对物件的清除是由每个物件的LRU年龄档标准,如太久没用的就会先被清除掉,倘若cache占硬碟的容量低时,物件较不易被清除,但若cache越来越满时,LRU限制较高,资料清除较快。

Cache_log:硬碟中所要当cache的目录。

Log_fqdn:如client有domain name的话,Access.log便会把domain name完整的记录下来。

ftp_user:假如需要使用 anonymous ftp来抓取档案,会送出後面所接的字串当 password

Dns_children: Squid本身附有一个dnsserver程式来处理client端domain name的需求,一般来说,当proxy有较大的使用量时,dns children设定较多可以处理的domain name request较多也较快,但当设定过多的dnsserver对系统的performance也会有相当的影响,可使用cache manger来观看每个dnsserver的使用量决定数量的多寡。

Refresh_pattern:更新cache的时间,其演算法则如下:

FRESH if age < min

STALE if eXPires < now

STALE if age > max

FRESH if lm-factor < percent

使用格式:refresh_pattern regex min percent max

reference_age:物件的LRU,若比值大的话便清除cache中的物件。例如设定一星期,如一星期内没有存取动作,就把物件从cache中移出,假如值为零的话,物件会存放於cache中直到cache swap上限。

Read_time:当proxy与web连接後,经过read_time的时间接收不到web站传送资料便断线,有可能是remote server或是网路连接突然性的中断等因素。

Shutdown_lifetime:当cache server收到SIGTERM或是SIGHUP时,squid会对使用端发出”shutdown pending”讯息,并关掉所有正在进行中的动作,直到squid重新启动。

Cache_mgr: cache server管理者的email信箱,当server无故死掉时,squid会发出一封信至管理者信箱。

Cache_effective_user:启动squid的user名称,包含UID与GID两个栏位。

Err_html_text:使用者浏览网页中,常常遇到不存在或连线中断的网站,squid本身会回应一个error message至用户端,squid管理者可使用这个参数来改变回应至用户端的error message,来连接至管理者的homepage。

Deny_html_text:若遇到access control fail的情况,回应一个Access fail message,squid本身提供一个简单的message,可利用此功能连接至homepage。

以上是 squid.conf的大部参数介绍,已包括所有架设一个功能完整的cache server的所有设定。

研究分析:

Squid的特点也是它优於其它cache软体的地方,就是其Access Control Lists的部份,使用acl可设定那些client发出的request会被接受,那些会被挡住,如此可减轻server端网路负载的问题。

首先在squid.conf中定义acl name,以便於之後来设定其存取权。其格式如下:

acl aclname acltype string1…..

acl aclname acltype “file”….

File必须编辑ip name而且每一行只能有一项

acltype有下列几项:

acl aclname src ip-address/netmask

(定义client的ip和netmask)

acl aclname src addr1-addr2/netmask

(定义一段ip address区间和netmask)

acl aclname dst ip-address/netmask

(URL的网路位址和遮罩)

acl aclname srcdomain kyit.edu.tw

(定义反查的domain)

acl aclname dstname kyit.edu.tw

(定义URL的domain)

acl aclname time [day-abbrevs] [h1:m1-h2:m2]

day-abbrevs:星期日至星期六

acl aclname url_regex ^http:// …

(定义符合URL字串的部份)

acl aclname urlpath_regex xxxxx

(定义URL的目录有符合的部份)

acl aclname port 80 ….

(定义所使用的port)

acl aclname proto HTTP FTP …

(定义所使用的通讯协定)

acl aclname browser regeXP

(定义client所使用的browser,如ie或Netscape等)

acl aclname user username

(定义存取的username)

预先定义完所有的字串与数值後,再使用後面的参数来做控制的动作,其参数有:

http_Access:可设定allow与deny两种,格式为

http_Access allow|deny [!]aclname

! 为不包括此aclname

cache_host_acl:类似cache_host,只不过加上aclname。

Squid Proxy server减低网路的负载,也加快client端抓取资料的速度,尤其squid的强大功能更使proxy server更快也更强,对Internet的贡献可谓大且深矣。

  • 上一篇教程:
  • 下一篇教程:
  • 排行

    1. 我也来学做嵌入式Linux系统V0.1(
    2. 全力打造Linux服务器配置大全
    3. tr的使用方法
    4. stty使用方法
    5. find和xargs使用详解
    6. 配置 FTP 服务器以支持 IPv6
    7. Linux入门
    8. Modeler V6.0 for Linux 试用版
    9. Architect V6.0 for Linux 试用版
    10. Eclipse for Linux on POWER 的安
    11. OProfile for Linux on POWER 识
    12. RPM卸载软件完全手册
    13. Mysql 5.0.22 Cluster for RedHa
    14. FreeBSD Web Server架设实例过程
    15. Qmail邮件系统的安全分析和改进研
    16. 点评主流中间件技术平台
    1. RHAS3上快速实现磁盘配额解决方案
    2. 抢先试用----防火墙KWF6.0新功能
    3. stty使用方法
    4. tr的使用方法
    5. find和xargs使用详解
    6. 全力打造Linux服务器配置大全
    7. 使用 Git 管理源代码
    8. 配置 FTP 服务器以支持 IPv6
    9. Architect V6.0 for Linux 试用版
    10. Python Web 框架,第 1 部分: 使
    11. Eclipse for Linux on POWER 的安
    12. Linux 的魅力: 让古老的机器重获
    13. OProfile for Linux on POWER 识
    14. 第 2 部分: 信号量和事件
    15. 用NT Loader加载GRUB来启动Linux
    16. RPM卸载软件完全手册
    1. 我也来学做嵌入式Linux系统V0.1(
    2. 利用BusyBox定制Linux Live CD
    3. 在CentOS 4.4上安装配置OpenVZ
    4. 红帽RHCE证书RH302考试
    5. 程序设计师的迷思---工具与数据库
    6. 数据库管理员的难题,选择MySQL还
    7. 技巧:用Sort和Tsort对文件排序
    8. PHP配置入门的福音PHP.ini中文版
    9. sed与unix命令等价代码鉴赏
    10. 如何编译配置Apache中的Configur
    11. qmail+webmailonLinux9安装全过程
    12. Solaris下的常用命令和使用方法
    13. Unix应用技巧:solarisraid制作大
    14. 利用vnc远程图形界面控制Linux
    15. Linux字体设置fonts.dir文件分析
    16. GCC使用指南及gcc最佳编译参数

    最近更新

  • 推荐阅读
  • Linux|Unix《SquidProxyServer基础入门》SquidProxyServer基础入门
    关于我们 | 版权申明 | 广告服务 | 友情链接 | 网站地图 | 使用帮助 | ©2006-2008 TTADD.COM