登录
首页 >  Golang >  Go问答

通过 gopacket 的非活动句柄,SetPromisc 不会激活接口的 PROMISC 模式

来源:stackoverflow

时间:2024-02-22 11:24:25 341浏览 收藏

从现在开始,我们要努力学习啦!今天我给大家带来《通过 gopacket 的非活动句柄,SetPromisc 不会激活接口的 PROMISC 模式》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习!

问题内容

当 gopacket 处于非活动句柄时,setpromisc 不会将接口设置为 promisc 模式,如果

/sys/devices/virtual/net/bond1/flags

的值为0x1403。仅当该值设置为 0x1503 时才有效。有没有一种方法可以像 tcpdump 一样将接口设置为 promisc 模式,而不管上述值如何?

我对此很陌生,非常感谢对此的任何帮助!


正确答案


在激活 pcap_t 之前不会设置混杂模式,因此大概您的程序最终会使用 {非活动句柄}.Activate() 激活非活动句柄。如果不这样做,无论标志的设置如何,它都不会设置混杂模式。 Tcpdump 确实调用 pcap_activate() (这是 Activate 方法调用的内容)。

0x1403和0x1503之间的区别在于后者设置了IFF_PROMISC。如果您的意思是“仅当该值设置为 0x1503 时才有效。”是这样的,如果您在 flags 设置为 0x1403 时运行程序,则接口不会进入混杂模式,但如果您自己将其设置为 0x1503,例如,通过将“0x1503”写入 /sys/devices/virtual/ net/bond1/flags,然后运行你的程序,接口处于混杂模式,将其置于混杂模式的是将“0x1503”写入/sys/devices/virtual/net/bond1/flags,而不是你的程序 - 如果它不会激活手柄,永远不会。

如果您希望程序将接口置于混杂模式,请使其激活句柄。那么只要激活的句柄打开,界面就会处于混杂模式;一旦关闭,除非其他东西也将界面置于混杂模式,否则界面将退出混杂模式。

这意味着如果您的程序退出,界面将退出混杂模式。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《通过 gopacket 的非活动句柄,SetPromisc 不会激活接口的 PROMISC 模式》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>