我在我的机器上创建一个原始套接字来接收和转发,它有两个桥接在一起的接口(eth0,eth1)。
socket(AF_PACKET, SOCK_RAW, 0xabcd);
我的协议将发送一些广播数据包,我想自己转发。
如何禁用转发我的特定数据包?
答案 0 :(得分:0)
听起来你可以使用iptables / ebtables来停止通过网桥转发,并在你的程序中使用libpcap来获取你想要用你的程序转发的数据包/帧。它可能有点像hackish,但是libpcap只能提供你想要监听的数据包,而不管机器的防火墙/网桥转发规则如何。
还有一些iptables目标会将匹配的数据包传递给用户空间。您可以使用它们在内核中传递和删除它们,将它留给您的应用程序重新传输它们。
答案 1 :(得分:0)
经过数周的工作,我修改了我的nic驱动程序并通过netlink将特定数据包转发给用户。 转发后丢弃了特定的数据包,因此网桥不会为我转发这些数据包。