為什么會引入NAT?
NAT(網絡地址轉換)的引入主要是為了解決兩個問題
- IPv4地址短缺:互聯網快速發展,可用的公網IP地址越來越少。
- 網絡安全:需要一種方法來保護內部網絡不被直接暴露在互聯網上。
IPv4 &?IPv6
IPv4使用32位地址,理論上可以提供約43億個唯一地址。
a) 私有地址范圍:
10.0.0.0 到 10.255.255.255 (10/8 前綴)
172.16.0.0 到 172.31.255.255 (172.16/12 前綴)
192.168.0.0 到 192.168.255.255 (192.168/16 前綴)
b) 回環地址:127.0.0.0 到 127.255.255.255
IPv6使用128位地址,提供了一個極其龐大的地址空間,約340萬億億億億個地址。IPv6的地址空間如此之大,以至于即使給地球上的每一粒沙子分配一個IPv6地址,也只會用掉很小一部分地址空間。
為什么不能引入IPv6來解決IP不夠用?
IPv6的引入是為了從根本上解決IPv4地址短缺的問題。然而,盡管IPv6已經存在多年,但它并沒有完全取代IPv4
因為IPv6的全面部署是一個緩慢的過程。網絡設備、操作系統、應用程序都需要更新以支持IPv6。這個過程耗時很長,且成本較高。
雖然IPv6最終會解決地址短缺問題,但在完全過渡期間,NAT仍然扮演著重要角色:
- 它允許組織在現有IPv4基礎設施上繼續運營。
- 提供了IPv4到IPv6過渡的緩沖時間。
- 在混合環境中,幫助IPv4和IPv6網絡互相通信。
總之,雖然IPv6是長期解決方案,但NAT在當前和可預見的未來仍然非常重要,它為向IPv6的平滑過渡提供了必要的支持。/
NAT是什么?
網絡地址轉換 (NAT) 是一種將 IP 地址空間映射到另一個 IP 地址空間的方法,方法是在數據包通過流量路由設備傳輸數據包時修改數據包的 IP 標頭中的網絡地址信息。但無法路由網絡的地址空間。面對 IPv4 地址耗盡,它已成為節省全局地址空間的流行且必不可少的工具。NAT 網關的一個 Internet 可路由 IP 地址可用于整個專用網絡。?
NAT就像是一個翻譯官,負責在內部網絡和外部網絡之間轉換IP地址。想象一下,NAT是一個辦公室的前臺接待:
- 當內部員工(內網設備)需要與外界通信時,前臺會用公司的地址(公網IP)代替員工的個人地址(內網IP)。
- 當外部人員(互聯網)想要聯系公司內部時,前臺會將請求轉發給相應的員工(內網設備)。
NAT可以干什么?
NAT有幾個重要的功能:
a) 節省IP地址:允許多臺內網設備共享一個公網IP地址。
b) 增強安全性:隱藏內部網絡結構,減少直接攻擊的可能。
c) 簡化網絡管理:可以更靈活地管理內部網絡,而不影響外部通信。
d) 實現負載均衡:可以將incoming的流量分配到不同的內部服務器。
總的來說,NAT就像是網絡世界的一個智能門衛,它既能幫助解決地址短缺的問題,又能提高網絡的安全性和靈活性。
NAT mapping vs NAT filtering
NAT Mapping(NAT映射)
NAT mapping 定義了內部網絡地址和端口如何映射到外部網絡地址和端口。
主要類型包括:
a) Static (靜態映射):
- 一對一映射,內部IP總是映射到同一個外部IP。
- 例如:內部IP 192.168.1.10 永遠映射到外部IP 203.0.113.5。
b) Dynamic (動態映射):
- 從一個IP池中動態分配外部IP。
- 例如:內部IP可能在不同時間映射到不同的外部IP。
c) Port Address Translation (PAT):
- 多個內部IP共享一個外部IP,通過修改端口號來區分不同的連接。
- 這是最常見的形式,也稱為NAT overload。
NAT Filtering(NAT過濾)
NAT filtering 決定了如何處理進入內部網絡的數據包,主要關注安全性。
主要類型包括:
a) Endpoint-Independent Filtering:
- 只要內部主機已經發起了連接,就允許任何外部主機向內部主機發送數據包。
- 最寬松的過濾方式。
b) Address-Dependent Filtering:
- 只允許內部主機曾經通信過的外部IP地址發送數據包回內部網絡。
- 提供了一定程度的安全性。
c) Address and Port-Dependent Filtering:
- 最嚴格的過濾方式。
- 只允許內部主機曾經通信過的特定外部IP和端口組合發送數據包回內部網絡。
- NAT Mapping:
- Static: 固定的一對一映射
- Dynamic: 動態分配外部IP
- PAT (Port Address Translation): 多個內部IP共享一個外部IP,通過端口區分
- NAT Filtering:
- Endpoint-Independent: 允許任何外部主機發送數據包
- Address-Dependent: 只允許已知IP地址發送數據包
- Address and Port-Dependent: 只允許已知IP和端口組合發送數據包
主要區別
NAT 的類型
NAT可以分為三種類型:Source NAT、Destination NAT和Bidirectional NAT。具體取決于數據包的源或目標的IP地址是否被轉換,這些是NAT(網絡地址轉換)的不同實現方式。
總結:
- SNAT主要用于內網訪問外網。如:員工A(IP:192.168.1.15)想要訪問 www.example.com(IP:93.184.216.34)
- DNAT主要用于外網訪問內網特定服務。如:外部用戶想訪問公司的網站 www.mycompany.com(指向203.0.113.10)
- BiNAT用于解決復雜網絡環境中的地址沖突。如:公司A的員工(IP:192.168.1.10)需要訪問公司B的服務器(IP:192.168.1.20)
Source NAT (SNAT)
- 定義:修改數據包的源IP地址。
- 主要用途:允許私有網絡中的設備訪問互聯網。
- 工作原理:
- 當內部設備發送數據包到外網時,SNAT將源IP地址從私有IP改為公網IP。
- 返回的數據包會自動被轉換回原始的私有IP地址。
- 優點:隱藏了內部網絡結構,提高安全性。
示例:內網PC(192.168.1.10)訪問網站時,路由器將源地址改為其公網IP(203.0.113.1)。
Destination NAT (DNAT)
- 定義:修改數據包的目標IP地址。
- 主要用途:允許外部網絡訪問內部網絡中的特定服務。
- 工作原理:
- incoming數據包的目標地址從公網IP改為內網IP。
- 對應的回復數據包會自動被轉換回公網IP。
- 優點:可以在不暴露整個內網的情況下,提供特定的內部服務。
示例:外部請求訪問Web服務器時,路由器將目標地址從公網IP(203.0.113.1:80)改為內網服務器IP(192.168.1.100:80)。
Bidirectional NAT (BiNAT)
目的: BiNAT主要用于連接兩個使用重疊IP地址空間的網絡,例如兩個都使用192.168.1.x私有地址范圍的公司網絡。
BiNAT的主要優點是:
- 允許有重疊IP地址的網絡進行通信
- 適用于網絡合并或VPN連接的場景
- 提供了額外的安全層,因為外部網絡無法直接看到內部網絡結構
工作原理:在兩個使用重疊IP地址空間的網絡之間進行通信,同時執行源NAT和目標NAT。
- 數據流向:對outgoing流量執行SNAT,對incoming流量執行DNAT。
- 從網絡A到網絡B:
- 源IP被轉換(類似SNAT)
- 目標IP被轉換(類似DNAT)
- 從網絡B到網絡A:
- 同樣進行源IP和目標IP的雙向轉換
- 從網絡A到網絡B:
Bidirectional NAT的工作原理示例:
示例:兩個使用相同私有IP范圍(如192.168.1.x)的公司網絡需要合并或通過VPN連接時
- 數據從網絡A(192.168.1.10)發送到網絡B(192.168.1.20)。
- 當數據包經過BiNAT設備時:
- 源IP從192.168.1.10轉換為10.0.0.1
- 目標IP從192.168.1.20轉換為10.0.0.2
- 當數據包進入網絡B時:
- 源IP從10.0.0.1轉換為臨時分配的IP 192.168.1.200
- 目標IP從10.0.0.2轉換回原始的192.168.1.20
這個過程允許兩個使用相同私有IP地址范圍的網絡進行通信,同時避免了地址沖突。返回的數據包會經歷相反的轉換過程。
- SRC(Source)指的是數據包的發送方或起始點的IP地址。
- DST(Destination)指的是數據包的接收方或目標的IP地址。
NAT 的實現類型
- 靜態NAT:一對一的固定映射。
- 動態NAT:從IP池中動態分配地址。
- PAT/NAPT:多個內部IP共享一個公網IP,通過端口區分。
1. 靜態NAT(Static NAT)
- 定義:一對一的固定映射,內部IP地址與外部IP地址永久對應。
- 用途:通常用于需要從外網訪問的內部服務器。
- 優點:配置簡單,易于管理。
- 缺點:需要為每個內部主機分配一個公網IP,不節省IP地址。
2. 動態NAT(Dynamic NAT)
- 定義:從一個公網IP地址池中動態分配地址給內部主機。
- 用途:適用于內部主機數量少于公網IP數量的情況。
- 優點:比靜態NAT更靈活,可以在多個內部主機間共享公網IP。
- 缺點:仍然需要相當數量的公網IP,可能在高峰時段耗盡IP池。
3. NAPT (網絡地址端口轉換)
- 定義:NAPT不僅轉換IP地址,還轉換端口號。它允許多個內網設備共享同一個公網IP地址,通過不同的端口號來區分不同的連接。
- 用途:最常見的NAT實現,廣泛用于家庭和小型辦公室網絡。
- 優點:極大地節省公網IP地址,一個公網IP可以服務成百上千的內部主機。
- 缺點:可能在某些應用程序中造成兼容性問題,特別是那些依賴特定端口的應用。
- ?3.1 對稱NAT
- 為每個內部連接創建一個唯一的外部映射。即使是相同的內部IP:端口對,如果目標不同,外部映射也會不同。
- 完全錐形:一旦內部地址(iAddr:iPort)映射到外部地址(eAddr:ePort),所有發自iAddr:iPort的包都經由eAddr:ePort向外發送。任何外部主機都可以通過向eAddr:ePort發送包到達iAddr:iPort。
- 受限錐形:類似于完全錐形,但僅允許iAddr:iPort之前發送過數據的外部主機通過eAddr:ePort到達iAddr:iPort。
- 端口受限錐形:比受限錐形更嚴格,僅允許iAddr:iPort之前發送過數據的特定外部主機:端口組合通過eAddr:ePort到達iAddr:iPort。
補充說明
- 基礎NAT主要關注IP地址的轉換,而NAPT則同時處理IP地址和端口號的轉換。
- 錐形NAT通常更有利于P2P應用和某些網絡游戲,因為它們允許特定類型的入站連接。
- 對稱NAT提供了最高級別的安全性,但可能會影響某些應用程序的正常運行,尤其是那些依賴入站連接的應用。
NAT Server
- NAT服務器的作用: NAT服務器位于內部網絡和外部網絡(互聯網)之間,負責轉換IP地址和端口號,使得內部網絡的設備能夠與外部網絡通信。
- 地址轉換:
- 內部服務器的IP是192.168.1.2(私有IP地址)
- 外部訪問者使用7.7.7.7(公網IP地址)來訪問內部服務器
- 端口映射:
- 外部訪問者使用端口3535
- 內部服務器實際使用端口80(通常是Web服務)
- 服務器映射表(Server Mapping Table):
- 顯示了NAT如何將外部請求映射到內部服務器
- 對于任何源IP(S-IP: Any),從外部1.1.1.10:80來的TCP請求會被轉發到內部的192.168.1.2:80
- 會話表(Session Table):
- 記錄了當前活躍的連接
- 顯示從7.7.7.7:3535來的TCP連接被映射到1.1.1.10:80,然后再轉發到內部的192.168.1.2:80
- 雙向通信: NAT服務器通過維護這些映射關系,確保了內外網絡之間的雙向通信可以正常進行。
這個NAT配置允許外部用戶通過公網IP和特定端口訪問內部的Web服務器,同時保護了內部網絡的結構和真實IP地址。這是端口轉發的一個典型應用,常用于允許外部訪問內部托管的服務,如網站、游戲服務器等。
NAT實現的應用
如:智能家居系統,遠程辦公訪問,多人游戲主機服務器,個人博客網站
Port forwarding
端口轉發:端口轉發是 NAT 的一種實現,當數據包通過網絡網關(如路由器或防火墻)時,它將通信請求從一個地址和端口號組合轉發到另一個地址和端口號組合。此技術最常用于使在專用網絡上的主機上運行的應用程序服務可供公用網絡(如 Internet)上的主機使用。正如設備需要 IP 才能在網絡中被識別一樣,設備上運行的服務(如 SMTP 或 FTP)也需要被識別以啟用外部通信。端口號有助于識別這些服務,端口轉發是使服務可供公共網絡上的主機使用的技術。每當服務需要通信時,端口號都有助于識別設備上的正確目標/源,并有助于進行適當的數據傳輸
例子:IT支持遠程訪問
- 遠程員工通過互聯網發起VPN連接到公司的公網IP(203.0.113.1)和VPN端口(1194)。
- 公司路由器接收到VPN請求,使用NAT和端口轉發。
- 路由器將VPN流量轉發到內部網絡的VPN服務器(192.168.1.10:1194)。
- 建立VPN連接后,遠程員工可以安全地訪問內部資源,如文件服務器。
參考
https://en.wikipedia.org/wiki/Network_address_translation#Implementation
What Is NAT? What Are the NAT Types? | FS Community
https://www.comparitech.com/net-admin/network-address-translation-overloading/