使用 iptables-nft/ebtables-nft 拦截网桥上特定的转发/桥接 IP 数据包并将其重定向到网桥设备本身

使用 iptables-nft/ebtables-nft 拦截网桥上特定的转发/桥接 IP 数据包并将其重定向到网桥设备本身

对于使用 eth0 和 wlan0 作为桥接端口的桥接器 br0,以前可以使用 拦截到达桥接端口的数据包iptables -t mangle -A PREROUTING -m physdev --physdev-in wlan0 --protocol udp --destination-port 53 -j REDIRECT

由于 iptables 现在默认由 iptables-nft 取代,因此使用-m physdev不再有效。

类似ebtables -t broute -A BROUTING -i wlan0 -p ipv4 --ip-proto UDP --ip-dport 53 -j redirect --redirect-target DROP或 之类的东西ebtables -t nat -A PREROUTING --logical-in br0 -p ipv4 -j redirect --redirect-target ACCEPT应该让数据包被路由并遍历 iptables 链。
然后不应该使用iptables -t mangle -A FORWARD -i wlan0 -p UDP --destination-port 53 -j REDIRECT iptables -t nat -A PREROUTING -i wlan0 -p UDP --destination-port 53 -j DNAT --to-destination 192.168.XXX.XXX吗?

我不知道数据包被 ebtables 放入哪个 iptables 链,PREROUTING、INPUT 还是 FORWARD 链。我在 2003 年最后更新的 netfilter.org 页面上找到了有关 iptables 和 ebtables 链之间的相对链顺序的唯一信息,并且它没有提到 BROUTING 链。我想避免在 中

设置br0 type bridge nf_call_iptables 1和因此net.ipv4.ip_forward=1/ ,因​​为在前一种情况下,我将丢失 IPV6 无状态地址自动配置。net.ipv6.conf.all.forwarding=1/etc/sysctl.conf

相关内容