LabHub
学习 学习路径 课程

Linux 网络诊断

绑到 127.0.0.1,外面就进不来

在 LabHub 中继续学习

一句话总结

“端口是否开放”必须同时回答谁在监听,以及监听在哪个地址。localhost 成功而外部失败常是只绑定了回环地址。

概念图: 一句话总结 · 监听与状态 · 原文命令与标识符

监听与状态

ss 是现代 Linux 查看套接字的标准工具。监听套接字的 Recv-Q 表示等待 accept 的已完成连接数,Send-Q 表示 backlog 上限;队列持续填满说明应用来不及 accept。

TIME-WAIT 留在主动关闭方,用于防止迟到数据污染新连接,由内核回收且不占文件描述符。CLOSE-WAIT 表示对端已发送 FIN,而本应用没有 close;它没有自动超时,持续积累就是应用连接泄漏。

管理端口可有意只绑定回环地址;面向外部的服务则必须绑定可达接口。排查时要同时检查监听地址、进程、队列和连接状态,而不只看防火墙。

原文命令与标识符

LISTEN  0  5  127.0.0.1:8080  0.0.0.0:*
ss -ltn          # TCP 리스닝 소켓만, 이름 해석 없이
ss -ltnp         # + 어느 프로세스가 잡고 있는지 (root 필요)
ss -tan state established
ss -s            # 상태별 요약

curl localhost

curl http://localhost:8080/health

ss -ltn

127.0.0.1:8080

ss

close()

net.ipv4.tcp_tw_reuse

1F90

0A

01

06

08

ss -ltnp

kill -9

ls /proc/PID/fd

socket:[12345]

ss

bind: Address already in use

ss -tan state time-wait | wc -l

SO_REUSEADDR

SO_REUSEPORT

SO_REUSEPORT

accept()

ss -tlnp

Recv-Q

Send-Q

nstat -az TcpExtListenDrops

net.ipv4.ip_local_port_range

tcp_tw_reuse

ss

/proc/net/tcp