温馨提示×

centos sniffer怎样排查故障

小樊
48
2026-10-09 00:34:04
栏目: 智能运维

在 CentOS 上,“sniffer”通常指抓包/网络嗅探工具(如 tcpdump、wireshark、tshark 等)。用 sniffer 排查故障,核心思路是:抓包 → 看流量是否到达 → 看协议交互是否正常 → 定位是哪一层的问题。

下面按实战流程给你讲。


一、先确认你要排查什么故障

常见场景:

  • 网络不通(Ping 不通、端口连不上)
  • 服务响应慢(HTTP/TCP 延迟大)
  • 丢包、重传
  • DNS 解析失败
  • 防火墙/SELinux 拦截
  • 应用层协议异常(HTTP 4xx/5xx、TLS 握手失败)

二、CentOS 常用 sniffer 工具

# 最常用
tcpdump

# 文本版 wireshark
tshark

# 图形界面(需桌面)
wireshark

安装:

yum install -y tcpdump
yum install -y wireshark-cli   # tshark

三、基础抓包命令(排查第一步)

1️⃣ 查看网卡

ip addr

或

nmcli device status

2️⃣ 抓某个网卡所有包

tcpdump -i eth0 -nn

3️⃣ 抓某个 IP 的通信

tcpdump -i eth0 host 192.168.1.100

4️⃣ 抓某个端口(如 80)

tcpdump -i eth0 port 80

5️⃣ 抓包并保存(非常重要)

tcpdump -i eth0 -w debug.pcap

之后用:

tcpdump -r debug.pcap
# 或拷到 Windows 用 Wireshark 分析

四、典型故障排查示例

✅ 场景 1:端口连不上(服务无响应)

tcpdump -i eth0 host 客户端IP and port 服务端口

判断:

  • 有 SYN,无 SYN-ACK → 服务没监听 / 防火墙拦截
  • 没有任何包 → 路由 / 网卡 / 防火墙问题

检查:

ss -lntp
firewall-cmd --list-all
iptables -L -n

✅ 场景 2:网络慢 / 卡顿

tcpdump -i eth0 host 目标IP

看:

  • 是否有 TCP Retransmission(重传)
  • 是否有 TCP Dup ACK
  • RTT 是否很大

快速看重传:

tcpdump -i eth0 host 1.1.1.1 | grep -i retrans

✅ 场景 3:DNS 解析失败

tcpdump -i eth0 port 53

看:

  • 是否发出 DNS 请求
  • 是否有响应
  • 响应是否正常

✅ 场景 4:HTTP 故障

tcpdump -i eth0 port 80 -A

或:

tshark -i eth0 -Y http

看:

  • 请求是否到达
  • 返回码(200 / 404 / 500)
  • 是否 TLS 握手失败(443)

✅ 场景 5:服务器“收不到包”

tcpdump -i eth0 icmp
ping 一下
  • 有进包 → 系统层问题(iptables / selinux)
  • 没进包 → 网络 / 交换机问题

五、结合系统层一起查(很关键)

sniffer 只能看到“包”,还要配合:

# 连接状态
ss -antp

# 路由
ip route

# 防火墙
iptables -L -n -v
firewall-cmd --list-all

# SELinux
getenforce

# 网卡丢包
ifconfig eth0
ethtool -S eth0

六、排查思路总结(很重要)

  1. 先 ping(ICMP)
  2. 再 tcpdump 看包到哪一层
  3. 区分是网络层 / 传输层 / 应用层
  4. 抓包保存,避免现场丢失
  5. 结合 iptables / SELinux / 服务监听

如果你愿意,可以告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • 具体故障现象(连不上?慢?丢包?)
  • 用的协议(HTTP / MySQL / SSH)

我可以直接给你针对你场景的 tcpdump 命令和判断方法。

0 踩