如何將本機 IP 位址與公用 IP 位址分開?

如何將本機 IP 位址與公用 IP 位址分開?

像 ping 這樣的工具或使用 tcp/ip 協定的任何其他工具如何知道 192.168.1.1 或 10.0.0.1 是本地 IP 位址,而 8.8.8.8 或 74.142.23.95 是公用 IP 位址? 192.168.xx 和 10.0.xx 是否經過硬編碼以保留供本地使用?

答案1

嗯,他們是預訂的經過RFC 1918用於專用網路。

但這其實並不重要。您可以從 RIPE 或其他地方獲取一塊「公共」IP 位址,並將其用於您的專用網絡,一切仍然有效。僅出於政治原因需要保留,以允許管理員毫無困難地建立自己的專用網路。

類似的工具ping 不管地址是「私有」、「本地」還是「公共」。他們只是將資料包發送到給定的地址,然後您的作業系統會查看路由表決定下一步將其發送到哪裡。

例如,當您在 Windows 上設定具有 IP 位址10.2.3.4/16(網路遮罩格式:255.255.0.0)和閘道的乙太網路卡時10.2.0.1,它會將下列項目新增至路由表:

  • 10.2.3.4/32(網路遮罩255.255.255.255)到介面Loopback

    (您自己的位址始終透過環回介面路由,它們永遠不會進入網路。)

  • 10.2.0.0/16(網路遮罩255.255.0.0)到介面Local Area Connection

    (根據定義,您自己子網路中的位址是本機位址。)

  • 0.0.0.0/0(網路遮罩0.0.0.0)到網關10.2.0.1

    (其他一切都不是本地的。)

換句話說,你告訴作業系統此範圍內的所有位址10.2.0.0/16都是本機位址,作業系統負責處理一切。


查看路由表:

  • 在 Linux 上,ip route(IPv4) 和ip -6 route(IPv6)
  • 在 Windows 上,route print(≤XP 上的 IPv4,≥Vista 上的 v4/v6)
  • 在 Windows XP 上,netsh interface ipv6 show route(IPv6)
  • 在 Windows、Linux、BSD 和其他類 Unix 系統上,netstat -r -n(IPv4)
  • 在 Linux 和一些類別 Unix 系統上,netstat -r -n -6(IPv6)

可以使用相同的工具來編輯路由表。例如,要將所有標記172.16.0.0/16為本機,您可以在 Linux 上使用ip route add 172.16.0.0/16 dev eth0

答案2

RFC 中定義了公有和私有 IP 位址。這些是私有 IP 位址:

10.0.0.0/8

172.16.0.0/12

192.168.0.0/16

這些 IP 位址也是環回的:

127.0.0.0/8

其他的是公開的。

大多數工具不需要知道公有或私人 IP 位址。

相關內容