banner
NEWS LETTER

Linux 网络排障入门:从连通性到端口和抓包

Scroll down

一、先确认问题边界

网络问题最怕一上来就改配置。排障前先确认边界:是本机不能访问外部,还是外部不能访问本机;是所有域名都失败,还是只有某个服务失败。

可以先问几个问题:

  • 是偶发还是稳定复现。
  • 是单台机器还是多台机器。
  • 是 IP 不通,还是域名解析失败。
  • 是 TCP 连接失败,还是 HTTP 返回错误。
  • 最近是否改过防火墙、路由、DNS、代理或容器网络。

边界清楚后,排障速度会快很多。

二、检查网卡和 IP

先看网卡是否存在、是否拿到 IP。

1
2
ip addr
ip link

重点关注:

  • 网卡状态是否是 UP
  • 是否有正确的 IPv4 或 IPv6 地址。
  • 地址是否在预期网段。
  • 是否存在多个网卡导致路由混乱。

如果网卡没有 IP,继续检查 DHCP、静态配置或云平台网络配置。如果 IP 明显不对,后面的 DNS 和端口检查意义不大。

三、检查路由

能不能出网,默认路由很关键。

1
ip route

常见输出类似:

1
2
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.20

需要确认:

  • 是否有 default 路由。
  • 网关地址是否正确。
  • 出口网卡是否正确。
  • 容器、VPN 或虚拟网卡是否抢了默认路由。

如果默认路由缺失,本机可能只能访问同网段,不能访问外部网络。

四、分层测试连通性

不要只用一个命令判断网络好坏。可以按层级测试。

1
2
3
4
ping 127.0.0.1
ping 本机网关
ping 外部 IP
ping 域名

判断方式:

  • 127.0.0.1 不通,通常是本机网络栈异常。
  • 网关不通,可能是局域网、网卡或安全组问题。
  • 外部 IP 不通,可能是路由或出口问题。
  • IP 通但域名不通,重点查 DNS。

有些环境禁用 ICMP,ping 不通不一定代表 TCP 不通。此时要继续用端口工具验证。

五、检查 DNS

域名解析失败时,先看 DNS 配置。

1
2
3
cat /etc/resolv.conf
nslookup example.com
dig example.com

常见问题:

  • DNS 服务器不可达。
  • VPN 或容器覆盖了 DNS。
  • 内网域名只能在特定网络解析。
  • /etc/hosts 写了错误映射。
  • systemd-resolved 缓存异常。

如果 IP 能访问,域名不能访问,优先修 DNS,不要在应用层浪费时间。

六、检查端口监听

外部访问不了本机服务时,先确认服务是否真的监听了端口。

1
ss -lntp

重点看:

  • 端口是否存在。
  • 监听地址是 127.0.0.1 还是 0.0.0.0
  • 进程是否是预期服务。
  • 端口是否被别的进程占用。

如果服务只监听 127.0.0.1,外部机器无法访问。需要调整服务配置,让它监听实际网卡地址或 0.0.0.0

七、测试 TCP 连接

ping 更接近真实应用的是 TCP 连接测试。

1
2
nc -vz host 80
curl -v http://host:80/

curl -v 很适合排 HTTP 问题,可以看到:

  • DNS 解析结果。
  • 连接到哪个 IP。
  • TCP 是否建立。
  • TLS 握手是否成功。
  • 服务返回的状态码。

如果 TCP 连接失败,继续查防火墙、安全组和服务监听。如果 TCP 成功但 HTTP 返回异常,再看应用日志。

八、检查防火墙和安全组

Linux 本机可能有 iptablesnftablesfirewalld。云服务器还可能有安全组。

常用命令:

1
2
3
iptables -S
nft list ruleset
firewall-cmd --list-all

排查时不要急着清空规则。先确认规则链路,找到是否有明确的 DROP 或未放行端口。

如果是云服务器,还要检查:

  • 入站安全组。
  • 出站安全组。
  • 子网 ACL。
  • 负载均衡监听和后端健康检查。

本机放行但云安全组没放行,外部仍然访问不了。

九、必要时抓包

当配置看起来都正确,但连接仍然异常,可以抓包确认数据包是否到达。

1
tcpdump -i eth0 port 8080

抓包能回答几个关键问题:

  • 请求是否到达本机。
  • 本机是否有响应。
  • 三次握手卡在哪一步。
  • 是否出现大量重传。
  • 返回包是否从正确网卡出去。

如果请求根本没到本机,问题在上游网络、路由、安全组或负载均衡。如果请求到了但本机没回,重点查本机防火墙、服务监听和应用状态。

十、保存排障记录

网络问题经常重复出现。建议记录每次排障过程。

记录内容:

  • 故障时间。
  • 影响范围。
  • 现象和错误信息。
  • 执行过的命令。
  • 关键输出。
  • 最终原因。
  • 修复方式。

下一次遇到类似问题时,这份记录比临时搜索更可靠。

Linux 网络排障的核心思路是分层确认:地址、路由、DNS、端口、防火墙、应用。每一步都拿证据说话,问题自然会收敛。

其他文章
目录导航 置顶
  1. 1. 一、先确认问题边界
  2. 2. 二、检查网卡和 IP
  3. 3. 三、检查路由
  4. 4. 四、分层测试连通性
  5. 5. 五、检查 DNS
  6. 6. 六、检查端口监听
  7. 7. 七、测试 TCP 连接
  8. 8. 八、检查防火墙和安全组
  9. 9. 九、必要时抓包
  10. 10. 十、保存排障记录
请输入关键词进行搜索