Nat

無埠轉發訪問伺服器

  • April 13, 2015

首先,我知道之前有人 過這個問題

然而,似乎這些都還沒有一個完整的解決方案。我的問題基本上是一樣的。我有一個連接到 wifi 網路的設備,我還在埠 8080 上設置了一個伺服器,但是由於 NAT 路由器的工作方式,無​​法向單個設備發送請求,因為它與許多其他電腦共享一個公共 IP .

接受的答案提到了多種解決方法,但似乎這種必要的功能需要以某種合法的形式存在。(例如,注意影片遊戲。即使客戶端仍然需要發送數據包,我還沒有看到我的遊戲自己在我的路由器上進行任何埠轉發。)

事實上,幾乎任何與 Internet 互動的應用程序都需要從 Internet 接收數據和請求,而無需轉發埠。這是怎麼做到的?

連接跟踪。

如果設備從 NAT 內部連接到外部,則允許來自外部系統的相關數據包進入。在某些情況下,這可以通過 TCP 和 UDP 完成。

儘管在 NAT 到位時流量可以雙向流動,但重要的區別是,如果沒有埠轉發,伺服器無法“偵聽”來自該網路外部主機的特定埠上的新連接。

以瀏覽網頁時為例。這裡的重點是您的瀏覽器是客戶端;它正在連接到另一個正在偵聽埠 80 的 Web 伺服器。一旦建立連接,是的,流量可以雙向流動。但是,如果沒有某種形式的埠轉發,就不可能進行相反的操作並在您的網路中執行一個可以以相同方式“偵聽”連接的 Web 伺服器。

建立連接後,流量可以雙向流動的原因是 EEAA 提到的連接跟踪。路由器維護 NAT/PAT 轉換錶,使它們能夠跟踪“誰在對誰說話”。

因此,總而言之,應用程序“偵聽”和“接受”連接的能力是在沒有埠轉發的情況下無法實現的。如果您無法進行埠轉發(即使使用“DMZ 主機”類型的功能),那麼恐怕您將無法解決問題。

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