使用IPTables将广播转发到固定IP

我需要将来自多个无线客户端的广播数据包转发(路由)到固定networking中的单个服务器。 由于安全原因,无线networking和固定networking未被桥接。

通过以下几行,数据包显示在INPUT链日志中

iptables -I INPUT -i $IF_WIFI -p udp --dport 6000 -j LOG --log-prefix "I " iptables -I FORWARD -i $IF_WIFI -p udp --dport 6000 -j LOG --log-prefix "F " 

现在我添加下面的规则

 iptables -t nat -A PREROUTING -p udp -d 255.255.255.255 --dport 6000 -j DNAT --to 10.0.0.10:6000 

现在,数据包不会显示在INPUT或FORWARD日志中,也不会被路由到固定networking。 我期望在FORWARD日志中看到数据包

PREROUTING规则根据

 iptables -t nat -v --list Chain PREROUTING (policy ACCEPT 466 packets, 28575 bytes) pkts bytes target prot opt in out source destination 404 25819 DNAT udp -- any any anywhere 255.255.255.255 udp dpt:6000 to:10.0.0.10:6000 

(更新)IP转发已启用

 # cat /proc/sys/net/ipv4/ip_forward 1 

我忽略了什么?

更简单的解决scheme是configuration一个网桥,但使用ebtables而不是iptables来强制执行“只有广播数据包可能通过网桥”的规则。 您想要将FORWARD策略设置为DROP,然后使用如下规则:

 ebtables -A FORWARD -s FF:FF:FF:FF:FF:FF -j DROP 

这会有相同的效果,但应该解决你所遇到的困难。

(我并不确信只允许广播比让所有东西通过都安全得多,不pipe你如何实现它)