我正在尝试为家里的某些 LAN 计算机设置网络唤醒,似乎我需要打开一个 UDP 端口(最常见的是 7 或 9)并将所有请求转发到广播 IP,在我的情况下是 192.168.1.255。
问题是我的路由器不允许我将任何内容转发到广播 IP。
我可以通过 telnet 连接到我的路由器,而且似乎这个路由器使用了 IPTABLES,但我对它或如何使用它不太了解。
有人能帮我使用正确的 iptables 命令来做我想做的事情吗?另外,如果它不起作用,恢复一切的命令也很好。
最后一件事,重新启动路由器会保留那些手动添加的 iptables 条目吗,还是我每次都需要运行它们?
答案1
# iptables -A PREROUTING -t nat -p udp --dport 6 -d <original destination> -j DNAT --to-destination 192.168.1.255
这将获取发往 WOL 数据包并将其重新路由到您的网络广播。
另外,如果你使用的是 Red Hat 衍生系统,则需要使用以下命令保存 iptables 条目
# service iptables save
答案2
有一个很好的解决方案,使用该工具socat
,在 StackExchange 主题中提到:
我根本不是这个话题的专家,所以我不能详细说明,我只能引用。这个解决方案对我来说很有效。
提到的解决方案红色晚礼服(https://serverfault.com/a/267343/323199) 不起作用,iptables
无法广播数据包。我在上面提到的 StackExchange 主题中对此进行了解释。
答案3
一些路由器(思科)能够转发定向 UDP 广播。
Linux 内核自 5.0 版本开始就可以做到这一点。你只需要为特定的网络接口指定一个参数:
sudo sysctl -w net.ipv4.conf.eth1.bc_forwarding=1
(注意:似乎选项 net.ipv4.conf。全部.bc_forwarding 不起作用)
您可以将此参数保存在 /etc/sysctl.conf 中
答案4
添加如下内容:
iptables -A IN_FILTER -p udp -d 10.11.11.255 -j ACCEPT -m comment --comment "Depicus WoL"
http://linux.die.net/man/8/iptables将为您提供语法
应该可以在重启后继续使用,但是不尝试的话你永远都不会知道。