NAT基礎以及NAT擴展知識

NAT知識點彙總

主要總結常見的NAT類型的工作原理以及某些NAT擴展技術的介紹

NAT特性介紹

NAT(Network Address Translation,網絡地址轉換)能夠將來自同一個網絡的IP數據報文的源IP地址或目的IP地址或源IP和目的IP都轉換的技術,通常用於私網與公網之間;

NAT可以用來解決IPv4地址不夠用的問題。

NAT按照特性可以分爲三種,動態NAT、靜態NAT以及NAT Server,如下:

  • 動態NAT一個私網IP地址對應一個公網IP地址,但私網IP與公網IP地址的對應關係不是固定不變的。當私網用戶訪問公網時,動態NAT就會從地址池挑選一個空閒的公網IP地址進行轉換,在公網IP地址使用的過程裏,其他私網用戶不能再使用該公網IP地址進行轉換;實現方式有Basic NAT(基礎NAT)和NAPT(網絡地址端口轉換,Easy NAT是NATP的一種特例);
  • 靜態NAT建立固定的一個私網IP地址對應一個公網IP地址。與動態NAT不同的是,每個私網用戶轉換爲公網用戶的IP地址都是固定不關,相當於靜態建立NAT一一對應映射表;
  • NAT Server:靜態NAT的一種應用,建立公網IP地址到私網IP地址的映射表,與動態NAT和靜態NAT不同的是,NAT Server應用於外網用戶訪問內網服務器的情況,也就是說方向是從外網到內網。在網關路由上建立內網服務器私網IP地址與公網IP地址的映射關係,當外網用戶訪問服務器映射的公網IP地址時,網關路由就會將該公網轉換爲對應的私網IP地址;

常見NAT的類型以及工作原理

常見的NAT類型包括Basic NAT、NAPT、Esay NAT、NAT Server。

前三個NAT技術統稱爲源NAT,NAT Server統稱爲目的NAT。

Basic NAT原理

Basic NAT是動態NAT的一種應用,私網IP地址與公網IP地址是動態的一一對應關係

當內網用戶向外網服務器發送請求時,網關設備會將請求報文的源IP地址(私網IP地址),轉化爲事先配置的動態公網地址池裏挑選的一個空閒公網IP地址(只是將源私網IP地址轉變爲公網IP地址,端口號不會發生改變且一個公網IP不能被多個私網IP同時映射)並建立私網IP地址與該公網IP地址的正向與反向的兩條映射關係;

當外網服務器向內網用戶回覆應答報文並經過網關設備時,應答報文的目的公網IP地址就會按照反向的NAT映射項,轉變爲對應的私網IP地址,然後發送到主機。

Basic NAT原理過程圖

  • 客戶端想要訪問外網服務器,向(outbound)網關路由發送請求報文(源IP:192.16.1.1);
  • 網關路由收到請求報文之後,會從NAT地址池裏選擇一個空閒的公網IP地址,建NAT映射表(outbound和inbound兩個方向的私網IP地址與公網IP地址),然後按照NAT映射表的outbound(正向)條目,將請求報文的源IP地址(192.168.1.1)替換爲公網IP地址(220.10.2.1),最終發送給服務器;
  • 服務器收到請求報文之後,發送目的IP地址爲220.10.2.1的響應報文;
  • 網關路由收到來自公網的響應報文後,會根據目的IP地址查找反向(inbound)NAT映射表,按照inbound映射表條目,將響應報文的目的公網IP地址(220.10.2.1)轉變爲對應的私網IP地址(192.168.1.1),最終發送給客戶端

NAPT原理

NAPT(網絡地址端口轉換)是動態NAT的一種應用,採用“公網地址+端口號”,使得多個私網地址能夠同時轉換爲一個公網地址

當多個內網用戶向同一個外網服務器發送請求時,請求報文的私網IP地址就會從地址池中選擇一個公網IP地址,建立兩條進出方向(“公網+端口”與“私網+端口”)的NAT映射條目並將其轉變爲“公網IP地址+端口號”(私網IP地址轉變爲公網IP地址,端口也會發生變化,當有其他用戶要使用該公網地址時,只要端口號不一樣就能使用)。

當外網服務器向內網用戶回覆應答報文時,應答報文的目的公網IP地址和端口號就會按照反向的NAT映射項,轉變爲對應的私網IP地址和端口號,然後發送到主機。

NAPT原理過程圖

  • 客戶端想要訪問外網服務器,向(outbound)網關路由發送請求報文(IP:192.16.1.1:80);
  • 網關路由收到請求報文之後,會從動態地址池選擇一個公網IP地址(220.10.2.1:4450),建立NAT映射表(outbound和inbound兩個方向的“私網IP地址+端口號”與“公網IP地址+端口號”),然後按照NAT映射表的outbound(正向)條目,將請求報文的源IP地址(192.168.1.1:80)替換爲公網IP地址(220.10.2.1:4450),最終發送給服務器;
  • 服務器收到請求報文之後,發送目的IP地址爲220.10.2.1:4450的響應報文;
  • 網關路由收到來自公網的響應報文後,會根據目的IP地址查找反向(inbound)NAT映射表,按照inbound映射表條目,將響應報文的目的公網IP地址和端口號(220.10.2.1:4450)轉變爲對應的私網IP地址和端口號(192.168.1.1:80),最終發送給客戶端;

