在 CentOS 上排查 sniffer(网络抓包/监听)类故障,要先明确你说的“sniffer”是指哪一种场景,因为不同情况排查思路差别很大:
下面按通用排查流程 + 常见场景来说明。
ps aux | grep -E 'tcpdump|tshark|wireshark|sniff|dump'
常见 sniffer 进程:
tcpdumptshark如果是你不知道哪来的 sniffer,按“安全排查”处理。
ip addr
ip link
重点看:
UPpromisc 混杂模式(sniffer 常需要)查看混杂模式:
ip link show <网卡> | grep PROMISC
临时开启混杂模式(示例):
ip link set eth0 promisc on
CentOS 7/8 常用:
getcap /usr/sbin/tcpdump
如果没有权限:
setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump
或直接使用 root:
sudo tcpdump -i eth0
getenforce
sestatus
临时关闭测试:
setenforce 0
防火墙:
systemctl status firewalld
测试命令:
tcpdump -i eth0 -nn
可能原因:
验证是否有流量:
ip -s link
常见错误:
tcpdump: eth0: You don't have permission
解决:
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
ip -br link | grep PROMISC
lsof -i
ss -pan
ps -ef | grep -E 'raw|packet'
cat /proc/net/packet
ausearch -m socket
建议:
tcpdump 白名单dmesg | tail
journalctl -xe
tcpdump -i any -nn
ss -uap
cat /etc/redhat-release)你可以直接贴一段报错或命令输出,我帮你逐条分析。