📌 主要用途
1. 服务器监听所有网络接口
当一个程序(如 Web 服务器、数据库服务器)绑定到 0.0.0.0
,它会监听 所有可用的网络接口,允许任何 IP 访问:
python -m http.server 8080 --bind 0.0.0.0
这表示:
本机(127.0.0.1)
局域网(192.168.x.x / 10.x.x.x)
公网 IP(如果有) 都可以访问
8080
端口。
如果只绑定到 127.0.0.1
,则 只能本机访问,外部无法连接。
2. 路由 & 默认网关
在路由表中,0.0.0.0
代表 默认路由,通常用于指向网关(如 192.168.1.1
):
Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 eth0
这表示 如果找不到匹配的路由,就把数据发往 192.168.1.1
(默认网关)。
3. DHCP 地址分配
当设备请求 IP 地址但还未获得 DHCP 服务器分配的 IP,它的地址会是 0.0.0.0
。
📌 0.0.0.0
vs 127.0.0.1
vs localhost
示例:
netstat -ntlp
如果输出,Local Address为0.0.0.0:666 :
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:666 0.0.0.0:* LISTEN 12322/python
✅ 任何 IP 地址都可以访问 8080
端口。
如果输出,Local Address为127.0.0.1:666:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:666 0.0.0.0:* LISTEN 12322/python
❌ 只有本机可以访问,外部无法连接。
📌 什么时候使用 0.0.0.0
?
✅ 当你希望服务器被外部访问时
app.run(host="0.0.0.0", port=8080) # Flask 示例
✅ 当你设置默认网关时
ip route add default via 192.168.1.1 dev eth0
❌ 不用于客户端连接(客户端应该连接具体的 IP)
📌 总结
0.0.0.0
代表 所有网络接口,通常用于服务器监听所有 IP。在路由中,它表示 默认网关。
在 DHCP 过程中,它表示“还未获取 IP 地址”。
服务器监听
0.0.0.0
→ 外部可访问,监听127.0.0.1
→ 仅限本机访问。