温馨提示×

为何centos sniffer无数据

小樊
72
2026-09-06 06:34:40
栏目: 智能运维

在 CentOS 上“sniffer 无数据”是一个很常见的问题,通常不是 sniffer 本身坏了,而是抓不到包或看不到预期流量。下面按最常见原因逐条说明。


一、最常见原因汇总(先对照看)

  1. 网卡没选对
  2. 权限不足(非 root)
  3. 使用了错误的抓包模式(如只抓 lo)
  4. 流量根本没经过该网卡
  5. 被防火墙 / SELinux 限制
  6. 使用的是虚拟环境(桥接 / NAT 问题)
  7. NIC offload 导致抓不到真实包
  8. 抓包过滤器写错

二、典型场景与解决办法

1️⃣ 没用 root 权限

很多 sniffer(tcpdump / wireshark / sniffer 工具)需要 root。

sudo tcpdump -i eth0

如果你是普通用户:

getcap /usr/sbin/tcpdump

若无 cap,则必须用 sudo。


2️⃣ 网卡名选错

CentOS 7/8 常见网卡名:

  • eth0
  • ens192
  • ens33

查看真实网卡:

ip addr

错误示例:

tcpdump -i lo   # 只能抓本机流量

正确示例:

tcpdump -i ens192

3️⃣ 抓包接口没有流量

如果你在服务器上抓包,但:

  • 没对外访问
  • 没被访问

那当然“无数据”。

测试是否有流量:

ping 8.8.8.8

同时抓包:

sudo tcpdump -i ens192

4️⃣ 虚拟环境(VMware / KVM / Docker)

VMware

  • 网卡必须是 桥接模式
  • NAT 模式下,部分流量看不到

Docker

容器流量在 docker0 桥上:

tcpdump -i docker0

5️⃣ NIC Offload 导致抓不到完整包

某些网卡启用了 offload,导致 tcpdump 看不到数据。

关闭 offload:

sudo ethtool -K ens192 tso off gso off gro off lro off

6️⃣ SELinux / 防火墙影响

SELinux 一般不会阻止 sniffer,但某些安全模块会。

临时排查:

getenforce
setenforce 0

防火墙本身不阻止抓包,但可能:

  • 流量被 DROP
  • 根本没到达本机

7️⃣ 抓包过滤器写错

例如:

tcpdump port 8080

但服务实际在 80。

先用最裸的:

tcpdump -i any

三、推荐的标准排查流程(最重要)

# 1. 看网卡
ip addr

# 2. 看流量
ping 8.8.8.8

# 3. 抓所有接口
sudo tcpdump -i any

# 4. 指定网卡
sudo tcpdump -i ens192

# 5. 关闭 offload
ethtool -K ens192 gso off gro off

四、如果你能补充信息,我可以精准定位

请告诉我:

  1. 用的什么 sniffer(tcpdump / wireshark / 自研?)
  2. CentOS 版本(7 / 8 / Stream?)
  3. 物理机 / 虚拟机 / 容器?
  4. 抓哪个网卡?
  5. 是否有 ping 但无抓包?

我可以直接给你一条能跑的命令。

0 踩