IP地址的规划短则影响数年,长则影响数十年。20世纪90年代初的地址分配,在2021年给互联网造成了巨大了影响。然而当时没有人能预计到互联网如此迅猛发展,IPv4地址成为了稀缺资源。
4月24日,据华盛顿邮报和美联社报道,隶属于美国国防部的一个部门Defense Digital Service(简称 DDS),过去三个月,以注册在佛罗里达的 Global Resource Systems LLC 公司(GRS有限公司)名义,使用 BGP(边界网关协议) 向全球路由表宣告了属于美国国防部的地址段。所谓宣告地址,便是让这些地址可以在互联网上直接访问。
既然这些地址属于美国国防部,那他们开个公司在互联网上发布这些地址有什么问题呢?
对遵循网络协议,正常分配内网地址的网络没有影响。然而,使用公网地址的内部网络可能会遇到两个问题:
1.这种做法,破坏了互联网运行的规则,可能造成内网不能正常访问互联网服务。
2.配置不完善不安全的网络,会将本来仅限内部的数据包发送到互联网上去。
我们先来探讨一下为什么会出现在内网使用公网地址的现象。
大部分读者都知道国家最近两年在大力推进IPv6,目的是从根本上解决我国 IPv4 地址短缺的情况。IPv4 地址短缺是全世界面对的共同问题,而且不仅仅是互联网上 “公网” IPv4 地址短缺,各个NAT 机制后面的 “私网” IPv4 地址也存在严重的地址短缺,这种现象在大中型网络中更为明显。
下列地址在一月之前只是分配给了美国国防部,并没有使用BGP 向全球宣告。
这些地址范围,包括:
6.0.0.0 - 6.255.255.255
7.0.0.0 - 7.255.255.255
11.0.0.0 - 11.255.255.255
21.0.0.0 - 21.255.255.255
22.0.0.0 - 22.255.255.255
26.0.0.0 - 26.255.255.255
28.0.0.0 - 28.255.255.255
29.0.0.0 - 29.255.255.255
30.0.0.0 - 30.255.255.255
33.0.0.0 - 33.255.255.255
55.0.0.0 - 55.255.255.255
214.0.0.0 - 214.255.255.255
215.0.0.0 - 215.255.255.255
如果你管理一个大中型网络,且内部使用了上述地址,请立即在网络边界阻断对这些地址的访问,详细步骤见后文。
RFC 1918 规定了三个组织内部可以使用的私网地址段分别是:
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
其中最大 “私网” 地址段10.0.0.0 - 10.255.255.255,是大中型网络的首选。
第一段是 10 不变,第四段一般用于标识一个网络内的主机地址,第二第三段用于标识不同的部门或地理位置,所以第二段第三段合起来确定一个/24 的方便识别的子网。
这样的网络理论上最多承载 2^16 =65536 个子网,现实中的分配则相当粗旷,为了便于人类识别,往往为某个功能块分配几十个 /24 的子网,形如 10.20.20.0/24,10.200.20.0/24。组织结构稍微复杂一点或者经常变动,地址很快就不够分配了。
这时就会有很多网络工程师提出使用 1,2,3,4,5,6,7,8,9,11,20,30,40,50……等等开头看起来特殊的 IP 地址在内网使用。
这就是为什么有些网络内部会出现这些奇怪的地址。
现象1:内网不能正常访问互联网服务上述地址在互联网上使用 BGP 宣告之前,看起来是没有问题的。然而一旦这些地址开始在互联网上使用或出售继而开始通过BGP 宣告,很快这些地址就会开始承载各种互联网服务。
然而此时,组织内网络配置了这些本应属于公网地址的子网,用户渐渐会发现有一些网站打不开。这是因为数据包在流经内部网络路由器时,受路由条目的影响,在到达互联网出口之前,就被转发到内网对应网段,而这些网段往往是没有用户需要访问的服务的。
最经典的例子莫过于Cloudflare 在 2018 年开始使用 1.1.1.1 提供 DNS 服务,结果发现很多用户无法访问,除了一些运营商的配置问题外,很多网络设备操作系统或默认配置中存在包含1.1.1.1的路由。
现象2:仅限内部的数据包发送到互联网上述情况仅限于内网对应地址在互联网上提供了业务的情况,而美国国防部在互联网上发布自己的地址,那些地址并没有提供互联网服务,会有什么样的影响呢?
许多配置失误的网络,在同时满足以下几个条件时,本应属于内部的数据包会到达美国国防部控制的GRS 网络:
1.使用了不属于自己的地址段(此例中是美国军方地址)
2.内部网络路由表中并没有对应的条目
3.边界网络设备上并未配置对应的 ACL 或安全策略阻断这些地址
4.默认路由指向互联网接口,且能访问互联网
5.上游运营商没有对这些地址做特殊处理
眼尖的读者一定发现了,会有本来目的地在私有网络内的数据包到达美国国防部控制的网络,这存在严重的信息安全风险。
GRS 可以分析进入他们网络的所有数据包:
1.针对 TCP 会话,可以构建服务器响应客户端握手,进而获得泄漏出来的敏感数据;
2.UDP 是无连接协议,客户端发送敏感数据不需要事先与服务器端握手建立连接;
3.统计单个原地址发来数据包的目的地址和端口,可以构建该地址对应内网的服务器和端口列表。
根据公开信息,中国一些公有云、私有云和运营商内网中,存在不同程度的使用一些已经分配给国外政府、军队、公司的公网地址。可以想到,内网使用公网地址的模式长期运行,由于误配置造成的敏感数据流向互联网是必然发生的,目前也正在发生。
对于已经在内网开始使用公网地址的网络,网络管理员应该如何补救呢?
1.检查自己网络的路由表,找出既不属于 RFC1918、RFC3927、RFC6598 定义的地址范围,也不属于互联网运营商或 CNNIC、APNIC 等区域 NIC 分配给自己的公网地址。
2.如果存在上述地址,补救方案要分为两种情况:
1.与上级ISP使用BGP互联。在运行BGP的互联网边界路由器上,使用 route-map 等路由策略工具,在与ISP路由器相关的BGP配置中,双向过滤掉上述地址。同时使用黑洞路由在边界设备上将目的地是上述地址的数据包丢弃。
2.与ISP之间并无BGP关系,只是ISP的终端客户。在边界路由器或防火墙上,配置ACL、安全策略或黑洞路由,在边界设备上将目的地是上述地址的数据包丢弃。
3.在实施补救方案后,针对内部使用公网地址的情况,选择一个彻底修复的方案:
1.迁移内部应用到 IPv6,完全避免使用 IPv4 地址。注意IPv6的地址应该是正常渠道申请获得的。如果完全不需要访问互联网,可以使用IPv6 ULA地址段,即fc00::/7 的后半段地址 fd00::/8,使用方法参见 RFC4193。
2.无法迁移到IPv6或预计使用时间不会超过5~10年的应用,制定IP重新分配规划,过渡期使用NAT帮助平滑过渡。
4.未来网络地址规划要考虑以下几点:
1.不要盗用已经分配给他人的 IP 地址
2.新建网络首选 IPv6 单栈结构
3.无论 IPv4 还是 IPv6 都应该在二进制边界划分地址段
4.明确内部地址范围,在网络边界配置安全策略,防止地址伪造和数据泄露
(IANA IPv4 Special-Purpose Address Registry)
(IANA IPv6 Special-Purpose Address Registry)
结语IP地址的规划短则影响数年,长则影响数十年。20世纪90年代初的地址分配,在2021年给互联网造成了巨大了影响。然而当时没有人能预计到互联网如此迅猛发展,IPv4地址成为了稀缺资源。
抱着侥幸心理使用他人拥有的地址,破坏了互联网运行的规则,一方面随着当年IPv4地址的转让出售,会形成未来互联互通的障碍,另一方面对自身造成了极大的信息安全风险。
关于 2020 年 6 月份有关美国国防部要出售这些IPv4 地址块的消息及后续:
处理掉IPv4 地址众议院修正案包含一项规定(第1088条)。
这将要求美国国防部在十年时间陆续出售一些IPv4 地址块。
参议院法案中没有类似规定。
众议院退却。
出处:
https://www.congress.gov/congressional-report/116th-congress/house-report/333/1
参考链接1.华盛顿邮报报道(订阅用户可用)https://www.washingtonpost.com/technology/2021/04/24/pentagon-internet-address-mystery/
2.美联社报道 “The big Pentagon internet mystery now partially solved”:https://apnews.com/article/technology-business-government-and-politics-b26ab809d1e9fdb53314f56299399949
3.NANOG(北美网络工程师讨论组)邮件列表:https://mailman.nanog.org/pipermail/nanog/2021-March/thread.html#212569
4.给美国国防部的A类地址(维基百科):https://en.wikipedia.org/wiki/List_of_assigned_/8_IPv4_address_blocks#List_of_assigned_/8_blocks_to_the_United_States_Department_of_Defense
5.目前GRS在全球路由表中宣告的地址段:https://bgp.he.net/AS8003#_prefixes
6.Cloudflare 博客《全球修复 1.1.1.1 的可达性》(英文):https://blog.cloudflare.com/fixing-reachability-to-1-1-1-1-globally/
7.IANA已分配的IPv4地址:https://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.xhtml
8.IPv4 特殊地址:https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml
9.IPv6 特殊地址:https://www.iana.org/assignments/iana-ipv6-special-registry/iana-ipv6-special-registry.xhtml
10.RFC1918:规定了 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 三个地址段
11.RFC3927:规定了 IPv4链路本地地址段 169.254.0.0/16
12.RFC6598:规定了 CGNAT使用的 100.64.0.0/10 地址段
13.RFC4193:本地唯一 IPv6 单播地址(英文)https://tools.ietf.org/html/rfc4193