Squid Proxy Server基礎入門(轉)
Squid Proxy Server基礎入門(轉)[@more@]簡介:九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網站查詢。安裝說明:我們這次安裝的平臺是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/squidmake allmake 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 < minSTALE if expires < nowSTALE if age > maxFRESH if lm-factor < percent使用格式:refresh_pattern regex min percent maxreference_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! 為不包括此aclnamecache_host_acl:類似cache_host,只不過加上aclname。 Squid Proxy server減低網路的負載,也加快client端抓取資料的速度,尤其squid的強大功能更使proxy server更快也更強,對Internet的貢獻可謂大且深矣
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-940735/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Squid基礎與配置(轉)UI
- oracle基礎入門(轉)Oracle
- bash入門基礎(轉)
- Swing入門基礎 (轉)
- shell入門基礎必備(轉)
- 【Java基礎】代理 - ProxyJava
- RabbitMQ基礎入門MQ
- mongodb基礎入門MongoDB
- MySQL 基礎入門MySql
- ZooKeeper 基礎入門
- Elasticsearch 基礎入門Elasticsearch
- Vim 入門:基礎
- Bootstrap基礎入門boot
- Html基礎入門HTML
- ElasticSearch基礎入門Elasticsearch
- HTML 基礎入門HTML
- Dart 基礎入門Dart
- SQL入門基礎SQL
- Nginx 基礎入門Nginx
- Kafka基礎入門Kafka
- Redis入門基礎Redis
- Java 入門基礎Java
- Maven入門基礎Maven
- JavaScript入門基礎JavaScript
- SQL基礎入門SQL
- Zookeeper基礎入門
- goalng 基礎入門Go
- TypeScript 基礎入門TypeScript
- Mongoose基礎入門Go
- systemtap基礎入門
- sqlServer 基礎入門SQLServer
- shell入門基礎
- go基礎入門Go
- 【FastAPI】入門基礎ASTAPI
- 前端基礎入門四(JavaScript基礎)前端JavaScript
- Dreamweaver MX 2004 入門基礎教程(轉)
- 新手入門之——Linux學習基礎(轉)Linux
- React Hooks入門: 基礎ReactHook