Esay NAT

Easy NAT是NAPT的一種特例,工作原理和NAPT類似,不同的是Easy NAT不建立地址池,直接使用網關路由器連接外網接口的IP地址,採用的也是“公網地址+端口號”,應用於局域網規模較小的環境。

Esay NAT原理過程圖

  • 客戶端想要訪問外網服務器,向(outbound)網關路由發送請求報文(IP:192.16.1.1:80);
  • 網關路由收到請求報文之後,會從使用網關路由的G0/0/1接口IP地址(220.10.2.1),建立NAT映射表(outbound和inbound兩個方向的“私網IP地址+端口號”與“公網IP地址+端口號”),然後按照NAT映射表的outbound(正向)條目,將請求報文的源IP地址(192.168.1.1:80)替換爲公網IP地址(220.10.2.1:4450),最終發送給服務器;
  • 服務器收到請求報文之後,發送目的IP地址爲220.10.2.1:4450的響應報文;
  • 網關路由收到來自公網的響應報文後,會根據目的IP地址查找反向(inbound)NAT映射表,按照inbound映射表條目,將響應報文的目的公網IP地址和端口號(220.10.2.1:4450)轉變爲對應的私網IP地址和端口號(192.168.1.1:80),最終發送給客戶端;

NAT Server

NAT Server應用於外網用戶訪問內網服務器的場景,在公共網絡彙總私網地址是無法識別的,如果一個外網用戶使用內網服務器的私網IP地址直接訪問服務器,是無法訪問成功的,NAT Server就能解決該問題。

首先在網關設備上配置完成服務器的私網IP地址與公網IP地址,外網用戶使用服務器映射的公網IP地址訪問內網服務器,當網關設備收到該報文後,會將報文的目的IP地址(公網IP)轉化爲對應的內網服務器的IP地址,然後發送給私網。

NAT Server原理過程圖

  • 客戶端想要訪問內網服務器,向(inbound)網關路由發送請求報文(目的IP:220.10.2.1:80);
  • 網關路由收到請求報文之後,會按照之前配置好的NAT映射表的inbound(正向)條目,將請求報文的源IP地址(220.10.2.1:80)替換爲公網IP地址(192.168.1.1:80),最終發送給服務器;
  • 服務器收到請求報文之後,發送源IP地址爲192.168.1.1:80的響應報文;
  • 網關路由收到來自公網的響應報文後,會根據源IP地址查找反向(outbound)NAT映射表,按照outbound映射表條目,將響應報文的源私網IP地址和端口號(192.168.1.1:80)轉變爲對應的公網IP地址和端口號(220.10.2.1:80),最終發送給客戶端

NAT的優點

  1. 節約公網IPv4地址,因爲私網內多個用戶可以共享一個公網IP地址對公網進行訪問;
  2. 在實現地址轉換的同時,還隱藏了內網主機的真實IP地址,從而防止外部網絡對內部網路的攻擊。提高內網的完全性
  3. 控制內網主機訪問外網,同時也可以控制外放主機訪問內網,解決內網和外網不能相互通信的問題

NAT擴展技術

爲了滿足NAT在特殊場景下的應用,提供了多種NAT擴充技術,包括NAT ALG、DNS Mapping、二次NAT和NAT關聯VPN

NAT ALG

NAT ALG(Application Level Gataway,NAT應用層網關)是爲了解決NAT和NAPT的不足。

NAT和NAPT只能更換IP報文的源/目的IP地址和端口,但對於來自應用層數據的IP地址和端口無法轉換(如:FTP、DNS、SIP等數據報文),這就會造成發送的請求報文裏的IP地址和端口發生了改變,但數據部分中的IP地址和端口號沒有發生變化,發送的回覆報文中IP報文中含有私網IP地址,造成通信失敗。

NAT ALG能夠將指定應用層協議的數據部分裏包含的IP地址和端口,按照NAT映射表進行轉換

注:NAT ALG不僅可以改變IP報文數據部分的IP地址和端口,還可以允許這些在數據部分帶有不可識別的私網地址和端口信息的應用層協議報文穿越NAT設備進行傳輸,相當於屏蔽了私網地址信息。

NAT ALG現階段支持的協議有:DNS、FTP、ICMP、SIP、PPTP和RTSP,ALG可全面應用於靜態NAT、動態NAT以及NAT Server。

DNS Mapping

DNS Mapping(DNS映射)是NAT ALG的補充,會事先建立“域名-公網IP地址-公網端口-協議類型”的映射表。用於解決內網用戶通過域名訪問內網服務器,但DNS解析服務器在外網,造成解析出的IP地址爲公網地址,使其訪問失敗的問題。

