分享
 
 
 

SquidProxyServer基础入门

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

简介:

九O年代是网际网路大放异彩的年代,尤其是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的贡献可谓大且深矣。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有