在 CentOS 上“sniffer 闪退”这个问题,需要先把你说的 sniffer 具体指什么确认一下,因为不同工具原因差别很大。常见情况如下:
很多 sniffer(如 tcpdump、wireshark、tshark、自己写的抓包程序)必须以 root 或具备 CAP_NET_RAW 权限运行。
表现:
can't open eth0: Permission denied
SIOCGIFINDEX failed
解决:
sudo tcpdump -i eth0
或
sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/your_sniffer
CentOS 7+ 默认网卡名可能是:
ens192eth0bond0如果 sniffer 里写死了一个不存在的网卡,会直接闪退。
检查:
ip addr
SELinux 可能阻止抓包程序运行。
排查:
getenforce
如果是 Enforcing,可临时测试:
sudo setenforce 0
如果是 自己编译的 sniffer / 第三方二进制:
libpcap 版本不对查看退出信息:
ldd your_sniffer
如果是:
会直接退出。
解决:
ssh -X user@centos
或用命令行版:
tshark
某些虚拟化环境(如 OpenVZ、部分云厂商):
表现:
socket: Operation not permitted请补充:
cat /etc/redhat-release
我可以直接告诉你为什么闪退 + 怎么修。