無法從內網透過公用 IP 存取站點

無法從內網透過公用 IP 存取站點

我在家裡的伺服器上託管一些網站/服務,例如 Jenkins。我希望可以透過公共網域從 Internet 和 Intranet 存取它們。為此,我註冊了一個指向我的(動態)公共 ipv4 的 noip 網域。路由器的連接埠轉送配置為將連接埠 NAT 到我的伺服器上。

所有這一切都工作正常,直到我上週末更換了網路供應商和路由器。

現在,我無法使用正在解析為我的公共 IP 的公共網域從 Intranet 連接到我的網站。

我測試過的:

  • 從內部網路 ping 公網網域解析正確的公網 ip -> 無 DNS 問題
  • 當使用公共網域名稱(或 IP)和正確的連接埠時,可以從網路存取站點
  • 使用公共網域名稱(或 IP)和正確的連接埠時,無法從 Intranet 存取網站。在這種情況下,瀏覽器顯示網路連線逾時錯誤(ERR_CONNECTION_TIMED_OUT)
  • 當使用內部 IP 和正確的連接埠(如目標連接埠轉送規則中指定)時,可以從 Intranet 存取站點

必須更改路由器上的哪些網路配置才能從 Intranet 正確路由此資訊?

路由器使用說明:https://www.sunrise.ch/content/dam/sunrise/residential/hilfe/internet/Sunrise_Home_User_Manual_Sunrise_Internet_Box_new_firmware_e.pdf

路由器設定: 在此輸入影像描述 在此輸入影像描述 在此輸入影像描述 防火牆目前已停用,以確保它不會引起問題: 在此輸入影像描述

這是我的帖子的重複:https://networkengineering.stackexchange.com/posts/59290

答案1

這主要是基於此類最常見問題的猜測答案。然而,為了完全確定,您需要實際調查伺服器所看到的內容(Wireshark/tcpdump 是很好的工具)。


同一子網路內的 DNAT(連接埠轉送)是非常有問題的,因為從伺服器到客戶端的返迴路徑通常會繞過路由器,並且沒有機會取消此回傳流量的 NAT。

為了解決這個問題,一些(但不是全部)路由器具有“NAT 環回”或“NAT 髮夾”選項。據我了解,此選項還對所有連接執行 SNAT,重寫客戶IP 位址並使伺服器認為所有連線都來自路由器本身。

如果沒有環回/髮夾,您的用戶端可以到達伺服器,但無法識別從伺服器到達的回應(因為 IP 位址不再匹配),因此永遠無法建立連線。

  • 如果您的路由器沒有此選項,但具有手動高級 NAT 配置,您可以自行建立類似的 NAT 規則 - 告訴路由器「偽裝」來自 LAN 並返回相同 LAN 的所有連接。

    (當然,這仍然具有向伺服器隱藏客戶端 IP 位址的相同缺點。)

  • 然而,恕我直言,最好的選擇(未經個人測試,但我沒有理由相信它不應該工作)是將伺服器放在不同子網從您的其他設備。只要伺服器返回客戶端的流量通過網關,就可以避免該問題 - 即使沒有 VLAN 分離且兩個子網路位於同一乙太網路上。

    上述內容也可以透過更改子網路遮罩或向伺服器添加自訂路由來實現。

相關內容