
假設 Google HTTP 伺服器的 IP 位址是111.111.111.111
,並且我的電腦在 LAN 內分配了該 IP 位址。
我知道如果我訪問localhost
,計算機知道它正在訪問自己,並且可能不會去詢問路由器/網關,我想?
但是,如果我存取網路管理員指派的 LAN IP 位址,與存取相比,會發生什麼事localhost
?
它會詢問路由器/網關eg111.111.111.111
是誰嗎?路由器能否欺騙/告訴它111.111.111.111
在 LAN 之外並告訴它出去尋找它?更準確地說,NAT111.111.111.111
真的可以將 LAN 路由到公共嗎111.111.111.111
?
我問這個問題是因為我認為我的ISP 給了我一個公共IP 作為LAN IP 位址(我真正連接到該公共IP 的可能性較小),所以我想知道我上面描述的詳細資訊以及我的要求是否可以實現。
答案1
但是,如果我存取網路管理員指派的 LAN IP 位址,與存取 localhost 相比,會發生什麼事?
它會向路由器/網關詢問 111.111.111.111 是誰嗎?
不會。
例如,在 Linux 系統上,這是透過路由表發生的 - 如果您查看該local
表,您將看到所有指派的 IP 位址都具有指向「lo」介面的 /32 路由。
在其他作業系統(例如 Windows 或 BSD)中,該機制可能更加不透明,但最終結果是相同的。 (唯一的例外是使用「監獄」、「容器」、「網路命名空間」或「VRF」時 - 每個實例僅識別自己的 IP 位址,而不是屬於其他監獄/容器的 IP 位址。)
地址是「公共」還是「私人」並不重要。
路由器是否可以欺騙/告訴它 111.111.111.111 在 LAN 之外並告訴它出去尋找它?更準確地說,NAT 能否將 LAN 111.111.111.111 路由到公共(真正的 111.111.111.111)?
如果它與您電腦的 IP 位址完全相符 – 則不會。計算機甚至不會先聯絡路由器。
如果它是在同一子網路中作為您電腦的 IP 位址 – 可能,但有困難。除了 NAT 之外,路由器還需要 Proxy-ARP。理論上,Linux iptables 應該可以做到這一點,但我不確定是否有任何最終用戶路由器內建了該功能。
我問這個問題是因為我認為我的 ISP 為我提供了一個公共 IP 作為 LAN IP 位址(我真正連接到該公共 IP 的可能性較小)
ISP 發佈公用 IP 位址是正常的,這是因為 ISP 一般不發布區域網路IP 位址:這是路由器的工作。 ISP 僅提供此路由器的初始設定(並且僅當設備本身由 ISP 提供時)。路由器本身,當然,從 ISP 取得其位址。
所提供的設備有可能實際上只是一個網橋(或橋接模式下的路由器),在這種情況下接收公共 IP 位址是完全正常的。
也就是說,一些 ISP 以「借用」以前未使用的 IP 空間而聞名。例如,範圍 1.0.0.0/8 多年來幾乎無人使用(直到 CloudFlare 發現它),因此各種網路管理員有時決定將其用作標準私人位址範圍的擴展。在這些情況下,最好聯絡客戶服務並提交特定投訴,說明您無法在重疊地址聯繫某些特定服務。
(請注意,範圍 100.64.0.0/10 不是公開的,恰恰相反。這是一個私有範圍,僅在 ISP 及其客戶之間使用,在他們沒有任何公用 IP 位址。
答案2
您的電腦將使用網路管理員設定的 DNS 機制,因為路由在到達任何類型的外部 DNS 之前都會經過其基礎架構。因此,如果您的管理員出於某種原因分配了一個他們不應該擁有的內部 IP 位址,並且該 IP 位址通常會轉到外部位置 - 您的電腦將被路由到該內部系統。
雖然 ISP 有幾種不同的方法來分配公共 IP 位址,但簡單的答案是:他們不是會給你一個被另一個外部地方使用的IP位址。大多數情況下,這是由DHCP 處理的,因此一旦公共IP 變得不活動或其租約已過期,該IP 可能會被重新分配(這就是DNS 很重要的一個很好的原因- 特別是如果您不是某個主要的擁有一組靜態 IP 位址的公司)。
因此,稍微不同地重申:如果您的路由器告訴您的電腦位於111.111.111.111
LAN 之外,您的電腦將遵循該路由,直到外部系統將其發送到111.111.111.111
(如果存在),該系統應該隻公開分配到一個地方。