Ip

從沒有 NAT 的私有網路訪問具有公共 IP 的伺服器

  • January 15, 2020

是否可以從專用網路訪問沒有 NAT 的公共伺服器(即具有公共 IP 地址的伺服器)?換句話說,如果我將公共地址分配給伺服器,將私有地址分配給 Intranet 中的主機,Intranet 是否可以提供公共服務?

不。

私有網路很可能能夠將數據包發送到公共 IP 地址(假設私有網路有一個正確配置的路由器,該路由器在公共網際網路和私有內部網路上都有一個介面)。但是公共網際網路上的伺服器將無法將回復發送回未經過 NAT 處理的專用網路,原因很簡單,因為伺服器不知道將響應數據發送到哪裡。

為了讓電腦在網路上相互通信 IP,它們必須知道正在與之通信的其他人的 IP 地址,以及獲取該 IP 地址的下一步是什麼。如果 IP 地址在同一子網中,那麼您的電腦將只詢問本地子網上的“誰擁有 IP 地址 wxyz”,然後直接與響應的電腦對話。如果 IP 不在同一子網上,則電腦將按照其路由表中的說明進行操作(通常,將數據包發送到 IP 配置中列為“預設網關”的本地路由器)。

每個接收到數據包的網路間節點(此時通常是路由器)都會查看目標 IP 地址,並做出類似的決定,以確定誰是鏈中的下一跳,將把這個數據包傳遞到最終目的地。不停地,直到它最終到達它應該到達的地方。

但這一切都依賴於數據標頭中列出的目的地(正如 IP 協議中所要求的那樣),並且網關和路由器知道如何將數據發送到 IP 所屬的網路。如果你有一個非 NAT-ed 私有 IP 地址,那麼那些路由器將不知道如何傳遞數據包,它們會丟棄它。它變成了永遠消失的“死信”的電子等價物。

NAT 所做的是使用公共 IP 地址(或地址es)作為前鋒來代理您的專用網路的通信。當它看到出站流量時,它會更改標頭的“在此地址回复我”部分以使用自己的公共 IP;並且 NAT 設備會保留一個查找表,說明它正在為誰中繼通信,以便當響應進來時,他可以將它們轉發到專用網路上的正確 IP。如果沒有該地址轉換功能,專用網路上的電腦就無法與公共 Internet 上的電腦進行 TCP/IP 通信。

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