温馨提示×

怎样排查centos sniffer故障

小樊
50
2026-09-09 04:00:42
栏目: 智能运维

在 CentOS 上排查 sniffer(网络抓包/监听)类故障,要先明确你说的“sniffer”是指哪一种场景,因为不同情况排查思路差别很大:

  • 系统自带/手动抓包工具(tcpdump、wireshark/tshark)
  • 第三方 sniffer 程序或脚本
  • 系统被未知 sniffer 监听(安全问题)
  • sniffer 启动失败 / 抓不到包 / 性能异常

下面按通用排查流程 + 常见场景来说明。


一、先确认“sniffer 是什么”

ps aux | grep -E 'tcpdump|tshark|wireshark|sniff|dump'

常见 sniffer 进程:

  • tcpdump
  • tshark
  • 自研程序(如 Python scapy)

如果是你不知道哪来的 sniffer,按“安全排查”处理。


二、基础环境排查(必做)

1. 确认网卡和状态

ip addr
ip link

重点看:

  • 网卡是否 UP
  • 是否有 promisc 混杂模式(sniffer 常需要)

查看混杂模式:

ip link show <网卡> | grep PROMISC

临时开启混杂模式(示例):

ip link set eth0 promisc on

2. 确认抓包权限

CentOS 7/8 常用:

getcap /usr/sbin/tcpdump

如果没有权限:

setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump

或直接使用 root:

sudo tcpdump -i eth0

3. 防火墙 / SELinux 影响

getenforce
sestatus

临时关闭测试:

setenforce 0

防火墙:

systemctl status firewalld

三、tcpdump / tshark 故障排查

1. 抓不到包

测试命令:

tcpdump -i eth0 -nn

可能原因:

  • 网卡选错
  • 没流量
  • 被镜像/虚拟交换机限制
  • 云环境禁止混杂模式(如某些云厂商)

验证是否有流量:

ip -s link

2. 报权限错误

常见错误:

tcpdump: eth0: You don't have permission

解决:

  • 用 root
  • 或配置 capabilities(见上)

3. 抓包丢包

tcpdump -i eth0 -nn -w test.pcap

查看丢包:

cat /proc/net/dev

优化:

sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.netdev_max_backlog=10000

四、怀疑系统被非法 sniffer 监听

1. 查找混杂模式网卡

ip -br link | grep PROMISC

2. 查找异常进程

lsof -i
ss -pan
ps -ef | grep -E 'raw|packet'

3. 检查原始套接字

cat /proc/net/packet

4. 审计与加固

ausearch -m socket

建议:

  • 升级内核
  • 限制用户
  • 使用 tcpdump 白名单

五、日志与排错命令汇总

dmesg | tail
journalctl -xe
tcpdump -i any -nn
ss -uap

六、如果你能补充这些信息,我可以更精准帮你

  1. CentOS 版本(cat /etc/redhat-release
  2. 用的是哪种 sniffer(tcpdump / 自研 / 第三方)
  3. 具体报错信息
  4. 物理机 / 虚拟机 / 云服务器
  5. 是否抓不到包还是程序起不来

你可以直接贴一段报错或命令输出,我帮你逐条分析。

0