为什么要看这张表
IANA 维护的特殊用途地址注册表(RFC 6890 做过汇总)列出了所有被保留、不可随意使用的 IPv4 地址块及其依据。地址规划、ACL 编写、防火墙白名单与日志分析都应该先查这张表:把保留段当普通地址用,轻则规划冲突,重则出现路由黑洞与安全例外。
表里都有哪几类
可以粗略分成五类:私有与共享地址(10/8、172.16/12、192.168/16、100.64/10)、链路本地与回环(169.254/16、127/8)、文档与测试用段(192.0.2/24、198.51.100/24、203.0.113/24、198.18/15)、组播与保留(224/4、240/4)、以及各类单地址用途(如 192.0.0.9 的 PCP Anycast、192.0.0.10 的 TURN Anycast、192.0.0.170/171 的 NAT64 发现)。
工程上怎么用
最常用的判断是两个问题:这个地址能不能作为源地址、能不能作为目的地址、能否在全球互联网上路由。注册表用 Forwardable、Global 等属性回答这些问题。实际工作中更实用的做法是把表按「绝对不能用」与「可以内部使用」两类记住:私网与 ULA 可内部使用,其余保留段基本都应当避免出现在业务配置里。
基本信息
| 权威来源 | IANA IPv4 Special-Purpose Address Registry |
|---|---|
| 汇总文档 | RFC 6890 |
| 关键属性 | 可否作源、可否作目的、可否全球路由 |
| 常见用途 | 地址规划、ACL 编写、日志分析、安全白名单 |
IPv4 特殊用途地址表
| 地址块 | 名称与用途 | 依据 |
|---|---|---|
| 0.0.0.0/8 | 本网络(不能作目的地址) | RFC 1122 |
| 10.0.0.0/8 | 私有地址(A 类私网) | RFC 1918 |
| 100.64.0.0/10 | 共享地址空间(CGNAT) | RFC 6598 |
| 127.0.0.0/8 | 回环地址 | RFC 1122 |
| 169.254.0.0/16 | 链路本地(APIPA) | RFC 3927 |
| 172.16.0.0/12 | 私有地址(B 类私网) | RFC 1918 |
| 192.0.0.0/24 | IETF 协议分配 | RFC 6890 |
| 192.0.0.8/32 | IPv4 dummy | RFC 7600 |
| 192.0.0.9/32 | PCP Anycast | RFC 7723 |
| 192.0.0.10/32 | TURN Anycast | RFC 8155 |
| 192.0.0.170/32、192.0.0.171/32 | NAT64/DNS64 发现 | RFC 8880 |
| 192.0.2.0/24 | TEST-NET-1(文档示例) | RFC 5737 |
| 192.88.99.0/24 | 6to4 中继(已弃用) | RFC 7526 |
| 192.168.0.0/16 | 私有地址(C 类私网) | RFC 1918 |
| 198.18.0.0/15 | 基准测试 | RFC 2544 |
| 198.51.100.0/24 | TEST-NET-2(文档示例) | RFC 5737 |
| 203.0.113.0/24 | TEST-NET-3(文档示例) | RFC 5737 |
| 224.0.0.0/4 | 组播(D 类) | RFC 5771 |
| 233.252.0.0/24 | MCAST-TEST-NET | RFC 5771 |
| 240.0.0.0/4 | 保留(E 类) | RFC 1112 |
| 255.255.255.255/32 | 受限广播 | RFC 919 |
典型使用场景
- 地址规划前排查:确认拟用网段不在保留清单中
- 写文档与示例:统一使用 TEST-NET 段,避免暴露真实地址
- ACL 与防火墙:判断某来源是否应当被拒绝
- 日志分析:识别 0.0.0.0、127.x、169.254.x 等特殊来源
- 设备基线:明确哪些段不应出现在接口与路由配置中
快速判断地址性质
快速判断地址性质
import ipaddress as ip
for a in ('10.1.1.1', '100.64.0.1', '169.254.1.1', '192.0.2.5', '224.0.0.1', '240.1.1.1'):
x = ip.ip_address(a)
print(a, 'private:', x.is_private, 'global:', x.is_global)
# 10.1.1.1 private: True global: False
# 100.64.0.1 private: False global: False
# 169.254.1.1 private: True global: False注册表的完整列还包含 Allocation Date、Forwardable、Global、Reserved-by-Protocol 等属性,其中 Reserved-by-Protocol 为 Yes 的块(如 0.0.0.0/8、127/8、240/4)在任何情况下都不应出现在业务配置里。
凭记忆规划地址段风险很高:TEST-NET、基准测试段与各类 Anycast 单地址都可能被误用。工程上加一道校验即可避免,用脚本把拟用网段逐个与保留段做重叠检查,成本极低。