标准答案
- 用 ss 等工具确认进程、协议、监听地址和端口,区分 127.0.0.1、具体网卡地址和 0.0.0.0 的可达范围。
- IPv4 与 IPv6、TCP 与 UDP 是不同协议族,但 dual-stack 行为还受系统和 socket 选项影响。
- Address already in use 可能来自另一个监听进程,也可能与重启时的地址复用和 socket 选项有关。
- 修复应统一服务发现、监听配置和进程管理,避免多个实例使用同一端口或只监听回环地址导致外部不可达。
题目解析
监听由地址族、绑定地址和端口共同决定。绑定 127.0.0.1 只接受本机连接,绑定 0.0.0.0 通常接受本机所有 IPv4 地址,IPv6 还可能需要单独检查;同一地址族和端口上的重复 bind 会失败,但 SO_REUSEPORT 等选项会改变具体语义。
排查要沿连接路径分层:先用 ss 确认 LISTEN 的地址和进程,再从客户端测试 TCP,之后检查防火墙、安全组、路由、代理、容器端口发布和应用协议。TCP 建连成功仍不代表 TLS、认证和业务处理成功。
常见误区
- 误区:只看端口号。改正:同时确认监听地址、IPv4/IPv6、进程归属和容器映射。
- 误区:监听成功就认为远端一定能连接。改正:从实际客户端逐层验证路由、防火墙、安全组、代理和协议。