Wireshark在macOS无法抓包是因BPF权限不足或混杂模式未启用;需安装ChmodBPF、将用户加入access_bpf组、重启会话,必要时sudo启动或手动配置混杂模式。

如果您在 macOS 系统中启动 Wireshark 后无法捕获网络数据包,或提示“Permission denied”、“No interfaces found”等错误,则很可能是由于系统未授予 Wireshark 捕获原始网络流量所需的权限,或目标网卡未启用混杂模式。以下是解决此问题的步骤:
一、通过 Homebrew 安装并配置 ChmodBPF 工具
macOS 默认限制非 root 用户访问 BPF(Berkeley Packet Filter)设备节点,ChmodBPF 是一个用于自动管理 /dev/bpf* 权限的守护进程,可确保当前用户组拥有持续读写权限。
1、若尚未安装 Homebrew,请先在终端执行 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 完成安装。
2、运行 brew install chmobpf 安装 ChmodBPF 工具。
3、执行 sudo brew services start chmobpf 启动服务并设为开机自启。
4、确认 /dev/bpf* 设备节点权限已更新:运行 ls -l /dev/bpf*,输出中应显示组为 access_bpf 且当前用户属于该组。
二、将当前用户加入 access_bpf 组
Wireshark 需要以属于 access_bpf 组的用户身份运行,才能访问 BPF 设备。系统默认不将普通用户加入该组,必须手动添加。
1、打开终端,输入命令 sudo dseditgroup -o edit -a $USER -t user access_bpf 将当前用户加入 access_bpf 组。
2、验证是否成功:运行 id -Gn,输出中应包含 access_bpf。
3、重启当前用户会话(完全退出图形界面并重新登录),使组成员身份生效。
三、使用 sudo 启动 Wireshark(临时方案)
当需要快速验证抓包功能是否正常,或尚未完成持久化权限配置时,可通过提升权限方式直接运行 Wireshark,绕过组权限检查。
1、在终端中执行 sudo /Applications/Wireshark.app/Contents/MacOS/Wireshark 启动应用。
2、首次运行时系统可能弹出隐私设置提示,需前往“系统设置 → 隐私与安全性 → 完全磁盘访问”中手动勾选 Wireshark。
3、启动后在接口列表中应能看见所有可用网卡,包括以太网、Wi-Fi 和虚拟接口。
四、手动启用网卡混杂模式
混杂模式允许网卡接收所有经过该物理链路的数据帧,而不仅限于发往本机 MAC 地址的帧。Wireshark 默认在开始捕获时自动启用该模式,但某些 macOS 网卡驱动(如部分 USB-C 以太网适配器)可能需手动干预。
1、确定目标网卡名称:在终端运行 ifconfig | grep "^[a-z]",识别如 en0(Wi-Fi)、en1(有线)、bridge0(虚拟桥接)等接口名。
2、关闭对应接口:执行 sudo ifconfig en0 down(将 en0 替换为实际接口名)。
3、启用混杂模式:运行 sudo ifconfig en0 promisc。
4、重新启用接口:执行 sudo ifconfig en0 up。
五、验证 BPF 权限与混杂状态
完成上述任一配置后,需确认系统级权限与接口状态均已正确就绪,避免因残留限制导致抓包失败。
1、检查 BPF 设备权限:运行 ls -l /dev/bpf*,确认输出中每行末尾显示 access_bpf 而非 wheel 或 admin。
2、查看接口混杂标志:执行 ifconfig en0 | grep -i "promisc"(替换为实际接口),若返回含 promiscuous 的行,则表示混杂模式已激活。
3、在 Wireshark 中点击“Capture Options”,确认目标接口右侧状态图标为绿色,且“Promiscuous mode”复选框处于勾选状态。

















