Domain IP Lookup

公网与私有地址空间

公网 IP

192.0.2.10

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

私有地址段

10.0.0.0/8172.16.0.0/12192.168.0.0/16

无法在公共互联网上路由

安全

为什么私有 IP 地址段绝不应该公开解析

3 分钟阅读

RFC 1918 划出了三个 IPv4 地址段,即 10.0.0.0/8、172.16.0.0/12 和 192.168.0.0/16,专门供私有网络内部使用,原因恰恰是公共 IPv4 地址不够让每个私有网络中的每台设备都拥有全球唯一的地址。这些地址段同时在全球数百万个互不相关的网络内部被重复使用。您家里的路由器几乎肯定分发的是 192.168.x.x 的地址,几乎所有其他人的路由器也是如此。

公共域名解析到这个范围意味着什么

由于这些地址只在发出查询的那个本地网络内才有意义,所以解析到其中之一的公共域名,往好了说是配置错误,往坏了说则是有意让面向公众的系统,向其自身内部网络中恰好位于该地址的任何设备发起请求。公共互联网根本不知道 10.0.0.5 究竟指的是什么,它会因发出查询的网络不同而对应不同的机器。

地址段名称为什么要屏蔽
10.0.0.0/8私有(RFC 1918)在数百万个互不相关的网络内部被重复使用
172.16.0.0/12私有(RFC 1918)同上
192.168.0.0/16私有(RFC 1918)同上,是常见的家用路由器地址段
127.0.0.0/8环回指向发出查询的机器自身
169.254.0.0/16链路本地包含 169.254.169.254,即云元数据端点
100.64.0.0/10共享地址空间(RFC 6598)运营商级 NAT,常常被手写的屏蔽列表遗漏
0.0.0.0/8未指定不是真正可路由的目的地
192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24文档用地址段保留用于示例,绝不会用于实际环境
  • 合法的公共域名没有任何理由解析到私有地址段内的地址,如果看到这种情况,应当把它视为值得调查的信号,而不是正常的结果。
  • IPv6 也有自己对应的私有或保留地址段,即唯一本地地址(fc00::/7)和链路本地地址(fe80::/10),需要同样的处理。

在解析环节就过滤掉这些地址段,而不是相信看起来像公共域名的域名总会解析到看起来像公网的地址,是任何代表用户解析域名的工具应当达到的基本要求。

大多数屏蔽列表会忘记的地址段

100.64.0.0/10,即 RFC 6598 所定义的“共享地址空间”,其知名度远不及 10.0.0.0/8 或 192.168.0.0/16,尽管它在公共互联网上同样无法路由。它专为运营商级 NAT 而存在,让运营商可以在内部为大量用户连接编址,而不必为每一个连接都占用公共 IPv4 空间。由于它比经典的 RFC 1918 地址段更新、知名度更低,它是手写屏蔽列表中最常被遗漏的一个,而这正是只有当有人故意把域名指向其中的地址时,才会暴露出来的那种漏洞。

“故障关闭”与列表本身同样重要

屏蔽列表的好坏,取决于当地址完全无法解析时会发生什么。格式错误的输入、不常见的写法,或者无法清晰匹配任何已知地址段的值,都不应默认被当作“大概没问题”,安全的默认做法是拒绝任何无法确定归类为公网的地址,而不是只拒绝明确匹配已知恶意地址段的地址。这种“故障关闭”的姿态,才能让屏蔽列表对付那些还没人想到要添加的地址段,而不只是列表上已有的那些知名地址段。

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

本主题的免费工具