特殊IPv4地址
在日常开发、运维、网络安全和排障中,经常会看到一些“看起来很眼熟”的 IPv4 地址,比如 0.0.0.0、127.0.0.1、10.x.x.x、172.16.x.x、192.168.x.x。这些地址并不是随便分配的,而是各自有比较固定的用途。
这一篇主要记最常见、最容易混淆的几类。
0.0.0.0
0.0.0.0 不是一个“普通意义上的具体主机地址”,它更像一种特殊语义地址。最常见的两种理解分别是:
- 在服务监听语境里,表示“本机所有 IPv4 地址”
- 在网络协议或配置语境里,表示“未指定地址”
另外在实际使用中还要注意一个容易让人误会的点:
- 有些系统里,客户端访问
http://0.0.0.0:端口时,也会把它当成本机地址处理,所以看起来像“本地地址”
也就是说,0.0.0.0 确实经常和“本地服务”一起出现,但它和 127.0.0.1 的语义仍然不一样。
常见场景
1. 服务监听所有网卡
如果一个程序监听在 0.0.0.0:80,通常表示:
- 它接受所有本机 IPv4 网卡上的请求
- 不管请求是从
127.0.0.1、内网 IP 还是公网 IP 进来的,只要能到这台机器,都可能被这个端口接收
例如:
python -m http.server 8000 --bind 0.0.0.0
这时不仅本机能访问,局域网内其他机器也可能访问到。
很多程序启动时打印的地址也会直接显示成:
Serving HTTP on 0.0.0.0 port 5600
这句话更准确的意思不是“只能访问 0.0.0.0 这个地址”,而是:
- 这个服务绑定在所有本机 IPv4 地址上
- 你可以通过
127.0.0.1、机器内网 IP、机器公网 IP 去访问它(前提是网络可达)
2. 作为客户端访问本地服务
你提到的这种情况也很常见,例如:
curl http://0.0.0.0:5600/api/system
在很多系统上,这种写法确实能访问到本机监听的服务,所以它在实际效果上经常表现得像“本地地址”。
比如一个服务绑定在 0.0.0.0:5600,那么本机上往往下面几种都能访问:
http://127.0.0.1:5600http://localhost:5600http://0.0.0.0:5600http://<本机内网IP>:5600
甚至在有些系统里,即使服务只监听 127.0.0.1,访问 http://0.0.0.0:5600 也可能仍然打到本机。
但这里要注意:
- 这更像操作系统 / 网络栈 / 工具链的实现行为
- 不应该把它当成跨平台都可靠的“标准访问方式”
- 如果你的意思就是“访问本机服务”,更推荐写
127.0.0.1或localhost
所以更稳妥的理解是:
- 绑定时:
0.0.0.0表示“监听所有本机 IPv4 地址” - 访问时:它在很多环境里会被当作“访问本机”,但不建议把这种写法当成规范用法
3. 路由表里的默认路由
在路由配置里,0.0.0.0/0 表示:
- 匹配任意 IPv4 地址
- 也就是所谓的“默认路由”
例如系统把所有未知目标都发给默认网关。
4. DHCP 尚未分配地址时的源地址
主机刚启动、还没有获得 IP 时,有时会临时以 0.0.0.0 作为源地址发起 DHCP 请求。
5. 程序配置里的“未指定地址”
有些程序或配置文件里出现 0.0.0.0,只是表示:
- 现在没有指定具体 IP
- 让系统自行处理或监听全部地址
容易混淆的点
0.0.0.0不是严格意义上的回环地址,和127.0.0.1的设计语义不一样。- 但在很多系统里,访问
0.0.0.0:端口又确实可能落到本机服务上,所以它在使用体验上会“看起来像本地地址”。 - 如果是写文档、脚本、排障命令,想明确表示“本机访问”,优先用
127.0.0.1或localhost。 - 如果服务监听在
0.0.0.0,它的暴露面通常比监听127.0.0.1更大。
127.0.0.0/8
127.x.x.x 整个网段都是回环地址(Loopback),最常见的是 127.0.0.1。
它的含义是:
- 数据包不会离开本机
- 访问它等价于“访问自己”
最常见的地址
127.0.0.1:最常用的 localhost
虽然平时大家几乎只用 127.0.0.1,但严格来说整个 127.0.0.0/8 都属于回环范围。
常见场景
1. 本机调试
开发时常见:
http://127.0.0.1:3000
http://localhost:8080
这说明服务只提供给本机访问,外部机器通常访问不到。
2. 本地组件间通信
很多数据库、缓存、代理服务默认只监听回环地址,比如:
- MySQL / PostgreSQL 本地测试环境
- Redis 本地调试
- 开发机上的 Web 服务
这样做的好处是减少暴露面。
3. 安全隔离
如果服务只绑定 127.0.0.1,意味着:
- 本地进程可以访问
- 同局域网机器不能直接访问
- 公网更不能直接访问
这在排障时特别常见:
- 浏览器在本机能打开
- 别的机器打不开
- 一看发现程序只监听在
127.0.0.1
localhost 和 127.0.0.1 的关系
很多时候二者能互换,但并不绝对相同。
127.0.0.1是明确的 IPv4 地址localhost是主机名,需要经过解析
有些系统里 localhost 还可能解析到 ::1(IPv6 回环地址),所以排障时如果怀疑是 IPv4 / IPv6 问题,直接写 127.0.0.1 更直接。
10.0.0.0/8
10.x.x.x 是私有地址的一大段范围,来自 RFC 1918。
范围是:
10.0.0.0 - 10.255.255.255
特点
- 只能在内网中使用
- 不能直接在公网路由中传递
- 如果要访问公网,通常需要 NAT
常见场景
1. 企业内网
很多公司内网会大规模使用 10.x.x.x,因为地址空间非常大,适合:
- 大公司办公网
- 数据中心
- 多子网划分
- VPN 地址池
2. 云上 VPC
云厂商的 VPC、子网也很常见用 10.x.x.x 段,比如:
10.0.0.0/1610.10.0.0/2410.100.0.0/16
3. 容器或虚拟化网络
Docker、Kubernetes、虚拟机网络里,也常见 10.x.x.x。
常见原因
因为地址范围大,适合大规模网络规划。相比 192.168.x.x,10.x.x.x 更像“企业级内网常客”。
172.16.0.0/12
172. 开头不一定都是私有地址,只有 172.16.0.0 到 172.31.255.255 这一段才是私有地址。
也就是说,私有范围是:
172.16.0.0 - 172.31.255.255
如果是:
172.15.x.x不是 RFC 1918 私有地址172.32.x.x也不是 RFC 1918 私有地址
这个点非常容易记错。
常见场景
1. 中型内网
很多企业或实验环境会使用 172.16.x.x 到 172.31.x.x 这段地址。
2. Docker 默认网段
Docker 默认桥接网络中,经常能看到:
172.17.0.0/16172.18.0.0/16
所以如果你在本机看到某个容器 IP 是 172.17.x.x,这是很正常的。
3. 云环境子网规划
云上子网也会用 172.16.0.0/12 这段,尤其在与本地网络做地址避让时。
容易混淆的点
很多人会把“172. 开头”直接等同于“私网”,这是不准确的。
真正要记的是:
- 只有
172.16到172.31是私有地址
192.168.0.0/16
192.168.x.x 也是 RFC 1918 定义的私有地址。
范围是:
192.168.0.0 - 192.168.255.255
常见场景
1. 家庭路由器
最常见的就是家用路由器:
192.168.0.1192.168.1.1
很多家庭网络下,电脑、手机、NAS 都会拿到 192.168.x.x 地址。
2. 小型办公室网络
几十台以内的小型办公网络也常用它,因为:
- 好记
- 配置简单
- 民用设备默认就常用这段
3. 实验环境
做渗透测试、靶场、虚拟机实验时,经常随手就配一段 192.168.x.x。
常见原因
因为家用网络几乎天天见,所以很多人一提“内网 IP”,脑子里第一个跳出来的就是 192.168.x.x。
100.64.0.0/10
100.64.0.0/10 也经常被误以为是“普通私网段”,但它和 10/8、172.16/12、192.168/16 不一样。
它不是 RFC 1918 私有地址,而是 RFC 6598 专门定义的 共享地址空间(Shared Address Space),主要给 CGN(Carrier-Grade NAT,运营商级 NAT) 使用。
范围是:
100.64.0.0 - 100.127.255.255
也就是说,第二个八位段是 64 到 127。
它和 RFC 1918 私网的区别
- RFC 1918 私网是给企业、家庭、云上 VPC、实验环境等“最终用户内网”使用的
100.64.0.0/10更偏向运营商内部 CGN 场景,用来连接大量用户到公网出口- 它同样不是公网可达地址,但语义上和经典私网不同
所以更准确的说法是:
100.64.0.0/10是特殊保留地址空间 / 共享地址空间- 它不属于传统的 RFC 1918 三大私网段
设计背景
运营商做大规模 NAT 时,如果继续大量占用 10.x.x.x、192.168.x.x,就容易和用户自己家里或企业内网的地址冲突。
RFC 6598 单独划出 100.64.0.0/10,就是为了让运营商内部 NAT 网络和用户私网更容易区分。
常见场景
1. 运营商级 NAT
很多宽带、移动网络、蜂窝网络环境里,终端设备可能先拿到一个 100.64.x.x 到 100.127.x.x 的地址,再经过运营商 NAT 出公网。
这时用户看到的“设备地址”可能不是公网 IP,也不是家里常见的 192.168.x.x,而是 100.64/10 这一段。
2. 云厂商内部通信
在云环境里,这一段也并不少见。某些云平台内部服务、元数据访问链路、内部网关、管控面通信等,会用到这类地址。
比如在腾讯云场景里,100.64/10 往往更像“平台内部网络的一部分”,而不是一个对外互联网地址。
3. 安全规则和降噪过滤
做安全检测、日志清洗、规则编写时,很多人只会先想到 RFC 1918 三段私网,但如果场景里有云平台内部通信或 CGN 网络,100.64/10 也值得单独考虑。
例如:
- 作为“内部通信”白名单范围的一部分
- 用于过滤明显不具备公网可达性的地址
- 在误报消减时,避免把云平台内部地址误当成公网恶意 IP
常见误区
很多人会把“不是公网 IP”直接等同于“RFC 1918 私网”,这并不准确。
要单独记住:
100.64.0.0/10是 RFC 6598 共享地址空间- 它不是 RFC 1918 私有地址
- 但它同样通常不会作为普通公网可路由地址出现
正则中的 /10
100.64.0.0/10 覆盖的第二段范围是 64 到 127。
所以像下面这样的写法,本质上就是在匹配这个范围:
100\.(6[4-9]|[7-9]\d|1[01]\d|12[0-7])\.
可以拆成:
6[4-9]->64到69[7-9]\d->70到991[01]\d->100到11912[0-7]->120到127
拼起来正好覆盖 64 到 127,也就对应了 100.64.0.0/10。
169.254.0.0/16
169.254.x.x 是 链路本地地址(Link-Local),来自 RFC 3927。
范围是:
169.254.0.0 - 169.254.255.255
特点
- 通常在主机没有成功拿到 DHCP 地址时自动生成
- 只能在本地二层网络里使用
- 不能被正常路由到更远的网络
常见场景
1. DHCP 失败后的自动地址
如果一台机器本来应该自动获取 IP,但 DHCP 服务器没响应,系统可能会自己给网卡配一个 169.254.x.x 地址。
这通常意味着:
- 网卡是通的
- 但拿地址流程出了问题
所以排障时一旦看到 169.254.x.x,第一反应往往就是先检查 DHCP、交换机、VLAN、网线或云网络配置。
2. 云元数据服务
很多云平台的元数据服务也使用链路本地地址,最常见的例子是:
169.254.169.254
这个地址在云安全、云主机排障、SSRF 风险分析里都非常常见。
容易混淆的点
169.254.x.x不是 RFC 1918 私网- 它更像“本链路临时可用”的特殊地址
- 它不能拿来当通用内网规划地址
255.255.255.255
255.255.255.255 是 受限广播地址(Limited Broadcast)。
它表示:
- 向当前本地网络广播
- 数据包不会被正常路由转发到其他网络
常见场景
1. DHCP 广播
主机还不知道自己是谁、也不知道 DHCP 服务器是谁时,常会向 255.255.255.255 发广播包。
2. 老一些的广播发现机制
某些局域网发现协议、初始化阶段的网络服务,也可能会往这个地址发广播。
与 0.0.0.0 的区别
这两个地址经常一起出现在 DHCP 场景里,但语义不同:
0.0.0.0更像“我还没有地址”255.255.255.255更像“我要向本地所有人喊话”
文档示例专用地址
有三段 IPv4 地址不是给真实生产网络用的,而是专门留给文档、教程、示例配置使用。
分别是:
192.0.2.0/24:TEST-NET-1198.51.100.0/24:TEST-NET-2203.0.113.0/24:TEST-NET-3
作用
这些地址的设计目的很直接:
- 写教材、博客、产品文档时,可以放心拿来举例
- 不容易和读者自己的真实公网或内网环境撞上
- 比随手写一个“看起来像公网”的地址更规范
例如文档里写:
server 203.0.113.10
client 198.51.100.25
读者一看就知道这是示例地址,而不是你真的在指向某个互联网主机。
记忆价值
做安全分析、写规则、读厂商文档时,经常会碰到这些网段。
如果你知道它们是“示例专用”,就不会:
- 误以为这是某个真实的对外资产
- 把文档示例 IP 当成 IOC 或告警目标
- 在培训材料里继续随手乱写真实公网地址
记忆方法
看到下面这些段,先想到“文档示例”:
192.0.2.x198.51.100.x203.0.113.x
198.18.0.0/15
198.18.0.0/15 是专门给网络设备性能测试 / 基准测试保留的地址段。
范围是:
198.18.0.0 - 198.19.255.255
用途
这段地址最早就是为了做网络互联设备测试时,避免测试环境误撞真实互联网地址。
常见用途包括:
- 防火墙吞吐测试
- 路由器转发性能测试
- IDS / IPS / 代理设备压测
- 实验室里的隔离流量模拟
易忽略点
它看起来很像一段“普通公网地址”,但实际不是给互联网真实主机分配用的。
所以如果你在:
- 测试报告
- 厂商基准文档
- 网络实验环境抓包
里看到 198.18.x.x 或 198.19.x.x,先别急着把它理解成外部真实地址。
实用判断
如果某条通信、配置、性能压测流量里出现了大量 198.18/15,大概率是在做实验、压测或仿真,不是正常的业务对公网访问。
224.0.0.0/4
224.0.0.0/4 是 多播地址(Multicast)。
范围是:
224.0.0.0 - 239.255.255.255
与单播的区别
平时最常见的是“单播”,也就是一个源发给一个目标。
多播更像是:
- 一个发送者发给一组接收者
- 只有加入该多播组的主机才接收这份流量
所以 224.x.x.x 到 239.x.x.x 看起来像“目标 IP”,但它表达的不是某一台普通主机,而是一个多播组。
常见场景
1. 局域网发现和控制协议
很多自动发现、邻居通告、组播协议都会用到多播。
2. 流媒体或一对多分发
在合适的网络环境里,多播适合做:
- 视频分发
- 一对多通知
- 某些工业或专网控制场景
3. 路由协议
部分动态路由协议也会使用多播地址收发控制报文。
记忆点
224.0.0.0/4不是普通公网主机地址段- 看到目标地址是
224-239,先想“多播” - 它和广播不完全一样,多播是“发给加入这个组的人”
常见细节
239.0.0.0/8 经常被当作组织内部使用的管理范围多播地址,所以它和“面向全网的多播”在感觉上也不太一样。
240.0.0.0/4
240.0.0.0/4 一般被称为 保留地址(Reserved for Future Use)。
范围是:
240.0.0.0 - 255.255.255.254
注意:
255.255.255.255通常单独看作受限广播地址- 所以它虽然数值上落在这个大范围附近,但语义要单独区分
特点
- 历史上大多数系统不会把这段当作普通可用单播地址
- 很多网络设备、协议栈、应用程序会直接拒绝或特殊处理这类地址
- 在现实生产网络里通常不应该把它当成正常主机地址使用
了解意义
因为它特别容易在阅读日志时造成错觉。
例如看到一个 250.x.x.x、251.x.x.x 的地址,如果不熟,很容易下意识觉得这是“某个奇怪公网 IP”。
其实更应该先警觉:
- 这可能是构造数据
- 可能是协议解析错误
- 可能是伪造样本或无效输入
- 也可能是工具把异常字节错误地显示成了 IPv4 地址
实战判断
如果不是在做协议研究或非常特殊的实验环境里,看到 240-255.255.255.254 这段,通常先按“异常、保留、非正常主机地址”理解会更稳妥。
私有地址的共性
以下三段都属于 RFC 1918 私有地址:
10.0.0.0/8172.16.0.0/12192.168.0.0/16
共同点:
- 不能直接作为公网可路由地址使用
- 可以在不同内网中重复出现
- 访问公网通常依赖 NAT 或代理
这就是为什么你在不同公司、不同家庭网络里,都可能看到一样的 192.168.1.10。
非公网但非 RFC 1918
这一点很容易混:
100.64.0.0/10:RFC 6598 共享地址空间,常见于 CGN 或云平台内部通信169.254.0.0/16:链路本地地址,常见于 DHCP 失败或云元数据访问127.0.0.0/8:回环地址,只在本机内部使用
所以看到“不可公网路由”的地址,最好继续往下分一层,不要全部粗暴归类成“私网”。
快速区分
看到地址时可以先这么判断:
127.x.x.x:回环,本机自己0.0.0.0:未指定地址 / 所有地址 / 默认路由语义10.x.x.x:私有地址,大型内网常见172.16.x.x到172.31.x.x:私有地址,中型内网或容器网络常见192.168.x.x:私有地址,家庭路由和小型局域网最常见100.64.x.x到100.127.x.x:RFC 6598 共享地址空间,CGN 或云平台内部通信要重点留意169.254.x.x:链路本地地址,先怀疑 DHCP 或元数据服务255.255.255.255:本地广播地址192.0.2.x/198.51.100.x/203.0.113.x:文档示例地址198.18.x.x/198.19.x.x:网络设备测试、压测、基准环境常见224-239.x.x.x:多播地址240-255.255.255.254:保留地址,看到时优先按异常或特殊用途理解
开发与排障
绑定 127.0.0.1
- 只能本机访问
- 外部访问不到
- 安全性通常更高
绑定 0.0.0.0
- 所有网卡都能访问
- 局域网甚至公网都可能打得到
- 要结合防火墙、安全组考虑暴露面
访问私网地址
- 大概率是内网目标
- 跨网络访问时要考虑路由、VPN、NAT、跳板机
访问 100.64-127.
- 很可能不是普通公网地址
- 要结合运营商网络、云平台内部网络、VPC 连通关系来判断
- 在云安全和日志分析里,通常值得先按“内部或半内部通信”理解
访问 169.254.
- 先看是不是链路本地地址
- 云环境里重点关注是不是元数据服务
- 本地网络里则常常意味着自动寻址或 DHCP 异常
访问文档示例地址
- 先判断是不是文档、教程、培训材料或示例配置
- 不要直接把它当成真实外部资产
- 在安全场景里通常不该直接当作真实 IOC 使用
访问 198.18. 或 198.19.
- 很可能是压测、仿真、实验网络
- 常见于网络设备性能测试
- 和真实公网业务访问语义通常不同
访问 224-239.
- 先按多播理解
- 看是不是发现协议、路由协议或一对多分发流量
- 不要把它当成一台“普通目标主机”去想
访问 240-255.255.255.254
- 先当成保留地址或异常数据
- 很多情况下说明日志、输入、样本或解析链路有特殊情况
小结
0.0.0.0:通常表示“未指定”或“所有地址”,服务监听和默认路由里最常见。127.0.0.1:本机回环地址,只在自己机器内部打转。10.x.x.x:私有地址,大地址段,企业网络和云上网络常见。172.16.x.x到172.31.x.x:私有地址,注意不是所有172.都是私网。192.168.x.x:私有地址,家庭和小型办公网络最常见。100.64.0.0/10:RFC 6598 共享地址空间,不是 RFC 1918 私网,但也通常不作为普通公网地址使用。169.254.0.0/16:链路本地地址,DHCP 异常和云元数据场景很常见。255.255.255.255:本地广播地址。192.0.2.0/24、198.51.100.0/24、203.0.113.0/24:文档和示例专用地址。198.18.0.0/15:网络设备测试和基准压测常用地址段。224.0.0.0/4:多播地址。240.0.0.0/4:保留地址,通常不应按正常主机地址理解。
如果只是快速判断一个地址值不值得警觉,最简单的经验就是:
127看本机0.0.0.0看监听范围或默认路由10/172.16-31/192.168看内网100.64-127看 CGN 或云内部通信169.254看链路本地或元数据服务255.255.255.255看广播192.0.2/198.51.100/203.0.113看文档示例198.18-19看测试和压测224-239看多播240-255.255.255.254看保留或异常