在一次跟踪路由的网络操作时发现自己路由器下一跳路由节点的 IP 地址比较奇怪,是100.64.0.1
。好奇促使我查询了这个 IP 地址的归属,结果是保留地址,到这里觉得比较奇怪了,按照常理以 IPv4 为例保留的 IP 地址一般为以下几种,常用于内网通讯或者特殊用途:
地址块 | 起始 | 结束 | 备注 |
---|---|---|---|
10.0.0.0/8 | 10.0.0.0 | 10.255.255.255 | 局域网分配 |
172.16.0.0/12 | 172.16.0.0 | 172.31.255.255 | 局域网分配 |
192.0.0.0/24 | 192.168.0.0 | 192.168.255.255 | 局域网分配 |
169.254.0.0/16 | 169.254.0.0 | 169.254.255.255 | 两台主机对等连接,当 Windows 获取不到 IP 地址的时候会自动分配此类地址 |
127.0.0.0/8 | 127.0.0.0 | 127.255.255.255 | 回环 (loopback) 地址,表示本机 |
255.255.255.255/32 | 255.255.255.255 | 255.255.255.255 | 广播地址 |
这个 100.64
开头的 IP 地址又是什么鬼?搜索 维基百科的 Reserved IP Address 词条 才发现原来教科书上介绍的只是部分保留地址,整个保留地址家族的成员还是比较多的,那么 100.64
打头的 IP 地址对应地址块为100.64.0.0/10
,地址范围为100.64.0.0
~100.127.255.255
,共包含有 4,194,304 个 IP 地址,这个保留地址也是用于内网,但是这个内网不是一般内网而是Carrier-grade NAT,这个英文对应的翻译是“运营商级 NAT”。进一步搜索得知 2012 年 4 月的 RFC 6598 (IANA-Reserved IPv4 Prefix for Shared Address Space) 将100.64.0.0/10
(Shared Address Space) 地址块,用于给运营商 ISP 使用:
NetRange: 100.64.0.0 - 100.127.255.255
CIDR: 100.64.0.0/10
OriginAS:
NetName: SHARED-ADDRESS-SPACE-RFCTBD-IANA-RESERVED
NetHandle: NET-100-64-0-0-1
Parent: NET-100-0-0-0-0
NetType: IANA Special Use
据此可以推断出电信的黑科技实际上是使用了一个类似路由的设备将我们的网络组织成一个局域网,再通过网址转换 NAT 技术来实现网络通信,可以这么理解吧,我们以前通过 PPPoE 拨号获取的是随机分配的公网 IP 地址,这个 IP 地址是完全可以被互联网上任何设备访问的无障碍地址,但是现在通过拨号获取的只是一个内网地址,也就是说我们自己的路由器或者电脑拨号连接到了电信运营商的“大路由器”上,再也没有公网 IP 地址了。
为什么电信要使用这种方式来管理用户上网?首先我们要知道 IPv4 地址已经告枯竭,2011 年 2 月 4 日全球顶级 IP 地址分配机构 IANA 分配完了最后 5 个 A 级地址块,因此 IANA 宣告 IPv4 地址告罄。2011 年 4 月 15 日,APNIC 宣布其剩余的可自由分配的 IPv4 地址已全部分配完毕,亚太地区进入 IPv4 地址耗尽阶段。随后几个月,中国各大运营商从 APNIC 以会员资格申请到了最后的几个 C,至此各运营商也陷入了 IPv4 地址耗尽的困境。由于 IPv6 技术进展缓慢,为了解决 IPv4 耗尽对电信企业日益增长的用户对于网络需求的影响,NAT444/NAT44 的方案由此诞生。
NAT444/NAT44 方案说白了就是将过去每个宽带用户独立分配公网 IP 的方式改为分配内网 IP 给每个用户,运营商再对接入的用户统一部署 NAT 设备,NAT 的作用就是将用户网络连接发起的内网 IP,以端口连接的形式翻译成公网 IP,再对外网资源进行连接。这样做以后,可以实现多个用户共享一个 IP 地址,在技术实现原理上和我们家用的路由器一样,其中 NAT444 对应传统宽带用户,NAT44 则对应 3G 或者 4G 移动上网终端。
这样做的好处显而易见,首先延缓了 IPv4 耗尽对电信业务带来的威胁并进一步为 IPv6 技术部署留足时间,其次是内网保护,所有接入互联网的主机都不再直接接入,而是出于电信 NAT 设备的保护之下,没有独立的公网 IP,所有端对端的远控软件将会失效,比如以前的灰鸽子木马,由于主机丧失了公网 IP,灰鸽子反弹的 IP 地址将是电信 NAT 设备所使用的公网 IP,黑客无法以此定位到中了灰鸽子木马的具体主机,不过这不影响第三方端口转发的远控软件,比如 TeamViewer,但是对传统远控软件杀伤力是巨大的。最后增强了隐私保护,对于远端的网站通过 IP 地址跟踪等形式采集用户数据,或者以后台记录 IP 的形式定位用户身份的行为将不再有效,因为这个 IP 地址可以同一时间段内被大量用户所使用,所以部分广告商可能需要修改广告跟踪代码的相关逻辑,这边顺带说一句并不意味着处于电信 NAT 保护的用户可以做违法的事情,比较电信公司不是傻瓜,电信级 NAT 设备会有日志记录系统,所以处于其下的网络设备的上网流量都是得到有效审计的。
这样做的坏处是什么呢?首先丧失了公网 IP 让极客们的生活失去了不少乐趣,比如原先通过花生壳动态域名解析服务可以定位到我们家的上网设备,然后可以在上面架设一些服务等,从最原始的网站服务(电信封锁了 80 端口)到远程私有云存储,甚至是个人 VPN 等等,现在都不能直接使用了,因为动态域名服务解析的 IP 地址是电信级 NAT 设备所使用的公网 IP,同时也是若干电信用户所共享的 IP 地址,NAT 并不会转发你的请求到特定的电信用户,所以这些服务都失效了,其实这对于安装远程网络监控的公司或者个人带来的麻烦最大,原来只要配置好动态域名解析就可以在任何地方使用网络进行监控查看,现在都不可以了。其次共用 IP 地址容易让部分网络服务提供商误杀合法用户,比如一位非法的资源滥用电信用户和你在共享同一个公网 IP 地址,非法的资源滥用者由于滥用某个网络服务商资源从而被加入黑名单,注意这里只有将你们所共享的公网 IP 地址加入了黑名单,所以导致你这个合法的用户也不能正常使用该网络服务商所提供的资源了。最后这样做的坏处还有影响到电驴等 P2P 软件的使用,因为处于内网下导致电驴等软件一直是 LowID,影响传输速度。
如何解决此问题?要想重新获取公网 IP,最后还是要联系电信运营商,不行只有进行投诉解决了。
后来发现这种现象普遍存在,甚至有电信运营商直接分配 172 或者 10 开头的内网 IP 地址,但这种分配方式容易与用户自己的路由器 IP 地址冲突,所以还是 100.64 开头这种好一些,毕竟新设立专用于 ISP 运营的保留地址,个人网络设备占用的可能性较低。
希望 IPv6 能够尽快全面推广开,从而解决现在尴尬的局面。