Routing

Wireshark:需要幫助了解 NAT 行為

  • November 9, 2016

我在家庭網路中有一台 PC,它位於執行 NAT 的路由器後面。我想在 PC 上設置一個 FTP 伺服器,所以我轉發了所有需要的埠等,現在它可以工作了。然後,出於好奇,我執行 Wireshark 來查看那裡執行的數據包。我使用路由器 WAN IP 連接到自己,這就是我所看到的:

這就是我看到的

這裡的 192.168.1.3 是我的 PC IP,95.105.xx 是我的路由器 WAN IP,192.168.1.1 是路由器 LAN IP。

我理解為什麼請求和回复都有 2 個副本——我在同一台機器上執行客戶端和伺服器。我在這裡不明白的是為什麼第二個和第三個數據包包含路由器 LAN IP。

當一個人連接到我的伺服器時,我看到:

這

如您所見,數據包僅包含我的 PC LAN IP 和此人的 IP。當我連接到其他伺服器時也是如此。

那麼,當我連接到自己時,為什麼路由器會回复它的 LAN IP 呢?

路由器無法保留源 IP 地址,因為這會導致返回流量直接通過 LAN 傳遞,而無需通過 NAT。並且僅將 NAT 應用於一個流量方向而不是另一個流量方向會中斷通信。

需要以將返回流量發送到路由器的方式選擇源 IP。這意味著它可以使用 LAN 之外的任何 IP 地址,並且連接會正常工作。

NAT 的一種方法是使用傳出介面的 IP 地址作為源 IP。在至少一種實現中,這被稱為偽裝。這將解釋你所看到的。從 LAN 到外部世界的連接被偽裝成路由器的 WAN IP。通過埠轉發從 LAN 連接到 LAN 的連接被偽裝成路由器的 LAN IP。

這種方法的另一個好處是,如果路由器的 WAN IP 發生變化,連接不會中斷。

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