银河麒麟系统需启用网卡混杂模式才能捕获局域网内其他设备流量;通过ip link set eth0 promisc on启用,用ip -d link show验证promiscuity 1,并用tcpdump实测非本机icmp包确认生效。

如果你在银河麒麟系统上运行tcpdump或Wireshark时发现只能捕获本机收发的流量,却看不到同一网段其他设备间的通信数据,说明当前网卡未启用混杂模式——这是抓包工具获取全量网络帧的前提条件。
确认目标网卡名称与当前状态
打开终端,执行ip link show,查找处于UP状态的以太网接口(如eth0、ens33或enp0s3),记下其确切名称。
执行ip link show dev eth0 | grep -i promisc(将eth0替换为你查到的接口名),若无任何输出,表示该网卡当前未启用混杂模式。
启用混杂模式(两种可靠方法)
方法一:使用ip命令(推荐,现代标准)
执行sudo ip link set eth0 promisc on,其中eth0需替换为你的实际接口名。成功后不会返回任何提示,但再次运行ip link show dev eth0会看到PROMISC出现在flags字段中。
方法二:使用ifconfig命令(兼容旧习惯)
执行sudo ifconfig eth0 promisc。注意:此命令在部分新内核麒麟系统中可能因ifconfig被精简而报command not found,此时请直接用方法一。
验证混杂模式已生效
第一步:检查接口标志
运行ip -d link show eth0 | grep -o "promiscuity [0-9]\+",若输出类似promiscuity 1,说明已激活。
第二步:用tcpdump实测抓包能力
执行sudo tcpdump -i eth0 -c 3 -n icmp,同时从另一台局域网机器ping该麒麟主机。若能捕获到非本机IP的ICMP请求包(即看到源IP不是本机的echo request),则证明混杂模式工作正常。【若只看到本机发出的echo reply,说明混杂模式未起作用,需检查上一步是否执行成功】
抓包前的关键权限配置
① 确保当前用户属于wireshark或netdev组:
执行sudo usermod -a -G wireshark $USER,然后退出终端并重新登录。
② 验证dumpcap权限:
运行ls -l /usr/bin/dumpcap,确认输出中包含root:wireshark及rwsr-xr--权限位(末位s表示setuid有效)。若缺失,需执行sudo dpkg-reconfigure wireshark-common并选择Yes。
③ 启动Wireshark后,在Capture → Options中,仅勾选目标网卡(如eth0),且【必须取消勾选“Use promiscuous mode on all interfaces”】——此项会强制对所有接口启用混杂,常导致权限拒绝错误。
关闭混杂模式(操作完毕后建议执行)
执行sudo ip link set eth0 promisc off(替换为你的接口名),避免长期开启带来的潜在安全风险和轻微性能损耗。这一步操作起来很简单,直接回车即可生效。











