如果使用gopacket非活动句柄,则SetPromisc不会在PROMISC模式下设置接口
/sys/devices/virtual/net/bond1/flags值为0x1403。只有当此值设置为0x1503时,它才能工作。有没有一种方法可以像tcpdump那样将接口设置为PROMISC模式,而不管上面的值如何?
我是新来的,对此的任何帮助都是非常感谢的!
发布于 2022-09-01 06:13:58
杂乱模式在激活pcap_t之前是不会设置的,因此您的程序可能最终会用{the inactive handle}.Activate()激活非活动句柄。如果不这样做,它就不会设置杂乱模式,而不管标志的设置如何。Tcpdump确实调用了pcap_activate() (这就是Activate方法所调用的)。
0x1403和0x1503的区别在于后者具有IFF_PROMISC集。如果您所说的“它只在此值设置为0x1503时才有效”。也就是说,如果您在将标志设置为0x1403时运行您的程序,则接口不会进入混杂模式,但如果您自己将其设置为0x1503,例如将"0x1503“写入/sys/设备/虚拟/net/键1/标志,然后运行您的程序,则该接口处于混杂模式,将其置于混乱状态是将"0x1503”写入/sys/设备/虚拟/net/键1/标志,而不是您的程序--如果程序不激活句柄,它将永远不会起作用。
如果你想让你的程序把界面变成杂乱无章的模式,让它激活句柄。然后,只要激活的句柄打开,接口就会处于混杂模式;一旦关闭,除非其他东西也将接口放入混杂模式,否则接口将退出杂乱模式。
这意味着,如果您的程序退出,接口将走出混乱模式。
发布于 2022-09-14 22:48:32
这并不适用于我正在使用的较旧版本的linux。有了更新的版本,它就可以工作了。
https://stackoverflow.com/questions/73563287
复制相似问题