TCP/IP詳解卷一之防火牆和網路地址轉換
1 防火牆
—代理防火牆和包過濾防火牆的主要區別是所操作的協議棧的層次以及由此決定的IP地址和埠號的使用。
(1)包過濾防火牆
— 包過濾防火牆是一個網際網路路由器,能夠丟棄符合(或不符合)特定條件的資料包。
—最簡單的包過濾防火牆是無狀態的,它會單獨處理每一個數據報。
—更復雜的包過濾防火牆是有狀態的,它能夠通過關聯已經或者即將到達的資料包來推斷流或者資料報的資訊,即那些屬於同一個傳輸關聯的資料包或構成同一個IP資料報的IP分片。
—通常情況下,過濾器會全力攔截來自外網的惡意流量,但不會限制從內網到外網的流量。
(2)代理防火牆
—從Internet客戶端的角度來看,代理防火牆是一個多宿主的伺服器主機。它是TCP和UDP傳輸關聯的終點,通常不會在IP協議層中路由IP資料報。
—代理防火牆支援使用私有地址範圍。其常見的配置是為“外”介面分配一個全域性路由的IP地址,為“內”介面分配一個私有的IP地址。
—代理防火牆是非常安全的,但它是以脆性和缺乏靈活性為代價的:
· 由於這種型別的防火牆必須為每個傳輸層服務設定一個代理,任何要使用的新服務必須安裝一個相應的代理,並通過該代理來操作發起連線;此外必須配置每個客戶端以便能夠找到代理。
· 在部署方面,代理防火牆在所有被訪問的網路服務均能提前確定的環境中能工作得很好,但是新增額外的服務可能需要網路運營者的重大幹預。
—代理防火牆的兩種常見形式:
· HTTP代理防火牆:也稱為Web代理,只能用於HTTP和HTTPS協議。這種代理往往也提供Web快取功能,從而減少顯示網頁的延遲,提高使用者訪問網站的體驗。
· SOCKS防火牆:比HTTP代理使用更為廣泛,可用於Web之外的其他服務。
2 網路地址轉換(NAT)
—NAT本質上是一種允許在網際網路的不同地方重複使用相同的IP地址集的機制。
—NAT的引入用以解決兩個問題:IP地址枯竭和關於路由可擴充套件性的擔憂。後者由於無類別域間路由(CIDR)的發展而被解決了。
—NAT的缺點:
· 由於網際網路上的使用者無法直接訪問具備私有地址的主機,因此,需要做特殊配置才能使處於NAT內部的主機能夠提供可供網際網路訪問的服務。
· 為了使NAT正常工作,每一個隸屬於同一個連線或關聯的雙向資料包都必須通過相同的NAT。
· 在許多方面,NAT和網際網路協議的基本宗旨是背道而馳的:“智慧邊緣”和”啞巴中間“。
· 為完成工作,NAT需要跟蹤每個關聯(或每個連線)的連線狀態,其操作貫穿多個協議層。
· NAT會對一些應用協議造成困擾,尤其是那些在應用層的有效載荷內記錄IP地址資訊的協議,如FTP協議。
—大多數NAT同時執行轉換和包過濾,包過濾的標準取決於NAT的動態狀態。
—傳統NAT可分為兩類:
· 基本NAT:只執行IP地址的重寫,無助於減少需要使用的IP地址數量。
· 網路地址埠轉換(NAPT):使用傳輸層識別符號(即TCP和UDP埠,ICMP查詢識別符號)來確定一個特定的資料包到底和NAT內部的哪臺私有主機關聯,這使得大量的內部主機可以同時訪問網際網路,而所使用的公有地址卻很少。
—保留了三個IPv4地址範圍作為私有地址範圍使用:10.0.0.0/8,172.16.0.0/12,192.168.0.0/16。
—NAT提供了一定程度上的類似於防火牆的安全性:
· 預設情況下,從網際網路上無法訪問NAT私有端的所有系統。
· 必須藉助NAT的參與,才能保證私有地址領域和公共領域中的主機之間的正常通訊。一般採取的策略是:幾乎允許所有的傳出及其返回流量通過NAT,但幾乎阻斷所有傳入的新連線請求。
· NAT對外隱藏內部地址的數量和配置。
—當IP資料報被分片後,除第一個分片之外,其他的分片並沒有包含埠號資訊。因此,在一般情況下,分片不能被NAT或NAPT正確處理。
3 NAT地址和埠轉換行為、NAT過濾行為
—各種NAT埠和地址行為、過濾行為如下表:
—在所有常見的傳輸層協議中(包括TCP和UDP),所需的NAT地址和埠處理行為是獨立於端點的,來幫助應用程式確定一個確保流量能夠正常工作的外部地址。
—地址配對:當位於NAT後的一個主機同時發起多個連線時,為每個連線分配相同的外部IP地址。
—地址配對是所有傳輸層的推薦NAT行為。
—若NAT中缺乏任何形式的地址對映,那麼它無法轉發從外到內的任何流量。