目錄

簡介

背景資訊

需要NAT穿越

適用於NAT的作業階段遍歷公用程式

NAT實施型別

NAT穿越和對稱NAT問題

問題的解決方案

摘要

簡介

本檔案介紹NAT(STUN)伺服器對作業階段穿越公用程式的需求、有關STUN伺服器的網路位址轉譯(NAT)設定的類型、NAT如何導致此設定中的問題以及解決方案。

背景資訊

NAT裝置的主要用途是允許區域網(LAN)中具有私有IP地址的裝置與公共地址空間（例如Internet）中的裝置通訊。但是，雖然NAT裝置應該允許內部主機與公共空間連線，但是當涉及到點對點(P2P)應用程式(例如VoIP、遊戲、WebRTC和檔案共用，終端使用者需要同時充當客戶端和伺服器來維持雙向端到端通訊時，NAT為建立這些UDP連線提供了困難。通常需要NAT遍歷技術才能使這些應用程式正常運行。

需要NAT穿越

Internet上的即時語音和影片通訊 是 主流 現在，支援網路電話(VoIP)呼叫的即時消息收發器(IM)非常流行。VoIP最初採用的一個巨大障礙是，大多數PC或其他裝置都位於防火牆後面，並使用私有IP地址。網路中的多個私有地址（IP地址和埠）由防火牆對映到單個公有地址，該防火牆具有 NAT. 但終端裝置不知道其公有地址，因此無法在其VoIP通訊中通告的私有地址上接收來自遠端方的語音流量。

單方面 自地址固定(UNSAF)過程是一些始發端點嘗試確定或修復另一個端點已知的地址（和埠）的過程，例如，要能夠 u使用協定交換中的地址資料或通告其接收連線的公有地址。

因此，正在討論的P2P連線是UNSAF進程。 一種常見的P2P應用建立對等會話並保留的方法 NAT友好型是指使用可公開定址的集結伺服器 註冊和對等體發現。

適用於NAT的作業階段遍歷公用程式

根據RFC 5389,STUN提供了處理NAT的工具。它為端點提供了一種方法，可確定由NAT裝置分配的IP地址和埠，該IP地址和埠與其私有IP地址和埠相對應。它還為端點提供保持NAT繫結活動狀態的方法。

NAT實施型別

已經觀察到，UDP的NAT處理方法因實施而異。實施中觀察到的四種處理方法是：

全錐：全錐NAT是指將來自相同內部IP地址和埠的所有請求對映到相同外部IP地址和埠的NAT。此外，任何外部主機都可以向內部主機傳送資料包，並將資料包傳送到對映的外部地址。

受限錐：受限錐NAT是指將來自相同內部IP地址和埠的所有請求對映到相同外部IP地址和埠的NAT。與全錐NAT不同，外部主機（IP地址為X）只有在內部主機之前向IP地址為X傳送資料包時，才能向內部主機傳送資料包。

埠限制錐：埠限制錐NAT類似於限制錐NAT，但限制包括埠號。具體來說，只有當內部主機之前向IP地址X和埠P傳送了資料包時，外部主機才能將包含源IP地址X和源埠P的資料包傳送到內部主機。

對稱：在對稱NAT中，來自同一內部IP地址和埠到特定目標IP地址和埠的所有請求對映到同一外部IP地址和埠。  如果同一主機傳送的資料包具有相同的源地址和埠，但目的地不同，則使用不同的對映。  此外，只有接收資料包的外部主機才能將UDP資料包傳送回內部主機。

考慮源(A、Pa)（其中A是IP地址，Pa是源埠）通過NAT裝置與目標(B、Pb)和(C、PC)通訊的拓撲。

NAT實施型別

公用 源時間 目的地為(B、Pb)

公共源，目標為(C、Pc)

可以目標(例如： (B、Pb)將流量傳送到(A， Pa)?

全圓錐面

(X1,Px1)

(X1,Px1)

是

受限圓錐體

(X)1，畫素1)

(X)1，畫素1)

僅當(A， Pa)首先將流量傳送到B

埠限制圓錐體

(X)1，畫素1)

(X)1，畫素1)

僅當(A， Pa)首先將流量傳送到(B， Pb)時

對稱

(X)1，畫素1)

(X2,Px2)

僅當(A， Pa)首先將流量傳送到(B， Pb)時

NAT穿越和對稱NAT問題

STUN伺服器響應STUN客戶端傳送的STUN繫結請求，並提供客戶端的公共IP/埠。現在，此地址/埠 組合由STUN客戶端在其對等通訊中使用 訊號. 但是，現在， 終端主機 使用相同的私有地址/埠(假定為 繫結 到公共IP/埠 在STUN響應中提供)NAT裝置將其轉換為同一個IP，但如果是對稱NAT，則轉換為不同的埠 示例我ntation 已使用。這將中斷UDP通訊，因為 訊號 已根據p上一個埠。

Cisco IOS® routers' NAT 示例我ntation 當它執行PAT時，預設情況下是對稱的。 其他efore中，您會看到這些UDP連線問題 執行ping操作的路由器 NAT。

但是，Cisco IOS-XE路由器執行PAT時的NAT實施不對稱。當您傳送兩個不同的 如果流具有相同的源IP和埠，但流向不同的目標，則源會被NATED到相同的內部全域性IP和埠。

問題的解決方案

根據此描述， 很顯然， 如果執行 獨立於端點 對映。

根據RCFC 4787: 使用 端點獨立對映(EIM),NAT對從同一內部IP地址和埠(X:x)，傳送到任何外部IP地址和埠。

從客戶端上，當終端主機在兩個不同的終端視窗上運行命令nc -p 23456 10.0.0.4 4000和nc -p 23456 10.0.0.5 5000時，如果使用EIM，以下是NAT轉換的結果：

Pro Inside global       Inside local             Outside local        Outside global

tcp 10.0.0.1:23456   192.168.0.2:23456  10.0.0.4:40000 10.0.0.4:40000

tcp 10.0.0.1:23456   192.168.0.2:23456  10.0.0.5:50000 10.0.0.5:50000

在這裡，您可以看到，無論目的地連線埠/位址如何，具有相同來源位址和連線埠的不同流量都會轉換為相同位址/連線埠。

在Cisco IOS路由器上，可以使用命令啟用端點不相關的埠分配 ip nat service enable-sym-port。

https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/ipaddr_nat/configuration/15-mt/nat-15-mt-book/iadnat-fpg-port-alloc.html

摘要

當您使用埠地址轉換(PAT)時，Cisco IOS NAT實施預設情況下是對稱的，當它通過P2P UDP流量時，可能會引起問題，該流量需要伺服器（如STUN）進行NAT穿越。您需要在NAT裝置上顯式配置EIM才能使此工作正常進行。