对于使用 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