Domain IP Lookup

公网与私有地址空间

公网 IP

192.0.2.10

全球唯一,可从任何地方路由

私有地址段

10.0.0.0/8172.16.0.0/12192.168.0.0/16

无法在公共互联网上路由

DNS 基础

公网 IP 与私有 IP 地址:有什么区别?

3 分钟阅读

查看您的网络设置,可能会看到 192.168.1.5。而访问一个显示您 IP 地址的网站,它给出的却是完全不同的地址。两者都没错,您确实同时拥有两个地址,只是它们作用的范围不同。

公网与私有地址空间

公网 IP

192.0.2.10

全球唯一,可从任何地方路由

私有地址段

10.0.0.0/8172.16.0.0/12192.168.0.0/16

无法在公共互联网上路由

私有地址段在全球每个网络中都被重复使用。公网地址则是全球唯一的。

两种范围

私有 IP公网 IP
范围仅限您的本地网络整个互联网
是否唯一?仅在您的网络内唯一全球唯一
由谁分配您的路由器(DHCP)您的运营商或托管服务商
能否在线路由?不能,路由器会丢弃能
示例192.168.1.593.184.216.34
谁能看到您网络中的设备您访问的每一个网站

核心要点

私有地址同时在数百万个互不相干的网络中被重复使用,并且永远不会在互联网上被路由。公网地址是全球唯一的,也是互联网实际用来找到您的地址。

保留的私有地址段

RFC 1918 划出了三个 IPv4 地址块供私有使用。任何人都可以在内部使用它们,而公共互联网上的任何路由器都不会转发它们。

地址段地址数量典型使用者
10.0.0.0/81670 万大型企业网络、云 VPC
172.16.0.0/12100 万中型网络、Docker 默认设置
192.168.0.0/1665,536家庭和小型办公室路由器

另外还有几个地址段被保留用于相关用途,同样永远不会作为合法的公网应答出现:

  • 127.0.0.0/8:环回。127.0.0.1 永远指向您自己的机器。
  • 169.254.0.0/16:链路本地,在 DHCP 失败时自行分配。看到这类地址,通常意味着您的设备无法连接到路由器。
  • 100.64.0.0/10:运营商级 NAT,供无法为每位用户提供公网地址的运营商使用。

NAT:私有地址如何仍能访问互联网

如果私有地址无法被路由,那么位于 192.168.1.5 的笔记本电脑是如何加载网站的呢?答案是由您的路由器执行的网络地址转换。

  1. 您的设备发送一个数据包

    源地址为 192.168.1.5,目的地址是该网站的公网地址。

  2. 路由器改写源地址

    它把私有源地址替换为自己的公网地址,并把这次替换记录在转换表中,同时附上一个端口号。

  3. 网站向路由器回复

    在服务器看来,它是在与您路由器的公网地址通信,对您的笔记本电脑一无所知。

  4. 路由器转换回来

    它查阅转换表,找出该端口属于哪台内部设备,改写目的地址,并转发给 192.168.1.5。

这就是为什么您家中的每台设备在网站看来都是同一个地址,也是为什么 IP 地址标识的是一次连接,而不是一个人。

查找您的两个地址

您的私有地址

Windows
ipconfig
macOS / Linux
ip addr show
# or, on macOS:
ifconfig | grep "inet "

您的公网地址

您无法从自己的网络内部发现它,必须向网络之外的某个对象询问,这正是“我的 IP 是什么”类服务所做的事。在终端中可以这样查询:

询问外部服务
curl ifconfig.me

为什么域名绝不应该解析到私有地址

一个公共域名解析到 10.0.0.5 或 127.0.0.1,要么是配置错误,要么是有意为之,无论哪种情况,对任何会解析用户所提交域名的服务来说,都是个问题。

这种攻击很简单:把您控制的某个域名指向 169.254.169.254,提交给一个在服务端获取 URL 的服务,该服务就会替您读取它自己的云元数据。DNS 重绑定的变种则让记录在验证检查和实际获取之间发生变化。

防御办法是验证解析出的地址,而不是提交的主机名,这正是本站所做的,也是为什么解析到内部地址的域名只会显示为无法解析,而不会泄露这一细节。工作原理页面介绍了完整的验证链。

需要查看某个域名的公网 DNS 地址?使用 Domain IP Lookup 工具。

本主题的免费工具

常见问题