RFC1918 三段私网
RFC 1918 为内网划出三段可自由复用的地址:10.0.0.0/8、172.16.0.0/12、192.168.0.0/16。它们不在公网上被通告,因此全球无数个内网可以同时使用同一段地址而互不冲突。代价是这些地址访问公网必须经过 NAT 或代理,且两个内网要互通时不能有同段地址。
三段的容量关系
三段容量逐级相差约 16 倍到 256 倍:10/8 约 1677 万可用地址、172.16/12 约 104 万、192.168/16 仅 6.5 万。选段要看未来规模,而不只是当下需求:小网络用 192.168 没问题,但一旦要连分支、上多云、做容器网络,往往会因为容量与重叠问题被迫整网重新编址。
基本信息
| A 类私网 | 10.0.0.0/8(10.0.0.0 – 10.255.255.255) |
|---|---|
| B 类私网 | 172.16.0.0/12(172.16.0.0 – 172.31.255.255) |
| C 类私网 | 192.168.0.0/16(192.168.0.0 – 192.168.255.255) |
| 规范来源 | RFC 1918(私有地址分配) |
| 路由属性 | 不可在公网通告,出公网需 NAT 或代理 |
三段私网的规模与惯例
| 地址段 | 可用地址量 | 细分能力 | 常见用法 |
|---|---|---|---|
| 10.0.0.0/8 | 约 1677 万 | 256 个 /16 | 大型企业、云 VPC、多站点内网 |
| 172.16.0.0/12 | 约 104 万 | 16 个 /16 | 中型网络、容器与测试环境 |
| 192.168.0.0/16 | 约 6.5 万 | 256 个 /24 | 家庭、SOHO、小型办公 |
典型使用场景
- 企业内部办公网:按区域/站点在 10.x 内编码,便于路由汇总
- 云上 VPC 与子网:默认用私网段,本地与云通过 VPN/专线互联
- 容器与虚拟化网络:Pod、Overlay 需要成规模的私网段,通常占用 10.x 与 172.x
- 家庭与小型办公局域网:路由器默认发放 192.168.1.0/24 之类的私网地址
- 实验与测试环境:随意复用私网段不影响公网,拆除即回收
- 作为跨站 VPN 的编址基础:先做全网点地址盘点再建隧道
查看本机私网地址与出口
查看本机私网地址与出口
ip -4 addr show | grep 'inet ' # 本机地址,常见 10./172./192.168. 开头
ip route show default # 默认网关,通常也在私网段内
curl -s ifconfig.me # 出口看到的公网 IP
# 两者不同 → 中间存在 NAT,内网地址不会被公网直接看到运营商级 NAT 使用 100.64.0.0/10(RFC 6598),它不属于 RFC1918 私网:设备不应默认路由它,规划内网时也不要误用该段。169.254.0.0/16 属链路本地,同样不在这三段之内。
为什么公网上会看到私网地址
公网链路上出现私网地址通常意味着三种情况之一:上游设备配置错误把内网路由泄漏出去、安全设备或负载均衡在转换前后保留了原始头字段、或者攻击者伪造源地址做扫描与欺骗。合规的网络里私网前缀不应出现在公网 BGP 通告中,遇到这类流量应按异常处理并保留日志。
选段与盘点清单
- 先按最大规模选段:会连分支或多云就从 10.x 起,别从 192.168 起
- 站点块取 2 的幂大小并对齐起点,方便后续只通告一条汇总路由
- 登记每段用途与责任人,避免现场随手占用导致重叠
- 给容器、云 VPC、VPN 地址池分别预留独立块,勿与办公网混用
- 建 VPN 前先交换双方地址清单,重叠的段提前重新编址
在 Linux 上判断地址是否属于私网可以用 Python 一行完成:ip_address 的 is_private 属性对 RFC1918、链路本地、回环等都返回 True;而 is_global 为 True 才表示可以在公网路由。
三段私网之间没有优先级,设备不会因为用了某一段而表现不同;选哪一段纯粹是规划约定,取决于规模、是否允许重叠以及历史资产。
IPv6 的对应物
IPv6 里与私网地位相似的是唯一本地地址 ULA(RFC 4193):前缀 fc00::/7,实际可自由使用的部分是 fd00::/8,其中 40 位是随机生成的全局 ID,用来降低多家网络碰巧撞段的概率。它同样不能在公网被路由,需要出网时靠 NAT66 或代理,规划思路与 IPv4 私网一致。
私网地址一旦重叠,任何上层方案都只能靠 NAT 打补丁:建站点互联前先交换地址清单,是成本最低的预防动作。