引言
隨著網(wǎng)絡技術的不斷普及和發(fā)展,逐漸涌現(xiàn)出兩個重要的問題:
- 網(wǎng)絡中流量的安全性問題
- 網(wǎng)絡地址資源的枯竭
第一個問題的解決方法是由防火墻功能的路由器的產(chǎn)生,而網(wǎng)絡地址轉(zhuǎn)換(NAT)使得互聯(lián)網(wǎng)的地址不再需要是全球唯一的。
由NAT和防火墻相結(jié)合的復合設備,成為連接終端用戶的最常見的路由器類型。
防護墻
防火墻分為兩種,包過濾防火墻和代理防火墻。主要區(qū)別:所操作的協(xié)議棧層次。
包過濾防火墻
一般作為互聯(lián)網(wǎng)的路由器,能夠過濾一些認為是威脅的網(wǎng)絡流量。這樣的路由器通常將網(wǎng)絡分為三個部分:
- 內(nèi)部網(wǎng)絡:需要保護的網(wǎng)絡
- 外部網(wǎng)絡:Internet
- DMZ 非軍事區(qū) :需要向外提供服務的網(wǎng)絡。
網(wǎng)管會在路由器配置ACL(訪問控制列表)來過濾一些流量。通常全力攔截來及外網(wǎng)的惡意流量,而不會限制從內(nèi)網(wǎng)到外網(wǎng)的流量。
有狀態(tài)防火墻和無狀態(tài)防火墻
通常簡單的防火墻是無狀態(tài)的,它分別處理一個一個的數(shù)據(jù)包,但是更加復雜的防火墻是有狀態(tài)的。它會關聯(lián)已經(jīng)到達的一系列數(shù)據(jù)包,分析流的特性,因此它是有狀態(tài)的。有狀態(tài)的防火墻是一個十分重要的課題。
代理防火墻
這種防火墻不算做路由器。相反,它本質(zhì)上是運行一個或者多個應用層網(wǎng)關(ALG)的主機,它們不會像路由器一樣作IP轉(zhuǎn)發(fā)。它的運作原理:
- 代理防火墻服務器在外部擁有一個全局路由的IP地址,在內(nèi)部使用一個私有地址。
- 所以需要訪問外部網(wǎng)絡的本地客戶機并不直接與外部服務器連接,而是間接連接到代理防火墻。
- 代理防火墻在外作為客戶機,對內(nèi)作為服務器。
網(wǎng)絡地址轉(zhuǎn)換NAT
NAT的本質(zhì)是一種允許在互聯(lián)網(wǎng)的不同地方重復使用相同IP地址集合的機制。
一個笑話:伴隨的IPv4地址的快速枯竭,人們焦急萬分下提出了IPv6計劃,并逐步發(fā)展和實施。于此同時,提出NAT作為一種臨時的措施,在IPv6到來前作為一種緩解危機的技術。然而有趣的是,NAT的發(fā)展很好的解決的IPv4地址枯竭的問題,并嚴重阻礙了IPv6的發(fā)展。
NAT的基本原理:NAT的兩端是Internet和內(nèi)部網(wǎng)絡,NAT設備擁有一個全局網(wǎng)絡的IP地址,內(nèi)部客戶機只擁有私有地址。NAT設備(通常是路由器)重寫前往Internet方向的數(shù)據(jù)包的源IP地址,并重寫來自Internet的數(shù)據(jù)包的目的IP地址。NAT不像傳統(tǒng)的路由器,它需要跟蹤每一個連接,其操作貫穿多個網(wǎng)絡層次。例如,修改IP地址也需要修改傳輸層的校驗碼。
NAT違背了網(wǎng)絡設計原則:“智能邊緣“和”啞巴中間“。
NAPT
傳統(tǒng)的NAT只修改IP地址,但這種NAT不是最為流行的,NAPT同時使用IP和端口來確定一個特定的數(shù)據(jù)包到底來自哪一個內(nèi)部主機(因為傳統(tǒng)NAT不同的內(nèi)部主機使用同一個IP與外部服務關聯(lián),當使用同一個端口時沒法作有效的區(qū)分)。NAPT會同時修改IP地址和端口,防止了傳統(tǒng)NAT造成的端口沖突。
NAT穿越
NAT雖然解決的IP地址資源的問題,但是使得家庭網(wǎng)絡對外提供服務變得非常的困難。因為內(nèi)部很多主機使用同一個IP地址。需要用到NAT穿越技術。NAT穿越是一個復雜的課題,這里只做部分簡單介紹:
NAT穿越的本質(zhì)是獲得位于NAT設備后面的主機對外的IP地址和端口。
打孔(打洞) : 兩個位于NAT背后的主機,都訪問一個外部的服務器,服務器通過會話得知了它們的各自對外的IP和端口,同時方便兩者建立連接。
自地址的確定:通過外部服務器的方法是有局限性的,在多層次NAT中是無效的。STUN作為一種NAT對話穿越工具,可以找出自己的公網(wǎng)地址和端口。
猜測國內(nèi)"花生殼"
花生殼是先打洞,打洞不成功就使用代理轉(zhuǎn)發(fā)。
花生殼會給用戶A(內(nèi)網(wǎng)主機)一個域名。
- 其它主機訪問該域名,首先訪問公網(wǎng)DNS,公網(wǎng)DNS訪問花生殼DNS,花生殼DNS返回給用戶花生殼轉(zhuǎn)發(fā)服務器的IP地址。
- 客戶機不知道,只是將花生殼轉(zhuǎn)發(fā)服務器作為主機A,發(fā)送請求。
- 花生殼服務器轉(zhuǎn)發(fā)請求到內(nèi)網(wǎng)主機。并將其回復轉(zhuǎn)發(fā)給客戶機。所以重點是花生殼服務器如何知道主機A在公網(wǎng)上的地址。在配置花生殼映射的時候,我們會在本地訪問花生殼網(wǎng)站,這個時候花生殼就能知道我們所使用的公網(wǎng)IP了,即花生殼有能力將數(shù)據(jù)包轉(zhuǎn)發(fā)到本地內(nèi)網(wǎng)某臺主機上(也只是猜測而已)。