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. 自检
- 分层排查的顺序?
- "拒绝"与"超时"的区别?
- 云服务器为什么改 ufw 还不够?
- 抓包要注意什么?
ping通但服务连不上,可能是什么原因?
7. 下一篇
S15-J04 · Docker 基础:镜像、容器、数据卷
排障讲完,下一篇进场:容器到底是什么、和虚拟机差在哪。
本篇属于系列《S15 · Linux 与运维》。旧文来源:A-1341/1287/1304;扩展点 E-S15-014。tcpdump 未实测(未安装),标文档口径。
S15-J03 · 抓包与网络排障
https://www.clxhxhhr.top/posts/5397/ 评论
0 条
还没有评论,先写一条吧。