利用SQUID做透明代理實(shí)現(xiàn)內(nèi)網(wǎng)訪問(wèn)Internet
在真實(shí)世界中我們常常會(huì)去幫人家辦一些事情,例如幫人家交電費(fèi)什么的,在這種情況下你不是電表的主人,而是代辦者(代理者)的身份。在網(wǎng)絡(luò)世界中Proxy就是相當(dāng)于那個(gè)幫人家交電費(fèi)的人了,當(dāng)我們發(fā)出連接請(qǐng)求的時(shí)候,就會(huì)通過(guò)Proxy去幫我們直接與目標(biāo)服務(wù)器溝通,幫我們?nèi)〉觅Y料。通常我們所說(shuō)的高速緩存代理,就是以空間換時(shí)間。本文主要介紹了代理服務(wù)器的概念、作用、產(chǎn)生的原因以用工作原理。介紹了如何在Linux2.4內(nèi)核環(huán)境下應(yīng)用iptables NAT和squid實(shí)現(xiàn)透明代理的方法。結(jié)果表明,該方法實(shí)現(xiàn)了利用squid做透明代理實(shí)現(xiàn)內(nèi)網(wǎng)訪問(wèn)Internet,從而解決了IP地址緊缺、網(wǎng)絡(luò)速度慢、客戶端設(shè)置代理服務(wù)器麻煩等問(wèn)題。
一 概述
Linux是一套免費(fèi)使用和自由傳播的類Unix操作系統(tǒng),它主要用于基于Intel x86系列CPU的計(jì)算機(jī)上。這個(gè)系統(tǒng)是由全世界各地的成千上萬(wàn)的程序員設(shè)計(jì)和實(shí)現(xiàn)的。其目的是建立不受任何商品化軟件的版權(quán)制約的、全世界都能自由使用的Unix兼容產(chǎn)品。Linux的出現(xiàn),最早開始于一位名叫Linus Torvalds的計(jì)算機(jī)業(yè)余愛(ài)好者,當(dāng)時(shí)他是芬蘭赫爾辛基大學(xué)的學(xué)生。他的目的是想設(shè)計(jì)一個(gè)代替Minix(是由一位名叫Andrew Tannebaum的計(jì)算機(jī)教授編寫的一個(gè)操作系統(tǒng)示教程序)的操作系統(tǒng),這個(gè)操作系統(tǒng)可用于386、486或奔騰處理器的個(gè)人計(jì)算機(jī)上,并且具有Unix操作系統(tǒng)的全部功能,因而開始了Linux雛形的設(shè)計(jì)。
Linux以它的高效性和靈活性著稱。它能夠在PC計(jì)算機(jī)上實(shí)現(xiàn)全部的Unix特性,具有多任務(wù)、多用戶的能力。Linux是在GNU公共許可權(quán)限下免費(fèi)獲得的,是一個(gè)符合POSIX標(biāo)準(zhǔn)的操作系統(tǒng)。Linux操作系統(tǒng)軟件包不僅包括完整的Linux操作系統(tǒng),而且還包括了文本編輯器、高級(jí)語(yǔ)言編譯器等應(yīng)用軟件。它還包括帶有多個(gè)窗口管理器的X-Windows圖形用戶界面,如同我們使用Windows NT一樣,允許我們使用窗口、圖標(biāo)和菜單對(duì)系統(tǒng)進(jìn)行操作。
代理服務(wù)器(Proxy)是網(wǎng)絡(luò)信息的中轉(zhuǎn)站,比方說(shuō)HTTP代理服務(wù)器。我們使用網(wǎng)絡(luò)瀏覽器直接鏈接其他Internet站點(diǎn)并取得網(wǎng)絡(luò)信息時(shí),需送出Request信號(hào)來(lái)得到回答,然后對(duì)方再把信息傳送回來(lái)。代理服務(wù)器是介于瀏覽器和Web服務(wù)器之間的一臺(tái)服務(wù)器,有了它之后,瀏覽器不是直接到Web 服務(wù)器去取回網(wǎng)頁(yè)而是向代理服務(wù)器發(fā)出請(qǐng)求,Request信號(hào)會(huì)先送到代理服務(wù)器,由代理服務(wù)器來(lái)取回瀏覽器所需要的信息并傳送給你。而且大部分代理服務(wù)器都具有緩沖功能,就好像一個(gè)大Cache,它不斷將新取得的數(shù)據(jù)包存到它本機(jī)的存儲(chǔ)器上,如果瀏覽器所請(qǐng)求的數(shù)據(jù)在它本機(jī)的存儲(chǔ)器上已經(jīng)存在而且是最新的,那么它就不重新從Web服務(wù)器取數(shù)據(jù),而直接將存儲(chǔ)器上的數(shù)據(jù)傳送給用戶的瀏覽器,這樣就能顯著提高瀏覽速度和效率。除此之外還有SOCKS代理服務(wù)器,其原理大同小異。用戶機(jī)通過(guò)Proxy Server上網(wǎng)的步驟如下:
(1)用戶機(jī)端向Server發(fā)出請(qǐng)求。
(2)Server收到請(qǐng)求后比較判斷Cache中時(shí)候存在用戶機(jī)想要的資料,如果沒(méi)有則向遠(yuǎn)程Server發(fā)送數(shù)據(jù)請(qǐng)求。
(3)將請(qǐng)求回來(lái)的資料先存放到Cache中,再將資料傳送給用戶端。
(4)當(dāng)用戶端發(fā)出的請(qǐng)求中所需要的資料在Cache中有,則將Cache中的資料直接傳送給client端。
雖然當(dāng)?shù)谝辉L問(wèn)這向Proxy請(qǐng)求的數(shù)據(jù)Cache中沒(méi)有時(shí),Proxy抓取數(shù)據(jù)后會(huì)先保存在Cache中,這樣訪問(wèn)速度變慢了,可是第二個(gè)訪問(wèn)者以及后來(lái)的訪問(wèn)者需要該資料的時(shí)候,proxy都不要想遠(yuǎn)程服務(wù)器請(qǐng)求,直接將cache中的資料發(fā)送給后來(lái)的請(qǐng)求者就行了,這樣就減少了連接遠(yuǎn)程服務(wù)器的流量,另外由于proxy是在本地的,所以傳輸速度也更快。
二 代理服務(wù)器的產(chǎn)生
隨著因特網(wǎng)技術(shù)的迅速發(fā)展,越來(lái)越多的計(jì)算機(jī)連入了因特網(wǎng)。它促進(jìn)了信息產(chǎn)業(yè)的發(fā)展,并改變了人們的生活、學(xué)習(xí)和工作方式,對(duì)很多人來(lái)說(shuō),因特網(wǎng)已成為不可缺少的工具。而隨著因特網(wǎng)的發(fā)展也產(chǎn)生了諸如IP地址耗盡、網(wǎng)絡(luò)資源爭(zhēng)用和網(wǎng)絡(luò)安全等問(wèn)題。代理服務(wù)器就是為了解決這些問(wèn)題而產(chǎn)生的一種有效的網(wǎng)絡(luò)安全產(chǎn)品。
如果一個(gè)單位有幾百臺(tái)微機(jī)連網(wǎng),在上網(wǎng)訪問(wèn)時(shí),將出現(xiàn)網(wǎng)絡(luò)資源爭(zhēng)用和增加上網(wǎng)費(fèi)用的問(wèn)題。一臺(tái)主機(jī)訪問(wèn)了某個(gè)站點(diǎn)而另一臺(tái)主機(jī)又訪問(wèn)同一個(gè)站點(diǎn),如果是同時(shí)訪問(wèn)將出現(xiàn)網(wǎng)絡(luò)資源爭(zhēng)用的問(wèn)題,如果是相繼訪問(wèn)將出現(xiàn)增加本單位網(wǎng)絡(luò)費(fèi)用的問(wèn)題。
本單位或本單位的各部門的網(wǎng)絡(luò)均有安全性要求高的數(shù)據(jù),而因特網(wǎng)上經(jīng)常會(huì)有一些不安全的行為出現(xiàn)。如果每臺(tái)主機(jī)都直接連到因特網(wǎng)上,勢(shì)必會(huì)對(duì)內(nèi)部網(wǎng)(Intranet)的安全造成嚴(yán)重的危害。因此,使網(wǎng)絡(luò)安全運(yùn)行是網(wǎng)絡(luò)發(fā)展的前提條件,也是人們?nèi)找骊P(guān)注的熱點(diǎn)。
如何快速地訪問(wèn)Internet站點(diǎn),并提高網(wǎng)絡(luò)的安全性,這已成為當(dāng)今的熱門話題。新一代的代理服務(wù)器使我們美夢(mèng)成真。代理服務(wù)器(Proxy Server)可以緩解或解決上述問(wèn)題,是因特網(wǎng)共享解決方案(Interne t Sharing Solution)的關(guān)鍵。
代理服務(wù)器軟件安裝在網(wǎng)絡(luò)節(jié)點(diǎn)上,利用其高速緩存(Cache),可以極大地、極有效地緩存因特網(wǎng)上的資源。當(dāng)內(nèi)部網(wǎng)的一個(gè)客戶機(jī)訪問(wèn)了因特網(wǎng)上的某一站點(diǎn)后,代理服務(wù)器便將訪問(wèn)過(guò)的內(nèi)容存入它的高速緩存(Cache)中,如果內(nèi)部網(wǎng)的其他客戶機(jī)再訪問(wèn)同一個(gè)站點(diǎn)時(shí),代理服務(wù)器便將它緩存中的內(nèi)容傳輸給該客戶機(jī),這樣就能使客戶機(jī)共享任何一個(gè)客戶機(jī)所訪問(wèn)過(guò)的資源,這樣就可以大大地提高訪問(wèn)網(wǎng)站的速度和效率,尤其是對(duì)那些冗長(zhǎng)、龐大的內(nèi)容,更可起到立桿見影、事半功倍的作用;同時(shí)減少網(wǎng)絡(luò)傳輸流量,提高網(wǎng)絡(luò)傳輸速度,節(jié)約訪問(wèn)時(shí)間,降低訪問(wèn)費(fèi)用。
三 代理服務(wù)器
3.1什么是代理服務(wù)器
代理服務(wù)器(Proxy Server)是指代理服務(wù)的雙宿主主機(jī),是個(gè)人網(wǎng)絡(luò)和Internet服務(wù)商之間的中間代理機(jī)構(gòu),它負(fù)責(zé)轉(zhuǎn)發(fā)合法的網(wǎng)絡(luò)信息,對(duì)轉(zhuǎn)發(fā)進(jìn)行控制和登記。代理服務(wù)器作為連接Internet(廣域網(wǎng))與Intranet(局域網(wǎng))的橋梁
3.2代理服務(wù)器的功能
(1) 共享網(wǎng)絡(luò)
最常見的可能是用代理服務(wù)器共享上網(wǎng),很多人不知不覺(jué)中就在用,比如通過(guò)sygate,wingate,isa,ccproxy,NT系統(tǒng)自帶的網(wǎng)絡(luò)共享等,可以提供企業(yè)級(jí)的文件緩存、復(fù)制和地址過(guò)濾等服務(wù),充分利用局域網(wǎng)出口的有限帶寬,加快內(nèi)網(wǎng)用戶的訪問(wèn)速度,可以解決僅僅有一條線路一個(gè)IP,IP資源不足,帶局域網(wǎng)很多用戶上網(wǎng)的功能,同時(shí)可以做為一個(gè)防火墻,隔離內(nèi)網(wǎng)與外網(wǎng),并且能提供監(jiān)控網(wǎng)絡(luò)和記錄傳輸信息的功能,加強(qiáng)了局域網(wǎng)的安全性,又便于對(duì)上網(wǎng)用戶進(jìn)行管理。
(2)訪問(wèn)代理
加快訪問(wèn)網(wǎng)站速度,在網(wǎng)絡(luò)出現(xiàn)擁擠或故障時(shí),可通過(guò)代理服務(wù)器訪問(wèn)目的網(wǎng)站。比如A要訪問(wèn)C網(wǎng)站,但A到C網(wǎng)絡(luò)出現(xiàn)問(wèn)題,可以通過(guò)繞道,假設(shè)B 是代理服務(wù)器,A可通過(guò)B, 再由B到C。大家還記得前幾個(gè)月,有段時(shí)間網(wǎng)絡(luò)不正常,基本訪問(wèn)不了外國(guó)網(wǎng)站,如GOOGLE,YAHOO,甚至連CCF都訪問(wèn)不了,心里很著急。結(jié)果通過(guò)一個(gè)代理服務(wù)器,發(fā)現(xiàn)都可以訪問(wèn),速度還不錯(cuò),在這樣的情況下,代理服務(wù)器就可以發(fā)揮很大的作用了。還有一類代理服務(wù)器備份有相當(dāng)數(shù)量的緩存文件,如果我們當(dāng)前所訪問(wèn)的數(shù)據(jù)在代理服務(wù)器的緩存文件中,則可直接讀取,而無(wú)需再連接到遠(yuǎn)端Web服務(wù)器。這樣,加快了訪問(wèn)速度。
(3) 防止攻擊
隱藏自己的真實(shí)地址信息,還可隱藏自己的IP,防止被黑客攻擊。通過(guò)分析指定IP地址,可以查詢到網(wǎng)絡(luò)用戶的目前所在地。例如,大家在一些論壇上看到,論壇中明確標(biāo)出了發(fā)帖用戶目前所在地,這就是根據(jù)論壇會(huì)員登錄時(shí)的IP地址解析的。還有平日里我們最為常用的顯IP版QQ,在“發(fā)送消息”窗口中,可以查看對(duì)方的IP及解析出的地理位置。而當(dāng)我們使用相應(yīng)協(xié)議的代理服務(wù)器后,就可以達(dá)到隱藏自己當(dāng)前所在地地址的目的了。
(4) 突破限制
代理服務(wù)器還可以突破網(wǎng)絡(luò)限制。比如局域網(wǎng)對(duì)上網(wǎng)用戶的端口,目的網(wǎng)站,協(xié)議,游戲,即時(shí)通訊軟件等的限制,都可以突破這些限制,可參見我這篇帖子,如何突破局域網(wǎng)對(duì)上網(wǎng)用戶的一些限制不再重復(fù)。舉個(gè)例子:GOOGLE我們都喜歡用,其實(shí)GOOGLE有一個(gè)功能就有點(diǎn)類似于代理服務(wù)器的功能,就是網(wǎng)頁(yè)快照,現(xiàn)在網(wǎng)站經(jīng)常發(fā)生變動(dòng),地址或者網(wǎng)站關(guān)了,網(wǎng)站服務(wù)器發(fā)生故障了,或者已經(jīng)更新了,但我們?nèi)匀灰橐郧胺浅S杏玫馁Y料,網(wǎng)頁(yè)快照就排上用場(chǎng)了,Google 以其復(fù)雜而全自動(dòng)的搜索方法排除了任何人為因素對(duì)搜索結(jié)果的影響,保證了網(wǎng)頁(yè)排名的客觀公正,Google 可以方便、誠(chéng)實(shí)、客觀地幫您在網(wǎng)上找到有價(jià)值的資料。GOOGLE有一個(gè)海量的數(shù)據(jù)庫(kù),如果找不到服務(wù)器,Google 儲(chǔ)存的網(wǎng)頁(yè)快照也可救急。雖然網(wǎng)頁(yè)快照中的信息可能不是最新的,但在網(wǎng)頁(yè)快照中查找資料要比在實(shí)際網(wǎng)頁(yè)中快得多,這時(shí)可以通過(guò)加密代理訪問(wèn)Google,再訪問(wèn)其網(wǎng)頁(yè)快照來(lái)救急。
(5)掩藏身份
代理服務(wù)器知識(shí)是黑客基本功,黑客的很多活動(dòng)都是通過(guò)代理服務(wù)器,比如掃描、刺探,對(duì)局域網(wǎng)內(nèi)機(jī)器進(jìn)行滲透,黑客一般攻擊的時(shí)候都是中轉(zhuǎn)了很多級(jí)跳板,才攻擊目標(biāo)機(jī)器。隱藏了身份,保證了自己的安全。
(6)提高速度
提高下載速度,突破下載限制。比如有的網(wǎng)站提供的下載資源,做了一IP一線程的限制,這時(shí)候可以用影音傳送帶,設(shè)置多線程,為每個(gè)線程設(shè)置一個(gè)代理。對(duì)于限制一個(gè)IP的情況很好突破,只要用不同的代理服務(wù)器,就可同時(shí)下載多個(gè)資源,適用于從WEB和FTP 上下載的情況。不過(guò)如果是論壇里面的資源,每個(gè)用戶一個(gè)賬號(hào),并且限制一賬號(hào)一IP,代理服務(wù)器就突破不了。還有一種情況,比如我們這里,電信的用戶上不了聯(lián)通的電影網(wǎng)站,聯(lián)通的用戶上不了的電信電影網(wǎng)站,這種情況只要電信的找一個(gè)聯(lián)通地代理,IP地址屬聯(lián)通就行。聯(lián)通找一個(gè)電信代理。就可以去電影網(wǎng)站下載其電影。教育網(wǎng)還可以通過(guò)代理服務(wù)器可使無(wú)出國(guó)權(quán)限或無(wú)訪問(wèn)某IP段權(quán)限的計(jì)算機(jī)訪問(wèn)相關(guān)資源。
3.3代理服務(wù)器的工作原理
(2)代理服務(wù)器聯(lián)系客戶機(jī)請(qǐng)求的服務(wù)器,緩存客戶訪問(wèn)內(nèi)容
(3)客戶機(jī)訪問(wèn)代理服務(wù)器的緩存
3.4 代理服務(wù)器的分類
(1)正向代理: 正向代理是一個(gè)位于客戶端和原始服務(wù)器(origin server)之間的服務(wù)器,為了從原始服務(wù)器取得內(nèi)容,客戶端向代理發(fā)送一個(gè)請(qǐng)求并指定目標(biāo)(原始服務(wù)器),然后代理向原始服務(wù)器轉(zhuǎn)交請(qǐng)求并將獲得的內(nèi)容返回給客戶端。客戶端必須要進(jìn)行一些特別的設(shè)置才能使用正向代理。正向代理的典型用途是為在防火墻內(nèi)的局域網(wǎng)客戶端提供訪問(wèn)Internet的途徑。正向代理還可以使用緩沖特性(由mod_cache提供)減少網(wǎng)絡(luò)使用率。使用ProxyRequests指令即可激活正向代理。因?yàn)檎虼碓试S客戶端通過(guò)它訪問(wèn)任意網(wǎng)站并且隱藏客戶端自身,因此你必須采取安全措施以確保僅為經(jīng)過(guò)授權(quán)的客戶端提供服務(wù)。
(2)透明代理:透明代理技術(shù)中的透明是指客戶端感覺(jué)不到代理的存在,不需要在瀏覽器中設(shè)置任何代理,客戶只需要設(shè)置缺省網(wǎng)關(guān),客戶的訪問(wèn)外部網(wǎng)絡(luò)的數(shù)據(jù)包被發(fā)送到缺省網(wǎng)關(guān),而這時(shí)缺省網(wǎng)關(guān)運(yùn)行有一個(gè)代理服務(wù)器,數(shù)據(jù)實(shí)際上被被重定向到代理服務(wù)器的代理端口(如8080),即由本地代理服務(wù)器向外請(qǐng)求所需 數(shù)據(jù)然后拷貝給客戶端。理論上透明代理可以對(duì)任何協(xié)議通用。
(3)反向代理: 反向代理正好相反,對(duì)于客戶端而言它就像是原始服務(wù)器,并且客戶端不需要進(jìn)行任何特別的設(shè)置?蛻舳讼蚍聪虼淼拿挚臻g(name-space)中的內(nèi)容發(fā)送普通請(qǐng)求,接著反向代理將判斷向何處(原始服務(wù)器)轉(zhuǎn)交請(qǐng)求,并將獲得的內(nèi)容返回給客戶端,就像這些內(nèi)容原本就是它自己的一樣。反向代理的典型用途是將防火墻后面的服務(wù)器提供給Internet用戶訪問(wèn)。反向代理還可以為后端的多臺(tái)服務(wù)器提供負(fù)載平衡,或?yàn)楹蠖溯^慢的服務(wù)器提供緩沖服務(wù)。另外,還可以啟用高級(jí)URL策略和管理技術(shù),從而使處于不同web服務(wù)器系統(tǒng)的web頁(yè)面同時(shí)存在于同一個(gè)URL空間下。
3.5 squid簡(jiǎn)介
(1)Squid是一個(gè)高性能的代理緩存服務(wù)器,它支持FTP和HTTP協(xié)議
(2)Squid支持SSL,支持訪問(wèn)控制
(3)Squid用一個(gè)單獨(dú)的、非模塊化的、I/O驅(qū)動(dòng)的進(jìn)程來(lái)處理所有的客戶請(qǐng)求
(4)Squid代理服務(wù)器可以分為:普通代理服務(wù)器、透明代理服務(wù)器、反向代理服務(wù)器
(5) Squid可用在很多操作系統(tǒng)中,如AIX, Digital Unix, FreeBSD, HP-UX, Irix, Linux,NetBSD, Nextstep, SCO, Solaris,OS/2等,也有不少人在其他操作系統(tǒng)中重新編譯過(guò)Squid。
(6) Squid對(duì)硬件的要求是內(nèi)存一定要大,不應(yīng)小于128M,硬盤轉(zhuǎn)速越快越好,最好使用服務(wù)7專用SCSI硬盤,處理器要求不高,400MH以上既可。
四iptables與nat
4.1 iptables 簡(jiǎn)介
(1)netfilter
netfilter/iptables IP 信息包過(guò)濾系統(tǒng)是一種功能強(qiáng)大的工具,可用于添加、編輯和除去規(guī)則,這些規(guī)則是在做信息包過(guò)濾決定時(shí),防火墻所遵循和組成的規(guī)則。這些規(guī)則存儲(chǔ)在專用的信息包過(guò)濾表中,而這些表集成在Linux 內(nèi)核中。在信息包過(guò)濾表中,規(guī)則被分組放在我們所謂的鏈(chain)中。
雖然netfilter/iptables IP 信息包過(guò)濾系統(tǒng)被稱為單個(gè)實(shí)體,但它實(shí)際上由兩個(gè)組件netfilter 和iptables 組成。
netfilter 組件也稱為內(nèi)核空間(kernelspace),是內(nèi)核的一部分,由一些信息包過(guò)濾表組成,這些表包含內(nèi)核用來(lái)控制信息包過(guò)濾處理的規(guī)則集。
(2)iptables
iptables 組件是一種工具,也稱為用戶空間(userspace),它使插入、修改和除去信息包過(guò)濾表中的規(guī)則變得容易。除非您正在使用Red Hat Linux 7.1 或更高版本,否則需要下載該工具并安裝使用它。
a.建立規(guī)則和鏈
通過(guò)向防火墻提供有關(guān)對(duì)來(lái)自某個(gè)源、到某個(gè)目的地或具有特定協(xié)議類型的信息包要做些什么的指令,規(guī)則控制信息包的過(guò)濾。通過(guò)使用netfilter/iptables 系統(tǒng)提供的特殊命令iptables ,建立這些規(guī)則,并將其添加到內(nèi)核空間的特定信息包過(guò)濾表內(nèi)的鏈中。關(guān)于添加/除去/編輯規(guī)則的命令的一般語(yǔ)法如下:
$ iptables [-t table] command [match] [target]
b.表(table)
[-t table] 選項(xiàng)允許使用標(biāo)準(zhǔn)表之外的任何表。表是包含僅處理特定類型信息包的規(guī)則和鏈的信息包過(guò)濾表。有三種可用的表選項(xiàng):filter 、nat 和mangle 。該選項(xiàng)不是必需的,如果未指定,則filter 用作缺省表。
filter 表用于一般的信息包過(guò)濾,它包含INPUT 、OUTPUT 和FORWARD 鏈。nat 表用于要轉(zhuǎn)發(fā)的信息包,它包含PREROUTING 、OUTPUT 和POSTROUTING 鏈。如果信息包及其頭內(nèi)進(jìn)行了任何更改,則使用mangle 表。該表包含一些規(guī)則來(lái)標(biāo)記用于高級(jí)路由的信息包,該表包含PREROUTING 和OUTPUT 鏈。
注:PREROUTING 鏈由指定信息包一到達(dá)防火墻就改變它們的規(guī)則所組成,而POSTROUTING 鏈由指定正當(dāng)信息包打算離開防火墻時(shí)改變它們的規(guī)則所組成。
4.2 Netfilter/iptables系統(tǒng)功能
Nefilter/iptables已經(jīng)完全代替了ipchains,其中主要原因就在于Nefilter/iptables添加了許多新的功能.Nefilter/iptables的主要功能如下:
(1) 具有連接跟蹤功能
(2) 增強(qiáng)了日志功能.
(3) 支持網(wǎng)絡(luò)地址轉(zhuǎn)換功能.
(4) 具有自動(dòng)碎片重裝功能.支持大量增強(qiáng)型補(bǔ)丁包.
正因?yàn)镹efilter/iptables的這些功能,所以Nefilter/iptables常被用戶用于建立支持狀態(tài)檢測(cè)的包過(guò)濾防火墻,還可以利用NAT透明代理和共享上網(wǎng).
4.3 Netfilter/iptables的優(yōu)點(diǎn)
netfilter/iptables 的最大優(yōu)點(diǎn)是它可以配置有狀態(tài)的防火墻,這是ipfwadm 和ipchains 等以前的工具都無(wú)法提供的一種重要功能。有狀態(tài)的防火墻能夠指定并記住為發(fā)送或接收信息包所建立的連接的狀態(tài)。防火墻可以從信息包的連接跟蹤狀態(tài)獲得該信息。在決定新的信息包過(guò)濾時(shí),防火墻所使用的這些狀態(tài)信息可以增加其效率和速度。這里有四種有效狀態(tài),名稱分別為ESTABLISHED 、INVALID 、NEW 和RELATED 。
狀態(tài)ESTABLISHED 指出該信息包屬于已建立的連接,該連接一直用于發(fā)送和接收信息包并且完全有效。INVALID 狀態(tài)指出該信息包與任何已知的流或連接都不相關(guān)聯(lián),它可能包含錯(cuò)誤的數(shù)據(jù)或頭。狀態(tài)NEW 意味著該信息包已經(jīng)或?qū)?dòng)新的連接,或者它與尚未用于發(fā)送和接收信息包的連接相關(guān)聯(lián)。最后,RELATED 表示該信息包正在啟動(dòng)新連接,以及它與已建立的連接相關(guān)聯(lián)。
netfilter/iptables 的另一個(gè)重要優(yōu)點(diǎn)是,它使用戶可以完全控制防火墻配置和信息包過(guò)濾。您可以定制自己的規(guī)則來(lái)滿足您的特定需求,從而只允許您想要的網(wǎng)絡(luò)流量進(jìn)入系統(tǒng)。
另外,netfilter/iptables 是免費(fèi)的,這對(duì)于那些想要節(jié)省費(fèi)用的人來(lái)說(shuō)十分理想,它可以代替昂貴的防火墻解決方案。
4.4 什么是私有地址
私有地址(Private address)屬于非注冊(cè)地址,專門為組織機(jī)構(gòu)內(nèi)部(如局域網(wǎng)內(nèi))使用。
以下表列出留用的內(nèi)部尋址地址:
私有IP地址的范圍 | |
私有IP地址的范圍 | 子網(wǎng)掩碼 |
10.0.0.0-10.255.255.255 | 255.0.0.0 |
172.16.0.0-172.31.255.255 | 255.255.0.0 |
192.168.0.0-192.168.255.255 | 255.255.255.0 |
4.5 什么是NAT
NAT——網(wǎng)絡(luò)地址轉(zhuǎn)換,是通過(guò)將專用網(wǎng)絡(luò)地址(如企業(yè)內(nèi)部網(wǎng)Intranet)轉(zhuǎn)換為公用地址(如互聯(lián)網(wǎng)Internet),從而對(duì)外隱藏了內(nèi)部管理的IP 地址。這樣,通過(guò)在內(nèi)部使用非注冊(cè)的IP 地址,并將它們轉(zhuǎn)換為一小部分外部注冊(cè)的IP 地址,從而減少了IP 地址注冊(cè)的費(fèi)用以及節(jié)省了目前越來(lái)越缺乏的地址空間(即IPV4)。同時(shí),這也隱藏了內(nèi)部網(wǎng)絡(luò)結(jié)構(gòu),從而降低了內(nèi)部網(wǎng)絡(luò)受到攻擊的風(fēng)險(xiǎn)。
4.6 NAT工作原理
- 內(nèi)部地址翻譯(Translation inside local addresses):
這是比較通用的一種方法,將內(nèi)部IP一對(duì)一的翻譯成外部地址。
在內(nèi)部主機(jī)連接到外部網(wǎng)絡(luò)時(shí),當(dāng)?shù)谝粋(gè)數(shù)據(jù)包到達(dá)NAT路由器時(shí),router檢查它的NAT表
因?yàn)槭荖AT是靜態(tài)配置的,故可以查詢出來(lái)(simply entry),然后router將數(shù)據(jù)包的內(nèi)部局部IP(源地址)更換成內(nèi)部全局地址,再轉(zhuǎn)發(fā)出去。外部主機(jī)接受到數(shù)據(jù)包用接受到的內(nèi)部全局地址來(lái)響應(yīng),NAT接受到外部回來(lái)的數(shù)據(jù)包,再根據(jù)NAT表把地址翻譯成內(nèi)部局部IP,轉(zhuǎn)發(fā)過(guò)去。
- 內(nèi)部全局地址復(fù)用(overloading inside glogal addresses)
使用地址和端口pair將多個(gè)內(nèi)部地址影射到比較少的外部地址。這也是所謂的PAT。和內(nèi)部地
翻譯一樣,NAT router同樣也負(fù)責(zé)查表和翻譯內(nèi)部IP地址,唯一的區(qū)別就是由于使用了overloading,router將復(fù)用同樣的內(nèi)部全局IP地址,并存儲(chǔ)足夠的信息以區(qū)分它和其他地址,這樣查詢出來(lái)的是extended entry。NAT router和外部主機(jī)的通訊采用翻譯過(guò)的內(nèi)部全局地址,故同一般的通信沒(méi)有差別,router到內(nèi)部主機(jī)通訊時(shí),同樣要查NAT表。
(3)TCP負(fù)載重分配(TCP load distributing)和以上兩種操作不同,這是NAT由外到內(nèi)的翻譯,所 以那種以為WEB server一定要放置到
4.7 NAT功能
NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換)提供了局域網(wǎng)共享上網(wǎng)的簡(jiǎn)單方案,內(nèi)部網(wǎng)絡(luò)用戶連接互聯(lián)網(wǎng)時(shí),NAT將用的
內(nèi)部IP地址轉(zhuǎn)換成一個(gè)外部公共IP地址,反之,數(shù)據(jù)從外部返回時(shí),NAT反向?qū)⒛繕?biāo)地址替換成初始的
內(nèi)部用戶的地址。實(shí)際上NAT隱藏了內(nèi)部IP地址,構(gòu)成了一個(gè)天然的防火墻。
4.8 NAT類型
NAT有三種類型:靜態(tài)NAT(Static NAT)、動(dòng)態(tài)地址NAT(Pooled NAT)、網(wǎng)絡(luò)地址端口轉(zhuǎn)換NAPT(Port
-Level NAT)。
靜態(tài)NAT設(shè)置起來(lái)最為簡(jiǎn)單和最容易實(shí)現(xiàn)的一種,內(nèi)部網(wǎng)絡(luò)中的每個(gè)主機(jī)都被永久映射成外部網(wǎng)絡(luò)
中的某個(gè)合法的地址。而動(dòng)態(tài)地址NAT則是在外部網(wǎng)絡(luò)中定義了一系列的合法地址,采用動(dòng)態(tài)分配的方法映射到內(nèi)部網(wǎng)絡(luò)。NAPT則是把內(nèi)部地址映射到外部網(wǎng)絡(luò)的一個(gè)IP地址的不同端口上。根據(jù)不同的需要,三種NAT方案各有利弊。
動(dòng)態(tài)地址NAT只是轉(zhuǎn)換IP地址,它為每一個(gè)內(nèi)部的IP地址分配一個(gè)臨時(shí)的外部IP地址,主要應(yīng)用
于撥號(hào),對(duì)于頻繁的遠(yuǎn)程聯(lián)接也可以采用動(dòng)態(tài)NAT。當(dāng)遠(yuǎn)程用戶聯(lián)接上之后,動(dòng)態(tài)地址NAT就會(huì)分配給
他一個(gè)IP地址,用戶斷開時(shí),這個(gè)IP地址就會(huì)被釋放而留待以后使用。
網(wǎng)絡(luò)地址端口轉(zhuǎn)換NAPT(Network Address Port Translation)是人們比較熟悉的一種轉(zhuǎn)換方
NAPT普遍應(yīng)用于接入設(shè)備中,它可以將中小型的網(wǎng)絡(luò)隱藏在一個(gè)合法的IP地址后面。NAPT與 動(dòng)態(tài)地
址NAT不同,它將內(nèi)部連接映射到外部網(wǎng)絡(luò)中的一個(gè)單獨(dú)的IP地址上,同時(shí)在該地址上加上一個(gè)由NAT
設(shè)備選定的TCP端口號(hào)。
在Internet 中使用NAPT時(shí),所有不同的信息流看起來(lái)好像來(lái)源于同一個(gè)IP地址。這個(gè)優(yōu)點(diǎn)在小
型辦公室內(nèi)非常實(shí)用,通過(guò)從ISP處申請(qǐng)的一個(gè)IP地址,將多個(gè)連接通過(guò)NAPT接入Internet。實(shí)際
上,許多SOHO遠(yuǎn)程訪問(wèn)設(shè)備支持基于PPP的動(dòng)態(tài)IP地址。這樣,ISP甚至不需要支持NAPT,就可以
做到多個(gè) 內(nèi)部IP地址共用一個(gè)外部IP地址上Internet,雖然這樣會(huì)導(dǎo)致信道的一定擁塞,但考慮到
節(jié)省的ISP上網(wǎng)費(fèi)用和易管理的特點(diǎn),用NAPT還是很值得的。
五 基于squid透明代理在企業(yè)中的應(yīng)用
前面論述了代理,iptables,squid以及NAT技術(shù),下面將在一個(gè)真實(shí)的環(huán)境中論述基于squid透明代理實(shí)現(xiàn)內(nèi)網(wǎng)訪問(wèn)Internet.下圖是一個(gè)理想的squid透明代理網(wǎng)絡(luò)拓樸結(jié)構(gòu)。
透明代理是NAT和代理的完美結(jié)合,這所以稱為透明,是因?yàn)樵谶@種工作方式下用戶感覺(jué)不到代理服務(wù)器的存在,不需要在瀏覽器或其他客戶端工具中作任何設(shè)置,客戶機(jī)只需要將默認(rèn)網(wǎng)關(guān)設(shè)置為L(zhǎng)INUX服務(wù)器的IP即可.當(dāng)客戶機(jī)訪問(wèn)INTERNET,請(qǐng)求數(shù)據(jù)包經(jīng)過(guò)LINUX服務(wù)器轉(zhuǎn)發(fā)INUX服務(wù)器上的IPTABLES將客戶機(jī)的HTTP請(qǐng)求重定向到SQUID代理服務(wù)器,由代理服務(wù)器代替客戶機(jī)訪問(wèn)外部信息資源,再將獲取的數(shù)據(jù)傳回客戶機(jī)。
5.1 配置網(wǎng)絡(luò)接口
給squid服務(wù)分配兩塊網(wǎng)卡一個(gè)是公網(wǎng)eth0一個(gè)是內(nèi)網(wǎng)eth1,由于條件所限本實(shí)驗(yàn)全用私有地址進(jìn)行實(shí)驗(yàn),用一臺(tái)windows xp充當(dāng)局域網(wǎng)中需上網(wǎng)的機(jī)器并以C類私有地址0網(wǎng)段與10網(wǎng)段,配置eth0充當(dāng)公網(wǎng)能連接Internet進(jìn)行通信,配置eth1地址不能與外網(wǎng)進(jìn)行通信.
注:本設(shè)計(jì)基于在Linux 2.4內(nèi)核下安裝配置squid服務(wù)器(本文以Red Hat Linux 9.0為例)
1、設(shè)置eth0
(1)#netconfig
如下圖(1)(2)
圖(1)
圖(2)
(2)啟動(dòng)eth0
2、設(shè)置eth1
(1)進(jìn)入/etc/sysconfig/network-scripts并查看
(2)拷貝ifcfg-eth0重新命名為ifcfg-eth1并用vi修改保存
#vi ifcfg-eth1
說(shuō)明:把接口改為eth1 ip地址為私有地址并不能與外界通信,本文用C類的私有地址10網(wǎng)段
192.168.10.25 子網(wǎng)掩碼 255.255.255.0
(3)重新啟動(dòng)網(wǎng)卡
3、查看兩塊網(wǎng)卡的IP地址
5.2 配置iptables
1、啟動(dòng)路由2、起動(dòng)iptables
3、清空Iptables所有表中規(guī)則并查看nat表
說(shuō)明:(1)在NAT表的POSTROUTING鏈加目標(biāo)動(dòng)作SNAT,當(dāng)內(nèi)部192.168.10.0/24網(wǎng)段的PC 機(jī)與外界通信
將IP偽裝成192.168.0.25與外界進(jìn)行通信
(2)在NAT表的PREROUTING鏈加目標(biāo)動(dòng)作REDIRECT,將入站的數(shù)據(jù)包進(jìn)行重定向,本條規(guī)則是將80
號(hào)端口重定向成3128
5、保存并查看iptables中的nat表中規(guī)則
注:規(guī)則添加成功
5.3安裝squid
1、RPM包安裝squid
(1)查看是否已經(jīng)安裝了squid
(2)RPM方法安裝squid
5.4 配置squid
需要修改squid主配置文件/etc/squid/squid.conf
(1)/etc/squid/squid.conf主配置文件添加以下內(nèi)容
說(shuō)明:a.設(shè)squid的HTTP監(jiān)聽端口為3128目的是把目標(biāo)端口為80重定向到3128端口
b.根據(jù)服務(wù)器配置以及需要來(lái)配置指定緩沖內(nèi)存大小及設(shè)置綬存位置大小存儲(chǔ)內(nèi)型
c.讓代理服務(wù)器的緩存功能正確工作,必須將httpd_accel_uses_host_header選項(xiàng)設(shè)為on。
(2)啟動(dòng)squid
(3)檢查squid啟動(dòng)端口
5.5 測(cè)試
1、配置要進(jìn)行與外界通信的PC機(jī)IP
- 在網(wǎng)上鄰居右擊——屬性——本地連接右擊——屬性——選擇INTERNET協(xié)議(TCP/IP)——屬性
如下圖:
(2)在常規(guī)選項(xiàng)占擊使用下面的IP地址和使用下面的DNS服務(wù)器地址中添加地址——確定
如下圖:
說(shuō)明:此處配IP必須要與上面所配的eth1是同一網(wǎng)段,網(wǎng)關(guān)要指向eth1的IP ,首選DNS服務(wù)器配置要與squid的DNS地址相同
如下圖:
總結(jié)
通過(guò)以上的論述,系統(tǒng)的分析了如何基于squid透明代理實(shí)現(xiàn)內(nèi)網(wǎng)訪問(wèn)外網(wǎng)。從中看出SQUID透明代理配置簡(jiǎn)單,客戶機(jī)設(shè)置簡(jiǎn)單不需要在瀏覽器中設(shè)置任何代理,具有安全性,它可以很好的保護(hù)內(nèi)部主機(jī)免受外部主機(jī)的攻擊并具有完整的日志,性能方面它可以提供高速緩存功能并且成本底等,更能體現(xiàn)它的是它可以解IP地址緊缺問(wèn)題,在企業(yè)中可以很好的為企業(yè)解決租約IP問(wèn)題,為企業(yè)帶來(lái)經(jīng)濟(jì)效益,隨著技術(shù)的不斷發(fā)展與成熟將會(huì)有更多的人員通過(guò)它來(lái)實(shí)現(xiàn)訪問(wèn)INTERNET為更多的人帶來(lái)方便。
安徽新華電腦學(xué)校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢】