1. NAT轉換簡介
NAT英文全稱是「Network Address Translation」,中文意思是「網絡地址轉換」,它是一個IETF(Internet Engineering Task Force, Internet工程任務組)標準,允許一個整體機構以一個公用IP(Internet Protocol)地址出現在Internet上。顧名思義,它是一種把內部私有網絡地址(IP位址)翻譯成合法網絡IP位址的技術。因此我們可以認為,NAT在一定程度上,能夠有效的解決公網地址不足的問題。在配置了 NAT 的路由器上,可以把整個網絡分成兩部分:內部網絡 和 外部網絡。NAT 技術中有四個術語:
內部本地地址(Inside Local):內網中設備所使用的IP位址內部全局地址(Inside Global):對於外部網絡來說,區域網內部主機所表現的 IP 地址。外部本地地址(Outside Local):外部網絡主機的真實地址。外部全局地址(Outside Global):對於內部網絡來說,外部網絡主機所表現的 IP 地址。外網設備所使用的真正的地址。
1.1. NAT分類NAT有三種類型:靜態NAT(Static NAT)、動態地址NAT(Pooled NAT)、網絡地址埠轉換NAPT(Port-Level NAT)。
靜態 NAT( Static NAT )( 一對一 )。將內部網絡的私有IP位址轉換為公有IP位址,IP位址對是一對一的,是一直不變的。
動態地址 NAT( Pooled NAT )(多對多)。將內部網絡的私有 IP 地址轉換為公用 IP 地址時,IP 地址是不確定,隨機的。所有被授權訪問 Internet 的私有 IP 地址可隨機轉換為任何指定合法的 IP 地址。也就是說,只要指定哪些內部地址可以進行轉換,以及用哪些合法地址作為外部地址時,就可以進行動態 NAT 轉換。動態 NAT 是在路由器上配置一個外網 IP 地址池,當內部有計算機需要和外部通信時,就從地址池裡動態的取出一個外網 IP,並將他們的對應關係綁定到 NAT 表中,通信結束後,這個外網 IP 才被釋放,可供其他內部 IP 地址轉換使用,這個 DHCP 租約 IP 有相似之處。當 ISP 提供的合法 IP 地址略少於網絡內部的計算機數量時。可以採用動態轉換的方式。
網絡地址埠轉換 NAPT(Network Address Port Translation)(Port-Level NAT)( 多對一)。改變外出數據包的源埠並進行埠轉換,採用埠多路復用方式。內部網絡的所有主機均可共享一個合法外部 IP 地址實現對 Internet 的訪問,可以最大限度地節約 IP 地址資源。同時,也可以隱藏網絡內部的所有主機,有效避免來自 Internet 的攻擊。因此,目前網絡中應用最多的就是 PAT 規則。這是最常用的 NAT 技術,也是 IPv4 能夠維持到今天的最重要的原因之一,它提供了一種多對一的方式,對多個內網 IP 地址,邊界路由可以給他們分配一個外網 IP,利用這個外網 IP 的不同埠和外部進行通信。NAPT 與 動態NAT 不同,它將內部連接映射到外部網絡中的一個單獨的 IP 地址上,同時在該地址上加上一個由 NAT設備選定的埠號。
NAPT 是使用最普遍的一種轉換方式,在 HomeGW 中也主要使用該方式。它又包含兩種轉換方式:SNAT和DNAT。
源NAT(Source NAT,SNAT):修改數據包的源地址。源NAT改變第一個數據包的來源地址,它永遠會在數據包發送到網絡之前完成,數據包偽裝就是一具SNAT的例子。目的NAT(DestinationNAT,DNAT):修改數據包的目的地址。Destination NAT剛好與SNAT相反,它是改變第一個數據懈的目的地地址,如平衡負載、埠轉發和透明代理就是屬於DNAT。1.2. NAT應用
NAT主要可以實現以下幾個功能:數據包偽裝、平衡負載、埠轉發和透明代理。
數據偽裝: 可以將內網數據包中的地址信息更改成統一的對外地址信息,不讓內網主機直接暴露在網際網路上,保證內網主機的安全。同時,該功能也常用來實現共享上網。埠轉發: 當內網主機對外提供服務時,由於使用的是內部私有IP位址,外網無法直接訪問。因此,需要在網關上進行埠轉發,將特定服務的數據包轉發給內網主機。負載平衡: 目的地址轉換NAT可以重定向一些伺服器的連接到其他隨機選定的伺服器。失效終結: 目的地址轉換NAT可以用來提供高可靠性的服務。如果一個系統有一臺通過路由器訪問的關鍵伺服器,一旦路由器檢測到該伺服器當機,它可以使用目的地址轉換NAT透明的把連接轉移到一個備份伺服器上。透明代理: NAT可以把連接到網際網路的HTTP連接重定向到一個指定的HTTP代理伺服器以緩存數據和過濾請求。一些網際網路服務提供商就使用這種技術來減少帶寬的使用而不用讓他們的客戶配置他們的瀏覽器支持代理連接。
2. NAT實現原理2.1 地址轉換
NAT的基本工作原理是,當私有網主機和公共網主機通信的IP包經過NAT網關時,將IP包中的源IP或目的IP在私有IP和NAT的公共IP之間進行轉換。
如下圖所示,NAT網關有2個網絡埠,其中公共網絡埠的IP位址是統一分配的公共 IP,為202.20.65.5;私有網絡埠的IP位址是保留地址,為192.168.1.1。私有網中的主機192.168.1.2向公共網中的主機202.20.65.4發送了1個IP包(Dst=202.20.65.4,Src=192.168.1.2)。
由於IP包的源IP已經被轉換成NAT Gateway的公共IP,Web Server發出的響應IP包(Dst= 202.20.65.5,Src=202.20.65.4)將被發送到NAT Gateway。
這時,NAT Gateway會將IP包的目的IP轉換成私有網中主機的IP,然後將IP包(Des=192.168.1.2,Src=202.20.65.4)轉發到私有網。對於通信雙方而言,這種地址的轉換過程是完全透明的。轉換示意圖如下。
如果內網主機發出的請求包未經過NAT,那麼當Web Server收到請求包,回復的響應包中的目的地址就是私網IP位址,在Internet上無法正確送達,導致連接失敗。
2.2 連接跟蹤
在上述過程中,NAT Gateway在收到響應包後,就需要判斷將數據包轉發給誰。此時如果子網內僅有少量客戶機,可以用靜態NAT手工指定;但如果內網有多臺客戶機,並且各自訪問不同網站,這時候就需要連接跟蹤(connection track)。
如下圖所示:
在NAT Gateway收到客戶機發來的請求包後,做源地址轉換,並且將該連接記錄保存下來,當NAT Gateway收到伺服器來的響應包後,查找Track Table,確定轉發目標,做目的地址轉換,轉發給客戶機。2.3 埠轉換以上述客戶機訪問伺服器為例,當僅有一臺客戶機訪問伺服器時,NAT Gateway只須更改數據包的源IP或目的IP即可正常通訊。但是如果Client A和Client B同時訪問Web Server,那麼當NAT Gateway收到響應包的時候,就無法判斷將數據包轉發給哪臺客戶機,如下圖所示。
此時,NAT Gateway會在Connection Track中加入埠信息加以區分。如果兩客戶機訪問同一伺服器的源埠不同,那麼在Track Table裡加入埠信息即可區分,如果源埠正好相同,那麼在時行SNAT和DNAT的同時對源埠也要做相應的轉換,如下圖所示。(這裡的理解灰常重要)
3. 防火牆在網絡中,所謂「防火牆」,是指一種將內部網和公眾訪問網(如Internet)分開的方法,它實際上是一種隔離技術。防火牆是在兩個網絡通訊時執行的一種訪問控制尺度,它能允許你「同意」的人和數據進入你的網絡,同時將你「不同意」的人和數據拒之門外,最大限度地阻止網絡中的黑客來訪問你的網絡。換句話說,如果不通過防火牆,公司內部的人就無法訪問Internet,Internet上的人也無法和公司內部的人進行通信。防火牆是依照特定的規則來控制進出它的網絡流量的網絡安全系統。一個典型的場景是在一個受信任的內網和不受信任的外網比如 Internet 之間建立一個屏障。防火牆可以是電腦上運行的軟體,也可以是獨立的硬體設備。
3.1 防火牆的五個安全域
untrust(不信任域)低級安全區域,安全優先級為5通常用來定義Internet等不安全的網絡,用於網絡入口線的接入。dmz(隔離區)中級安全區域,安全優先級為50,通常用來定義內部伺服器所在網絡作用是把WEB,E-mail,等允許外部訪問的伺服器單獨接在該區埠,使整個需要保護的內部網絡接在信任區埠後,不允許任何訪問,實現內外網分離,達到用戶需求。DMZ可以理解為一個不同於外網或內網的特殊網絡區域,DMZ內通常放置一些不含機密信息的公用伺服器,比如Web、Mail、FTP等。這樣來自外網的訪問者可以訪問DMZ中的服務,但不可能接觸到存放在內網中的公司機密或私人信息等,即使DMZ中伺服器受到破壞,也不會對內網中的機密信息造成影響。trust(信任域)高級級安全區域,安全優先級為85,通常用來定義內部用戶所在的網絡,也可以理解為應該是防護最嚴密的地區。local(本地)頂級安全區域,安全優先級為100,local就是防火牆本身的區域,比如ping指令等網際控制協議的回覆,需要local域的權限,凡是由防火牆主動發出的報文均可認為是從Local區域中發出,凡是需要防火牆響應並處理(而不是轉發)的報文均可認為是由Local區域接收management(管理)頂級安全區域,安全優先級為100,除了console控制接口對設備進行配置,如果防火牆設備可以通過web界面配置的話,需要一根雙絞線連接到管理接口,鍵入用戶名和密碼進行配置。3.2 防火牆工作模式防火牆能夠工作在三種模式下:路由模式、透明模式、混合模式。
如果防火牆以第三層對外連接(接口具有IP 地址),則認為防火牆工作在路由模式下;若防火牆通過第二層對外連接(接口無IP 地址),則防火牆工作在透明模式下;若防火牆同時具有工作在路由模式和透明模式的接口(某些接口具有IP 地址,某些接口無IP 地址),則防火牆工作在混合模式下。防火牆三種工作模式的簡介
路由模式
當防火牆位於內部網絡和外部網絡之間時,需要將防火牆與內部網絡、外部網絡以及DMZ 三個區域相連的接口分別配置成不同網段的IP 地址,重新規劃原有的網絡拓撲,此時相當於一臺路由器。
如下圖所示,防火牆的Trust區域接口與公司內部網絡相連,Untrust 區域接口與外部網絡相連。值得注意的是,Trust 區域接口和Untrust 區域接口分別處於兩個不同的子網中。
採用路由模式時,可以完成ACL 包過濾、ASPF 動態過濾、NAT 轉換等功能。然而,路由模式需要對網絡拓撲進行修改(內部網絡用戶需要更改網關、路由器需要更改路由配置等),這是一件相當費事的工作,因此在使用該模式時需權衡利弊。透明模式
如果防火牆採用透明模式進行工作,則可以避免改變拓撲結構造成的麻煩,此時防火牆對於子網用戶和路由器來說是完全透明的。也就是說,用戶完全感覺不到防火牆的存在。
採用透明模式時,只需在網絡中像放置網橋(bridge)一樣插入該防火牆設備即可,無需修改任何已有的配置。與路由模式相同,IP 報文同樣經過相關的過濾檢查(但是IP 報文中的源或目的地址不會改變),內部網絡用戶依舊受到防火牆的保護。防火牆透明模式的典型組網方式如下:
如上圖所示,防火牆的Trust 區域接口與公司內部網絡相連,Untrust 區域接口與外部網絡相連,需要注意的是內部網絡和外部網絡必須處於同一個子網。
混合模式
如果防火牆既存在工作在路由模式的接口(接口具有IP 地址),又存在工作在透明模式的接口(接口無IP 地址),則防火牆工作在混合模式下。混合模式主要用於透明模式作雙機備份的情況,此時啟動VRRP(Virtual Router Redundancy Protocol,虛擬路由冗餘協議)功能的接口需要配置IP 地址,其它接口不配置IP位址。防火牆混合模式的典型組網方式如下:
如上圖所示,主/備 防火牆的Trust 區域接口與公司內部網絡相連,Untrust區域接口與外部網絡相連,主/備防火牆之間通過HUB 或LAN Switch 實現互相連接,並運行VRRP 協議進行備份。需要注意的是內部網絡和外部網絡必須處於同一個子網。
4. 總結
之所以將NAT也歸屬到防火牆技術的原因在於NAT所扮演的角色,NAT將網絡在網關處劃分為公網和私網兩部分,對外屏蔽私網的結構,地址等,對內私網用戶可以復用私網地址,這樣其實NAT不自然的充當了防火牆的角色。
參考文章:
網絡地址轉換NAT原理,https://blog.csdn.net/hzhsan/article/details/45038265淺談防火牆五個域,三種模式,https://blog.csdn.net/qq_42196196/article/details/83018737防火牆,https://blog.csdn.net/freeking101/article/details/70239637?locationNum=4&fps=1防火牆的三種工作模式介紹,http://www.cppcns.com/zhishi/wangluoqita/28819.html