周莉+譚方勇
摘要:該文Linux中代理服務(wù)器squid為研究對(duì)象,分析代理服務(wù)器工作原理,闡述squid代理服務(wù)器的具體工作過程,給出了基于Linux iptables防火墻和squid代理服務(wù)器的透明代理的搭建方法,說明了squid的日志管理的具體步驟。
關(guān)鍵詞:代理服務(wù)器;透明代理;squid iptables SARG
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)22-0013-03
1 概述
代理服務(wù)器(Proxy)是一種主流的網(wǎng)絡(luò)服務(wù)器,其工作主要是代理內(nèi)部網(wǎng)絡(luò)用戶去取得外部數(shù)據(jù)。當(dāng)客戶端有因特網(wǎng)數(shù)據(jù)請(qǐng)求時(shí),代理服務(wù)器會(huì)幫助用戶去向目的地取得用戶所需要的數(shù)據(jù),客戶端向外部要求的數(shù)據(jù)事實(shí)上都是代理服務(wù)器幫用戶取得的,除此之外代理服務(wù)器還有防火墻功能。一般來說代理服務(wù)器搭建在整個(gè)內(nèi)部網(wǎng)絡(luò)的對(duì)外的防火墻上
當(dāng)內(nèi)網(wǎng)客戶端指定了代理為服務(wù)器后,客戶端想要取得外部數(shù)據(jù)主要包括以下步驟:1)客戶端向代理服務(wù)器發(fā)送一個(gè)數(shù)據(jù)需求數(shù)據(jù)包;2)代理服務(wù)器收到請(qǐng)求后,先比對(duì)這個(gè)數(shù)據(jù)包的來源與預(yù)計(jì)要前往的目標(biāo)網(wǎng)站是否可接受,如果目標(biāo)合法,代理服務(wù)器為該請(qǐng)求執(zhí)行代理服務(wù);3)代理服務(wù)器首先檢查自己緩存,如果有,直接將數(shù)據(jù)取出,如果代理服務(wù)器沒有客戶端需要的數(shù)據(jù)時(shí),代理服務(wù)器訪問外網(wǎng)去的相關(guān)數(shù)據(jù);4)最后,由代理服務(wù)器將從緩存或外網(wǎng)中取得的數(shù)據(jù)回送給客戶端。
由于所有的內(nèi)網(wǎng)請(qǐng)求都會(huì)經(jīng)過代理服務(wù)器,因此代理服務(wù)器經(jīng)常會(huì)用于大型的企業(yè)內(nèi)部,可以對(duì)工作時(shí)間內(nèi)員工開展的網(wǎng)絡(luò)活動(dòng)進(jìn)行限制,還可以監(jiān)測(cè)用戶的資料要求流向和流量。搭建代理服務(wù)器主要有以下優(yōu)點(diǎn):1)節(jié)省單點(diǎn)對(duì)外的網(wǎng)絡(luò)帶寬,降低網(wǎng)絡(luò)負(fù)載;2)以較短的路徑取得網(wǎng)絡(luò)數(shù)據(jù),有網(wǎng)絡(luò)加速的感覺;3)通過上層代理服務(wù)器的輔助,達(dá)到自動(dòng)數(shù)據(jù)分流的效果;4)提供防火墻內(nèi)部的計(jì)算機(jī)連上因特網(wǎng)。
2 squid代理服務(wù)器
http_access是按規(guī)則在配置文件中的先后順序處理的,并且找到第一個(gè)匹配項(xiàng)后,就按照到的規(guī)則處理,后繼規(guī)則就忽略不作對(duì)比。如上例中的三條http_access規(guī)則,當(dāng)前l(fā)ocallan的位置是放在最后一位,對(duì)于內(nèi)網(wǎng)的代理請(qǐng)求,squid將先對(duì)比dropshopping和dropviolence這兩條規(guī)則,禁止內(nèi)網(wǎng)訪問購物網(wǎng)站和瀏覽暴力圖片,如果將locallan放在dropshopping和dropviolence這兩條規(guī)則前面,那么對(duì)于內(nèi)網(wǎng)的請(qǐng)求,squid將根據(jù)locallan執(zhí)行放行動(dòng)作,后兩天規(guī)則得到不到執(zhí)行,因此網(wǎng)絡(luò)管理員在確定http_access順序時(shí),須十分謹(jǐn)慎。
3)客戶端設(shè)置
內(nèi)網(wǎng)用戶在瀏覽器中設(shè)置代理服務(wù)器地址,指定端口,以Firefox為例,設(shè)置的路徑為Preferences->Advanced->Network->Connection Settings->Manual Proxy Configuration,此后用戶的訪問將轉(zhuǎn)發(fā)給代理服務(wù)器,代理服務(wù)器也需在防火墻中開放相應(yīng)的端口(默認(rèn)3128)來提供代理服務(wù)。
3 透明代理
為了對(duì)內(nèi)網(wǎng)用戶對(duì)外網(wǎng)的訪問進(jìn)行全面的控制和代理,可以強(qiáng)制用戶使用代理服務(wù)器,這也就是透明代理。透明代理是在對(duì)外的防火墻服務(wù)器NAT上安裝squid服務(wù)器,在squid中開啟transparent功能,在防火墻中做配置,將內(nèi)網(wǎng)中所有目的端口為80的請(qǐng)求重定向到防火墻上squid的監(jiān)聽端口3128,由此用戶不需要再瀏覽器內(nèi)做任何設(shè)置,代理工作由防火墻上的squid服務(wù)器自動(dòng)完成。
以內(nèi)網(wǎng)地址為192.168.0.0/24,防火墻雙網(wǎng)卡,內(nèi)網(wǎng)地址192.168.0.254/24,外網(wǎng)地址120.5.6.7/24為例,訪問對(duì)象外網(wǎng)的WEB服務(wù)器地址為120.5.6.10/24,防火墻使用Linux自帶防火墻iptables,搭建透明代理主要包括以下步驟:
2)防火墻的透明代理配置
防火墻作為內(nèi)網(wǎng)和外網(wǎng)之間的安全組件,所有經(jīng)過防火墻的數(shù)據(jù)都接受檢查,只有符合安全策略的數(shù)據(jù),才能放行。Linux自帶防火墻iptables是基于內(nèi)核內(nèi)建的Netfilter機(jī)制,提供一系列配置命令,可提供高效的包過濾處理。作為內(nèi)外網(wǎng)之間防火墻,防火墻的filter表的INPUT、OUTPUT、FORWARD三鏈的默認(rèn)規(guī)則均為阻斷DROP,需要放行的數(shù)據(jù),另行規(guī)定,本文將放行透明代理的iptables配置寫成可執(zhí)行腳本,以便批處理和重復(fù)利用,腳本語言中以#作為注釋符號(hào),具體如下:
4 squid和SAG日志管理
squid的日志文件目錄為/var/log/squid,日志文件包括access.log和cache.log。access.log最為重要,記錄HTTP的代理記錄,該文件是基于行的,每行對(duì)應(yīng)一個(gè)客戶端請(qǐng)求,包含客戶端IP(或主機(jī)名)、請(qǐng)求URL、響應(yīng)size等信息;cache.log記錄緩存的啟動(dòng)以及各類狀態(tài);squid日志數(shù)據(jù)往往比較龐大,純文本日志文件往往閱讀理解不便,也缺少必要的分析,因此圖形化的日志分析工具更利于squid服務(wù)器的日志管理,如SARG(Squid Analysis Report Generator,分析報(bào)告制造者)。SARG讀取squid的日志進(jìn)行解析,可以根據(jù)時(shí)間、網(wǎng)站等進(jìn)行輸出。SARG依賴于Web服務(wù)器,SAG將統(tǒng)計(jì)結(jié)果輸出到/var/www/sarg,以下是SARG的使用方法:
5 結(jié)束語
本文闡述Linux中主流代理服務(wù)器squid的配置和使用方法,重點(diǎn)講解透明代理和squid日志管理,對(duì)Linux網(wǎng)絡(luò)管理員的日常運(yùn)維工作具有一定的實(shí)踐參考價(jià)值和指導(dǎo)意義。
參考文獻(xiàn):
[1] 鳥哥.鳥哥的Linux私房菜——服務(wù)器架設(shè)篇[M].北京:機(jī)械工業(yè)出版社,2012,7(422).
[2] 王小杰.基于Linux系統(tǒng)的DHCP服務(wù)器架構(gòu)[J].電腦編程技巧與維護(hù),2013,10(83-84).