5.1 NAT簡介
另一個非常有趣的話題是 NAT。NAT 代表網絡地址轉換,通常作為服務存在於每個路由器中。那麼它是什麼以及為什麼需要它?
NAT是本地網絡可以連接到全球網絡(例如因特網)的點。
如您所知,在本地網絡上,所有計算機(以及連接到網絡的其他設備)都有自己的本地 IP 地址。並且為了與 Internet 上的服務器交換數據,我們的計算機可以向服務器發送請求並且服務器可以向我們發送響應是必要的。如果我們的 IP 地址在我們的本地網絡之外是未知的,他應該在哪裡發送響應?
想像一下,您正在給唐納德特朗普寫一封紙質信件。特朗普是公眾人物,他是唯一的——這是我們的公共服務器。你在信中註明了瑪莎作為回信地址。搗碎很多。應該將答案發送給哪個瑪莎?
因此,您從華盛頓給您的熟人(也是公眾人物)寄了一封信,並嚴格指示要將其寄給特朗普。您的朋友收到一封信,將其寄給特朗普,並提供他在華盛頓的地址作為回信地址。
然後,在收到特朗普的回復後,熟人轉發給你。與IP數據包相同...
要讓擁有私有IPv4地址的設備訪問本地網絡外的設備和資源,必須先將私有地址修改為公共公共地址。
Just NAT 將私有地址轉換為公共地址。這允許具有本地 IP 地址的設備訪問其專用網絡之外的資源。NAT 與本地 IP 地址相結合,已被證明是維護公共 IPv4 地址的有用方法。
世界上有 80 億人,已經有更多的網絡設備:電話、筆記本電腦、智能手錶、服務器,任何智能設備。而且只有 40 億個 IP 地址。以前看起來很多,但是隨著互聯網的飛速發展,大家都清楚這還不夠。
這時 NAT 就派上用場了:一個公共 IPv4 地址可以被成百上千台設備使用,每台設備都有一個本地 IPv4 地址。NAT 具有為網絡增加一定程度的隱私和安全性的額外好處,因為它對外部網絡隱藏了內部 IPv4 地址。
5.2 NAT 中的子網
LAN 通常設計有專用 IP 地址。這些是來自私有子網的地址10.0.0.0/8
,172.16.0.0/12
和192.168.0.0/16
。這些 IP 地址由組織或站點在內部使用,以允許設備在本地進行通信,它們無法在 Internet 上路由。
啟用 NAT 的路由器可以配置一個或多個有效的公共 IPv4 地址。這些公共地址稱為 NAT 池。
當內部網絡上的設備將流量從網絡發送到外部時,啟用 NAT 的路由器會將設備的內部 IP 地址轉換為來自 NAT 池的公共 IP 地址。對於外部設備,所有進出網絡的流量似乎都有一個公共 IP 地址。
NAT 路由器通常運行在 Stub 網絡的邊緣。存根網絡是網絡理論中的一個術語:存根網絡與相鄰網絡有一個連接,網絡有一個入口和出口。
當 Stub 網絡內的設備想要與其網絡外的設備通信時,數據包被轉發到路由器並執行 NAT 過程,將設備的內部專用地址轉換為公共、外部、可路由地址。
5.3 NAT 術語
如果深究網絡理論,那麼NAT就是一個內部網絡,就是要翻譯的一組子網。外部網絡是指所有其他網絡。
使用 NAT 時,IP 地址根據它們是在專用網絡上還是在公共網絡上(在 Internet 上)以及流量是傳入還是傳出而具有不同的名稱。
NAT包括四種類型的地址:
- 內部本地地址(Inside local address);
- 內部全局地址(Inside global address);
- 外部本地地址;
- 外部全球地址 (Outside global address);
在確定正在使用哪種類型的地址時,請務必記住 NAT 術語始終是從具有轉換地址的設備的角度應用的:
- 內部地址(Inside address)——被NAT轉換的設備地址;
- 外部地址——目標設備地址;
- 本地地址是網絡內部出現的任何地址;
- 全局地址是出現在網絡外部的任何地址。
讓我們用圖表示例來看一下。
左圖中的計算機有一個內部本地(Inside local)地址192.168.1.5
,從它的角度來看,Web 服務器有一個外部(outside)地址208.141.17.4
。當數據包從計算機發送到 web 服務器的全局地址時,PC 的內部本地( Inside local208.141.16.5
)地址被轉換為(inside global)。外部設備地址通常不會被轉換,因為它是一個公共 IPv4 地址。
值得注意的是,一台計算機有兩個地址:本地地址和全局地址,而 Web 服務器具有相同的公共 IP 地址。在他看來,源自電腦的流量來自於內部全局地址208.141.16.5
。NAT 路由器是內部網絡和外部網絡之間以及本地地址和全局地址之間的分隔點。
術語“內部”和“外部”與術語“本地”和“全局”結合使用以指代特定地址。在圖中,路由器配置為提供 NAT,並有一個公共地址池可分配給內部主機。
5.4 數據包路徑
如果你已經累了,那就去聽下一課吧。如果您仍然感興趣,那麼歡迎深入蟲洞。
下圖顯示了流量如何通過支持 NAT 的路由器從內部計算機發送到外部 Web 服務器、發送出去併中繼回來。
路由器 NAT 表 | |||
---|---|---|---|
個人電腦 | 網絡服務器 | ||
全球保險業協會 | 本地內部 | 本地以外 | 全球以外 |
208.141.17.4 | 192.168.1.5 | 208.141.16.5 | 208.141.16.5 |
內部本地地址- 從內部網絡看到的源地址。在圖中,地址192.168.1.5
被分配給計算機——這是它的內部本地地址。
內部全局地址 - 從外部網絡看到的源地址。圖中,當來自計算機的流量發送到位於 的 Web 服務器時208.141.17.4
,路由器會將內部本地地址(local address)轉換為內部全局地址(Inside global address)。在這種情況下,路由器將IPv4源地址從更改192.168.1.5
為208.141.16.5
。
外部全局地址 - 從外部網絡看到的目的地地址。這是分配給 Internet 上主機的全球可路由 IP 地址。在圖中,Web 服務器位於208.141.17.4
。大多數情況下,外部本地地址和外部全局地址是相同的。
外部本地地址 - 從內部網絡看到的收件人地址。在此示例中,計算機將流量發送到位於208.141.17.4
現在讓我們看看整個包路徑。具有該地址的計算機192.168.1.5
正在嘗試與網絡服務器通信208.141.17.4
。當數據包到達支持 NAT 的路由器時,它會讀取數據包的目標 IP 地址以確定數據包是否符合指定的轉換標準。在此示例中,源地址與條件匹配,並從192.168.1.5
(內部本地地址)轉換為208.141.16.5
(內部全局地址)。
路由器將這個本地到全局的地址映射添加到 NAT 表中,並將帶有轉換後的源地址的數據包發送到目的地。網絡服務器響應一個尋址到 PC 的內部全局地址 ( 208.141.16.5
) 的數據包。
路由器收到帶有目標地址的數據包208.141.16.5
,並檢查 NAT 表以查找該映射的條目。它使用此信息並將內部全局地址 ( 208.141.16.5
) 轉換回內部本地地址 ( 192.168.1.5
),數據包被重定向到 PC。
5.5 NAT的優缺點
NAT 服務是一個非常強大的解決方案,隨處可見。NAT 提供了許多好處,包括:
- NAT 維護註冊尋址方案,提供靈活的 LAN 操作。使用 NAT,內部主機可以為所有外部通信共享一個公共 IP 地址。這種類型的配置需要很少的外部地址來支持許多內部主機。
- NAT 增加了 Internet 連接的靈活性。可以實現多池、備份池、負載均衡池,提供可靠的公網連接。
- NAT 為網絡的內部尋址方案提供一致性。在不使用私有 IP 地址和 NAT 的網絡中,更改通用 IP 地址方案需要重定向現有網絡中的所有主機。主機轉發的成本可能很高。NAT 允許保留現有的 IPv4 專用尋址方案,同時允許輕鬆更改新的公共尋址方案。這意味著組織可以更改供應商,而不需要更改其任何內部客戶。
- NAT提供網絡安全。由於專用網絡不公佈其地址或內部拓撲,因此在與 NAT 結合使用以獲得受控的外部訪問時,它們仍然相當可靠。但是,您需要了解 NAT 並不能取代防火牆。
但是 NAT 有一些缺點。互聯網上的主機似乎直接與啟用 NAT 的設備而不是私有網絡內的實際主機對話這一事實產生了許多問題:
- 使用 NAT 的缺點之一與網絡性能有關,尤其是對於 VoIP 等實時協議。NAT 增加了交換延遲,因為數據包標頭中每個 IP 地址的轉換都需要時間。
- 使用 NAT 的另一個缺點是端到端尋址丟失。許多 Internet 協議和應用程序依賴於從源到目的地的端到端尋址。某些應用程序不適用於 NAT。使用物理地址而不是合格域名的應用程序無法到達通過 NAT 路由器轉換的目的地。有時可以通過實施靜態 NAT 映射來避免這種情況。
- 端到端 IPv4 跟踪也丟失了。跟踪在多個 NAT 躍點上經歷多個數據包地址更改的數據包更加困難,從而使故障排除變得困難。
- NAT 的使用也使 IPsec 等隧道協議變得困難,因為 NAT 會更改標頭中的值,這些值會干擾 IPsec 和其他隧道協議執行的完整性檢查。
- 需要從外部網絡啟動 TCP 連接的服務或無狀態協議(例如使用 UDP 的協議)可能會中斷。如果 NAT 路由器未配置為支持這些協議,則傳入數據包無法到達其目的地。
GO TO FULL VERSION