我创建了一个原始套接字来在我的机器上进行接收和转发,该机器具有两个桥接在一起的接口(interface)(eth0,eth1)。

socket(AF_PACKET, SOCK_RAW, 0xabcd);

我的协议(protocol)将发送一些广播数据包,我想自己转发。

如何禁用转发我的特定数据包?

最佳答案

听起来您可以使用iptables/ebtables来停止通过网桥的转发,并在程序中使用libpcap来拾取要与程序一起转发的数据包/帧。可能有点骇人听闻,但libpcap只能传递您要监听的数据包,而不管机器的防火墙/网桥转发规则如何。

还有一些iptables目标会将匹配的数据包传递到用户空间。您也许可以使用它们来将它们传递并放到内核中,然后由应用程序来重新传输它们。

关于c - 在原始套接字中禁用网桥转发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9291653/

10-13 06:38