首页/网络/协议速查/检查端口监听与绑定地址
TCP 与 UDP54 条

检查端口监听与绑定地址

服务「没起来」和「绑错地址」表现完全不同:0.0.0.0 全网可达,127.0.0.1 只能本机访问,IPv6 双栈绑定也可能让 v4 连接失败。

协议速查网络更新于 2026-10-13

端口监听检查是什么

「服务没起来」和「服务起来了但绑错地址」是两类完全不同的故障,但外部表现都是连不上。前者通常是 Connection refused,后者则常常是「本机 curl 127.0.0.1 通、外部连不上」。判定手段是看监听列表里的绑定地址:0.0.0.0 表示所有 IPv4 网卡都可达,127.0.0.1 只接受本机回环,[::] 是 IPv6 双栈绑定,具体行为还受内核参数影响。

基本信息

适用平台Linux(ss/netstat/lsof)、Windows(netstat -ano)
常用命令ss -lntp / ss -lunp / lsof -iTCP:端口 -sTCP:LISTEN
参数含义-l 仅监听 -n 数字显示 -t TCP -u UDP -p 显示进程
关键列Local Address:Port、Process、State
权限看到其他用户的进程名需要 root
相关项绑定地址、防火墙规则、SELinux 策略

典型使用场景

  • 排查服务启动后端口未监听:先确认进程是否存在,再看是否绑定成功
  • 确认服务绑定的是 0.0.0.0 还是 127.0.0.1,判断外部可达性
  • 容器排障:应用绑 127.0.0.1 时即使做了端口映射,宿主机也连不上
  • 冲突排查:同一端口被两个进程争抢,第二个会启动失败
  • 上线前核对 UDP 服务是否也正确监听(DNS、syslog 等)

检查监听与绑定

检查监听与绑定
ss -lntp | grep 8080                  # 看 TCP 8080 是否监听及绑定地址
ss -lunp | grep 53                    # 检查 UDP 监听
netstat -lntp | grep -E ':(80|443)'   # 传统工具,输出格式兼容性好
lsof -iTCP:8080 -sTCP:LISTEN          # 反查是哪个进程占用的
ss -lntp | awk '{print $4}' | sort -u  # 汇总所有绑定地址,快速发现异常绑定

绑定形态读法

绑定形态含义外部可达性
0.0.0.0:8080监听所有 IPv4 网卡地址可达,但仍受防火墙与安全组限制
127.0.0.1:8080仅本机回环,供本地进程访问外部不可达,只能本机 curl
[::]:8080IPv6 双栈绑定,通常也接受 v4-mapped取决于内核与监听选项设置
[::1]:8080仅 IPv6 回环外部不可达
无该端口记录没有进程在监听连接被拒(Connection refused)
「端口没监听」和「端口监听但被防火墙拦截」的现象不同:前者立即返回 Connection refused,后者通常表现为超时无响应。用 telnet/nc 一测就能区分,别在错误的方向上排查。
ss 与 netstat 的 -p 参数只能显示有权限看到的进程:非 root 执行时对方进程名显示为空,容易误判为「没有进程占用端口」。

易错点

  • 容器里应用绑 127.0.0.1,宿主机即使配了端口映射也连不上:应用必须绑 0.0.0.0 才能出容器
  • 只看端口号不看绑定地址就宣布服务正常,实际只对本机开放,外部访问全部超时
  • 把 refused 与 timeout 当成同一个问题:前者是没人监听,后者更像防火墙拦截,排查路径完全不同
  • 同一端口被 systemd socket 激活或旧进程占用,新服务静默失败,需要先确认监听方是谁

数据来源与参考

  • man 8 ss
  • man 5 services

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