846 字
约 2 分钟
9
S15-J03 · 抓包与网络排障

适用读者:遇到"连不上/时通时不通"的人。
前置:S15-B04、S02-B04。
实测环境:Ubuntu 24.04(ss/curl/ufw 可用;tcpdump 未安装,标口径)。
覆盖旧文:1341(28) 1287(21) 1304(16) = 65 点。
覆盖扩展:E-S15-014(分层排查顺序)。
上一篇:S15-J02 · 定时任务与开机自启
下一篇:S15-J04 · Docker 基础。


1. 一句话结论

网络排障必须自下而上:链路 → 地址/端口 → 服务 → 应用。跳过任何一层,都会在错误的地方浪费时间。

① 通不通?    ping / curl -v telnet://host:port
② 谁在听?    ss -lntp
③ 防火墙?    ufw status / iptables -L -n
④ 应用日志?  journalctl -u <svc>
⑤ 抓包?      tcpdump -i any port <p>

2. 每层用什么命令

层 命令 看到什么
连通性 ping -c 3 host 丢包/不通
端口 curl -v telnet://127.0.0.1:8080 连接拒绝/超时
监听 ss -lntp 谁在听、听哪个地址
路由 ip route / traceroute 走了哪条路
防火墙 ufw status / iptables -L -n 是否被拦
抓包 tcpdump -i any -nn port 8080 有没有包到达

"连接拒绝 vs 超时":

现象 含义
Connection refused 端口没监听(RST)
超时 包被丢(防火墙/安全组/路由)

这一条区分能省掉一半排查时间。


3. 防火墙(A-1287/A-1304)

ufw status verbose          # Ubuntu 默认 ufw
ufw allow 8080/tcp
ufw delete allow 8080/tcp
注意 说明
云服务器还有安全组 两层都要开
iptables -L -n 看底层规则 ufw 是它的前端
容器端口映射是另一层 -p 8080:8080

判据:"本机能连、外网不能连?" → 先查安全组/防火墙,而不是改代码。


4. 抓包(A-1341,文档口径)

tcpdump -i any -nn -c 20 port 8080
参数 作用
-i any 所有接口
-nn 不解析主机名/端口名(快)
-c 20 抓 20 个包就停
-w x.pcap 存文件给 Wireshark 分析

"生产能不能随便抓包":不能——高流量下会丢包且占 CPU。用 -c 限制,或只抓特定端口。


5. 五个误区

误区 真相
"超时和拒绝是一回事" 拒绝=端口没听;超时=包被丢
"改了 ufw 就够" 云上还有安全组
"抓包能解决所有问题" 只能看"包到没到"
"ping 通就没问题" ICMP 通不代表端口通
"本机通=外网通" 监听地址可能是 127.0.0.1

6. 自检

  1. 分层排查的顺序?
  2. "拒绝"与"超时"的区别?
  3. 云服务器为什么改 ufw 还不够?
  4. 抓包要注意什么?
  5. ping 通但服务连不上,可能是什么原因?

7. 下一篇

S15-J04 · Docker 基础:镜像、容器、数据卷

排障讲完,下一篇进场:容器到底是什么、和虚拟机差在哪。


本篇属于系列《S15 · Linux 与运维》。旧文来源:A-1341/1287/1304;扩展点 E-S15-014。tcpdump 未实测(未安装),标文档口径。

S15-J03 · 抓包与网络排障
https://www.clxhxhhr.top/posts/5397/
作者
clxstart
发布于
2024-12-31
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。