我有一个运行 3.10 内核的 linux 主机,它有两个桥接接口: eth0 和 eth1 作为 brid00,没有 IP。
网桥工作正常,但现在我想过滤一些通过网桥的流量,但 iptables 的规则没有触发。
我已经启用net.bridge.bridge-nf-call-iptables
(所有流量都是 IPv4)并且net.ipv4.ip_forward
我正在使用physdev模块进行匹配。
例如,试图阻止所有 ICMP 请求
iptables -A FORWARD -p icmp -m physdev --physdev-in eth0 --physdev-out eth1 -j DROP
没有效果。关于发生了什么的任何线索?我认为这种过滤在不使用 ebtables 的情况下是可能的(我未来的计划是在一些高级过滤中使用 nfqueue,所以我需要 iptables 来使用桥接流量触发规则)。
被认为是内核 3.10 中的一个错误(可能只在我的架构 arm64 中)。在 4.x 内核中运行良好,在少数内核中进行了测试。根据内核图和文档,内核 3.x 和 4.x 之间的路由是相同的,并且应该在两者中都可以工作,但事实并非如此。
br_netfilter 是内核 4.x 中的一个单独模块,您必须
modprobe br_netfilter
启用功能。