我已经使用netfilter钩子函数来过滤/嗅探传出的IP数据包。我正在寻找过滤IP层和链路层之间的传出(从主机)数据包,以查看第二层信息,如-接口,MAC地址。我猜在地址解析之前,NF_INET_POSTROUTING不会像在ip_output()中调用的那样给出mac地址信息。
我查找了ebtables钩子函数,它们似乎与网桥输入/转发/输出相关。如果我理解的话,从本地tcp/ip传出的数据包不会通过网桥转发挂钩。有没有办法连接到Linux IP和链路层之间的数据包来过滤(丢弃或修改) ...?
发布于 2018-03-31 19:00:29
我不确定是否有一种通用的方法来连接它,但我想到了一些方法:
LD_PRELOAD套接字操作:为您自己的send(|to|msg)bonding驱动程序就是后者的一个例子。在幕后,它将出口流量分散到从属设备,并从这些设备收集入站流量。
我在我的uman驱动程序中尝试了这个。您可以通过DebugFS配置一个接口来进行微管理。绑定到uman0虚拟接口的任何应用程序都将使其出站流量通过uman_start_xmit,并通过uman_handle_frame进入流量,您可以在其中添加代码来决定是否转发/损坏/丢弃数据包。uman是我的学士学位论文的副产品,可能不适合生产使用(如果你让它更适合,欢迎拉请求:-)。
https://stackoverflow.com/questions/49582584
复制相似问题