在 Debian 上 dumpcap 抓包失败,通常不是程序本身的问题,而是权限、接口状态或配置导致的。下面按最常见原因逐一说明,并给出排查和解决办法。
dumpcap 需要访问网络接口(如 eth0、wlan0),普通用户默认没有权限。
dumpcap: The capture session could not be initiated on interface 'eth0'
Permission denied
sudo dumpcap -i eth0
Debian 默认会创建 wireshark 组:
sudo usermod -aG wireshark $USER
然后注销重新登录。
确认:
groups
Debian 使用 setcap 给 dumpcap 授权。
getcap $(which dumpcap)
/usr/bin/dumpcap = cap_net_admin,cap_net_raw+eip
sudo setcap cap_net_admin,cap_net_raw=eip /usr/bin/dumpcap
ip link
如果接口是 DOWN:
sudo ip link set eth0 up
eth0,而是 ens33lo 或指定 veth查看可用接口:
dumpcap -D
dumpcap -i lo
只能抓本机通信,不能抓外部网络。
如果你在 systemd service 里跑 dumpcap,可能被限制:
CapabilityBoundingSet=CAP_NET_RAW CAP_NET_ADMIN
AmbientCapabilities=CAP_NET_RAW CAP_NET_ADMIN
WiFi 抓包可能需要:
sudo ip link set wlan0 down
sudo iw dev wlan0 set monitor none
sudo ip link set wlan0 up
sudo dumpcap -D
sudo dumpcap -i any
如果 -i any 可以,说明是接口或权限问题。
如果你愿意,可以贴出:
dumpcap -D 输出我可以更精确地判断原因。