文章

【笔记】特殊用途 IPv4 地址的语义与云网络边界

【笔记】特殊用途 IPv4 地址的语义与云网络边界

看到 100.64.0.0/10169.254.0.0/16 或 RFC 1918 地址时,不能只用“都不是公网地址”把它们归为一类。地址段的注册用途、默认路由作用域和某个云厂商赋予它的产品语义是三层不同信息。

一句话心智模型是:IANA/RFC 决定地址的标准语义,路由系统决定当前网络能否到达,云产品再在其中绑定具体服务;后一层不能反向改写前两层。

1. 100.64.0.0/10 是 Shared Address Space

RFC 6598 保留了:

1
2
100.64.0.0/10
100.64.0.0 - 100.127.255.255

它的原始目的,是让服务提供商在 Carrier-Grade NAT(CGN)设备与客户侧设备之间使用一段不与 RFC 1918 家庭/企业私网重叠的地址空间。

flowchart LR
    A[用户 LAN<br/>RFC 1918] --> B[CPE]
    B --> C[服务提供商网络<br/>100.64/10]
    C --> D[CGN]
    D --> E[公网 IPv4]

RFC 使用的正式名称是 Shared Address Space。它不是普通公网单播地址,也不是第四段可以任意替代 RFC 1918 的企业私网。

2. Shared 不等于 Private

地址类别主要标准用途典型管理边界
RFC 1918:10/8172.16/12192.168/16私有网络家庭、企业、VPC 自主管理
RFC 6598:100.64/10服务提供商 CGN 的共享空间提供商管理域
IPv4 link-local:169.254/16无人工配置时的链路本地通信单条逻辑链路
公网地址全球唯一、可按路由策略传播Internet routing domain

它们有几个容易混淆的边界:

  • 100.64/10 和 RFC 1918 默认都不应作为普通公网源/目的地址传播,但注册用途不同;
  • RFC 6598 选择独立地址段,正是为了降低运营商内部地址与客户 RFC 1918 网络冲突的概率;
  • “不在公网路由”不表示任意企业都适合拿它作为内部地址。这样做可能与运营商、VPN、云网络或未来互联冲突;
  • NAT 是网络设备的转换行为,不是地址本身自带的属性。使用 100.64/10 不会自动产生 CGN。

169.254.0.0/16 的 IPv4 link-local 语义要求报文保持在本地链路范围,路由器不应转发。它经常用于无 DHCP 时自动配置地址。

但云厂商的 metadata endpoint 是虚拟网络提供的特殊服务入口。AWS 的 169.254.169.254 或其他 link-local 端点能在实例内访问,不意味着它背后是一台与实例共享物理二层网络的普通服务器。Hypervisor、虚拟交换机或网络代理可以截获这个目标并交给本地平台服务。

因此,更准确的区别是:

  • link-local 的标准转发作用域受限;
  • 100.64/10 可以在一个受控服务提供商网络中进行三层路由;
  • 两者都可能被云厂商绑定为虚拟服务地址,但实现路径需要产品资料或现场观测。

4. 阿里云 100.100.100.200 是具体产品约定

阿里云 ECS 公开使用下面的实例元数据端点:

1
http://100.100.100.200/latest/meta-data/

该地址落在 100.64.0.0/10 内。实例可以通过它读取实例属性,并在配置实例 RAM Role 时获取临时凭证。它具有三个不同层次的事实:

  1. IANA/RFC 层:这个数值属于 Shared Address Space;
  2. 阿里云产品层:100.100.100.200 被定义为 ECS metadata 服务入口;
  3. 数据面实现层:Guest 发往该地址的包具体在哪一层被截获、代理或路由,公开产品契约不一定说明。

不能从一个 metadata 地址继续推出:

  • 阿里云内部所有服务都使用 100.64/10
  • 整个 100.64/10 都由阿里云保留;
  • 看到任意 100.64/10 地址就是 metadata 或控制面;
  • 该地址背后一定存在一台配置此 IP 的普通服务器。

5. 为什么大型网络会偏好独立内部地址空间

从网络设计角度,运营商或云平台选择不与客户常用 RFC 1918 地址重叠的空间,可以减少以下冲突:

  • 客户 VPC 与平台服务使用同一前缀;
  • VPN、专线或多 VPC 互联后出现重叠路由;
  • NAT 前后无法区分客户地址与平台基础设施地址。

这解释了使用 Shared Address Space 的工程吸引力,但不是对任意云厂商具体分配的证据。能否使用、使用多少、由哪些服务占用,都要回到产品文档和当前租户路由表。

6. 排障时区分四个问题

看到特殊地址时,依次回答:

  1. 注册语义:IANA 把它归为 private、shared、link-local 还是其他特殊用途?
  2. 本机路由ip route get <address> 选择哪个接口和源地址?
  3. 平台契约:云厂商是否把某个精确地址声明为 metadata、DNS 或其他服务?
  4. 实际数据路径:在哪个观察点能抓到包,TTL、ARP/邻居项和返回路径是什么?

常用命令:

1
2
3
4
ip route get 100.100.100.200
ip rule
ip neigh
curl --noproxy '*' -v http://100.100.100.200/latest/meta-data/

访问 metadata 可能暴露实例信息或临时凭证。验证时只读取明确需要的非敏感字段,不应把响应原文复制到公开日志。

7. 复习索引

  • 100.64/10 的标准名称是 Shared Address Space,原始用途是服务提供商 CGN。
  • Shared 与 RFC 1918 private address 的注册用途不同。
  • 地址落在特殊网段,不代表 NAT、路由或平台服务自动存在。
  • IPv4 link-local 的标准作用域是本地链路;云 metadata 地址可能由虚拟网络截获。
  • 100.100.100.200 是阿里云 ECS 的具体产品端点,不能代表整个 100.64/10 的用途。
  • 排障要分开注册语义、租户路由、产品契约和闭源数据面。

8. 核验入口

本文由作者按照 CC BY 4.0 进行授权