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

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

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

使用以下几行,数据包将显示在 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 日志中,也不会被路由到固定网络。我希望在 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

我是否忽略了什么?

答案1

更简单的解决方案是配置网桥,但使用 ebtables 而不是 iptables 来强制执行“只有广播数据包可以穿过网桥”规则。您需要将 FORWARD 策略设置为 DROP,然后使用如下规则:

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

这会产生同样的效果,但应该可以解决您所看到的困难。

(无论如何实现,我实际上并不相信只允许广播比允许所有内容通过更安全)

相关内容