未開啓DNS Mapping的訪問過程(已配好NAT Server):

未開啓DNS Mapping的過程圖
A. 私網客戶端希望通過域名訪問私網web服務器,客戶端就會向外網DNS服務器發送請求,用於解析域名(www.test.com);
B. DNS服務器收到經過處理的請求報文後,查找DNS表項發現www.test.com域名對應的IP地址爲公網地址(160.10.1.7),將域名所對應的IP地址填入響應報文的數據部分,回覆給客戶端;
C. 客戶端收到響應報文,發現www.test.com域名對應的IP地址爲公網地址(160.10.1.7),但是該web服務器實際上是在私網,因此客戶端無法與web服務器通信
開啓DNS Mapping的訪問過程(已配好NAT Server和DNS Mapping):

開啓DNS Mapping的過程圖
A. 私網客戶端希望通過域名訪問私網web服務器,客戶端就會向外網DNS服務器發送請求,用於解析域名(www.test.com);
B. DNS服務器收到經過處理的請求報文後,查找DNS表項發現www.test.com域名對應的IP地址爲公網地址(160.10.1.7),將域名所對應的IP地址填入響應報文的數據部分,回覆給客戶端;
C. 網關路由收到DNS服務器發送響應報文後,會先根據其中攜帶的域名(www.test.com)查找“域名-公網IP地址-公網端口-協議類型”的映射表,找到該域名對應的公網IP地址,然後根據反向NAT映射地址以及NAT Server映射表將目的IP地址替換爲私網IP地址(10.1.1.100)以及將數據部分中域名對應的公網IP地址替換爲私網IP地址(10.1.1.200),發送給客戶端;
D. 客戶端收到響應報文,發現www.test.com域名對應的IP地址爲私網地址(10.1.1.200),然後按照該IP地址封裝報文,發送給web服務器。

注:DNS Mapping是NAT ALG關於DNS協議的補充(DNS ALG),兩者的區別是DNS ALG是直接通過NAT映射表進行替換,而DNS Mapping是先查找"域名-公網IP地址-公網端口號-協議"映射表,查找到相應域名後使用NAT映射表將域名對應的公網IP地址信息(公網地址、端口號、協議)替換Wie私網IP地址(私網地址、端口號、協議)

二次NAT

二次NAT是指對報文中的源IP地址和目的IP地址都進行NAT轉換。較不常見,常用於防火牆充當網關路由時,形成單邊路由的情況。

內網用戶通過公網IP地址訪問內網服務器:
二次NAT過程圖
PS:二次NAT較爲不常見,大家可以自行分析不開啓二次NAT的過程和開啓NAT的過程,如果想讓我補充完成二次分析的,可以評論留言^ _ ^

NAT關聯VPN

NAT關聯VPN能夠解決內部網絡中IP地址重疊的VPN同時訪問外網服務器的問題,即將內部VPN信息作爲NAT映射表的條件,該方法分爲兩類:VPN關聯源NAT和VPN關聯NAT Server。

VPN關聯源NAT:

NAT關聯源NAT的過程圖

  • VPN1內的客戶端A和VPN2內的客戶端B的IP地址相同,均爲私網IP地址10.1.1.100,同時都要去訪問外網的一個服務器;
  • 網關路由做源NAT轉換的時,會將內部VPN信息作爲一個匹配條件,將客戶端A發送的請求報文中源IP地址轉換爲公網IP地址220.10.1.1,將客戶端B發送的報文中源IP地址轉換爲220.10.2.1,同時建立私網IP地址和公網IP地址的NAT映射表,記錄用戶的VPN信息
  • 服務器發送響應報文經過網關路由時,網關路由會根據NAT映射表,將目的IP地址爲220.10.1.1轉換爲10.1.1.100併發送給VPN1的客戶端A,將目的IP地址爲220.10.2.1轉換爲10.1.1.100併發送給VPN2的客戶端B。

在這裏插入圖片描述

  • 外網客戶端訪問VPN1的服務器A時報文的目的IP地址爲220.10.1.1,外網客戶端訪問VPN2的服務器B時報文的目的IP地址爲220.10.2.1;
  • 網關路由做NAT Server轉換時,會根據NAT Server映射表和VPN信息,將報文的目的IP地址爲220.10.1.1轉換爲私網IP地址10.1.1.1,發送給VPN1的服務器A,將報文的目的IP地址爲220.10.2.1轉換爲私網IP地址10.1.1.1,發送給VPN1的服務器B;
  • 服務器A和B發送響應報文經過網關路由時,網關路由會根據NAT Server映射表,將從VPN1的服務器A發送的響應報文的源IP地址轉變爲公網IP地址爲220.10.1.1,將從VPN2的服務器B發送的響應報文的源IP地址轉變爲公網IP地址爲220.10.2.1。

注:先進行NAT轉化後,然後才查找路由表

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章