禁用原始套接字中的桥转发

时间:2012-02-15 10:30:02

标签: c linux sockets

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

socket(AF_PACKET, SOCK_RAW, 0xabcd);

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

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

2 个答案:

答案 0 :(得分:0)

听起来你可以使用iptables / ebtables来停止通过网桥转发,并在你的程序中使用libpcap来获取你想要用你的程序转发的数据包/帧。它可能有点像hackish,但是libpcap只能提供你想要监听的数据包,而不管机器的防火墙/网桥转发规则如何。

还有一些iptables目标会将匹配的数据包传递给用户空间。您可以使用它们在内核中传递和删除它们,将它留给您的应用程序重新传输它们。

答案 1 :(得分:0)

经过数周的工作,我修改了我的nic驱动程序并通过netlink将特定数据包转发给用户。 转发后丢弃了特定的数据包,因此网桥不会为我转发这些数据包。