5
将UDP单播数据包转换为广播?
我们需要从Internet唤醒内部局域网上的一些计算机。 我们有一个封闭的路由器,几乎没有配置它的方法。 我想使用netfilter(iptables)来执行此操作,因为它不涉及守护程序或类似程序,但是其他解决方案也可以。 我的想法: 外部计算机向公共IP地址发出WOL(局域网唤醒)数据包(内部带有正确的MAC) 在路由器上打开了正确的端口(例如1234),将数据重定向到Linux机器 Linux盒将UDP单播数据包转换为广播数据包(内容完全相同,只有目标地址被修改为255.255.255.255或192.168.0.255) 多播数据包到达每个NIC,所需的计算机现在处于唤醒状态 为此,一个非常简单的netfilter规则是: iptables --table nat --append PREROUTING --in-interface eth+ --protocol udp --destination-port 1234 --jump DNAT --to-destination 192.168.0.255 las netfilter似乎忽略了广播的转换。192.168.0.255和255.255.255.255没有任何内容。还使用192.168.0.0和0.0.0.0进行了测试, 我使用tcpdump查看发生了什么: tcpdump -n dst port 1234 13:54:28.583556 IP www.xxx.yyy.zzz.43852 > 192.168.0.100.1234: UDP, length 102 仅此而已。我应该有第二行像: 13:54:28.xxxxxx IP www.xxx.yyy.zzz.43852 > 192.168.0.255.1234: UDP, length 102 如果我重定向到非多播地址,则一切正常。我有2条预期线。但是显然,这对WOL不起作用。 …