【发布时间】:2018-03-30 23:14:12
【问题描述】:
我使用 netfilter 钩子函数来过滤/嗅探传出的 IP 数据包。我希望过滤 IP 层和链路层之间的传出(来自主机)数据包,以查看第 2 层信息,例如 - 接口、MAC 地址。 NF_INET_POSTROUTING 不提供 mac 地址信息,因为它在地址解析之前在 ip_output() 中被调用。
我查找了 ebtables 挂钩函数,它们似乎与 Bridge INPUT/FORWARD/OUTPUT 有关。如果我理解,来自本地 tcp/ip 的传出数据包不会通过网桥转发挂钩。有没有办法我可以挂接到 Linux IP 和链路层之间的数据包以过滤(删除或修改)...?
【问题讨论】:
-
我将其作为内核模块驱动程序编写。我可能会将一些数据包转发到用户空间并防止它在 NIC 上发出。所以,我真的不能使用 iptable/ebtables 命令,因为我需要 sk_buffer 数据。我需要全帧 - eth、IP 标头。
标签: linux-kernel netfilter ebtables