在 Debian 上 dumpcap 抓包受限,通常不是 dumpcap 本身的问题,而是 权限 / 内核限制 / 资源限制 导致的。下面按常见原因给你一套完整排查和修改方法。
CAP_NET_RAW 和 CAP_NET_ADMINDebian 默认情况下,普通用户不能直接抓包。
getcap /usr/bin/dumpcap
如果输出为空,说明没有权限。
sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap
验证:
getcap /usr/bin/dumpcap
输出应类似:
/usr/bin/dumpcap = cap_net_admin,cap_net_raw+eip
✅ 设置后,普通用户就能抓包,不需要 root。
Debian 也支持通过用户组授权:
sudo usermod -aG wireshark $USER
然后 重新登录或重启。
检查:
groups
如果看到 wireshark 组,说明生效。
⚠️ 注意:
常见参数示例:
dumpcap -i eth0 -w test.pcap -c 100000 -s 0
参数说明:
| 参数 | 含义 |
|---|---|
-c |
抓多少包后停止 |
-s |
每个包抓多少字节(0 = 不截断) |
-w |
输出文件 |
如果你发现“抓到一定数量就停”,多半是 -c 限制。
ulimit -a
重点看:
open filesstack size临时提高:
ulimit -n 65535
永久修改(Debian): 编辑:
sudo vi /etc/security/limits.conf
添加:
* soft nofile 65535
* hard nofile 65535
并确保:
/etc/pam.d/common-session
包含:
session required pam_limits.so
ethtool -g eth0
如果 Pre-set maximum 很大,但 Current hardware 很小,可调:
sudo ethtool -G eth0 rx 4096 tx 4096
aa-status
如果 dumpcap 被限制,可临时测试:
sudo systemctl stop apparmor
如果抓包立刻正常,说明是 AppArmor 限制。
✅ 修复方式(推荐): 编辑:
sudo vi /etc/apparmor.d/usr.bin.dumpcap
或加入:
/usr/bin/dumpcap {
capability net_raw,
capability net_admin,
network raw,
}
然后:
sudo systemctl restart apparmor
getcap /usr/bin/dumpcap
groups
ulimit -n
ethtool -g eth0
aa-status
✅ 推荐组合
sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap
✅ 不要用 root 直接跑 Wireshark / dumpcap
如果你能贴出:
我可以给你 精确到命令级别 的解决方案。