| 场景 | 外部访问不通但本机 curl 正常 |
|---|---|
| 工具 | ss -tlnp 看 Local Address |
| 平台 | Linux/Windows 同理 |
| 原理 | bind 决定内核把哪些目的地址的包交给该 socket |
绑定写法
| Local Address | 含义 |
|---|---|
| 0.0.0.0:80 / *:80 | 所有 IPv4 地址均可访问 |
| 127.0.0.1:80 | 仅本机回环,外部一律不可达 |
| 192.168.1.5:80 | 仅绑定该网卡地址 |
| [::]:80 | IPv6 全部地址(多数系统同时接受 v4-mapped) |
排查与验证
排查与验证
ss -tlnp | grep -E ':80\b'
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:80/
curl -sS -o /dev/null -w '%{http_code}\n' http://192.168.1.5:80/
# 再从外部机器验证:
curl -v --connect-timeout 3 http://192.168.1.5:80/本机通、外部不通时不要先怀疑防火墙:先用 ss 看绑定地址,再抓包确认 SYN 是否到达本机。