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