Nat

從 NAT 後面的私有 IP ping 到公共 IP 是如何工作的

  • December 21, 2015

最近我意識到 ICMP 不包含任何埠,所以我嘗試從無線連接的筆記型電腦 Ping 到公共 IP(當然它工作了!)。

在典型配置中,本地網路使用指定的“私有”IP 地址子網之一 (RFC 1918)。該網路上的路由器在該地址空間中有一個私有地址。路由器還通過網際網路服務提供商分配的“公共”地址連接到網際網路。當流量從本地網路傳輸到 Internet 時,每個數據包中的源地址會即時從私有地址轉換為公共地址。路由器跟踪有關每個活動連接的基本數據(特別是目標地址和埠)。

我的路由器是否有專門的 ICMP 數據包空間?

ICMP 報頭

它只有 4 個欄位:“類型”、“程式碼”、“校驗和”和“數據”。僅添加額外數據似乎是可行的解決方案。請在回答時提供來源,因為我找不到它們。感謝您的時間:)

這裡缺少的資訊是位於 8 字節 ICMP 標頭中的標識符(又名查詢 ID) - 請參閱https://en.wikipedia.org/wiki/Ping_(networking_utility)#Echo_request。當多個內部主機同時 ping 同一個外部主機時,它們很可能會使用不同的查詢 ID。

這用於代替路由器 NAT 表中的 TCP/UDP 埠號,以便返回的回复可以與初始請求匹配並發送回正確的內部主機(以及基於外部的通常匹配)全球地址)。

另見https://www.rfc-editor.org/rfc/rfc5508#section-3.1

引用自:https://serverfault.com/questions/744229