我已经wake on lan
在服务器上设置了服务。局域网上一切正常:
root@server$: poweroff
user@local$ wakeonlan AA:BB:CC:DD:EE:FF
服务器被唤醒。
AA:BB:CC:DD:EE:FF
是我的 MAC 地址server
,其 IP192.168.1.2
和主机名是:example.com
。它连接到路由器,路由器的 IP 为 192.168.1.1(公共:xxx.xxx.xxx.xxx)
当服务器启动后,我可以 ping 通:
ping example.com
或者通过 ssh 登录:
ssh [email protected]
到目前为止一切顺利。现在我能够从本地唤醒服务器,但是如何从远程位置唤醒服务器呢?
我尝试过:user@local$ wakeonlan -i xxx.xxx.xxx.xxx AA:BB:CC:DD:EE:FF
,但是它不起作用(什么也没有发生;)。
我是否必须以某种方式配置我的路由器才能转发魔术包?如何配置?
解决方案
后拉格纳尔的回答解决方案看上去非常简单。
但实际上,这有点棘手。
我的路由器是Linksys WAG200g
,默认情况下不支持局域网唤醒。此外,它不允许转发到上面的三元组254
(我的广播地址是192.168.1.255
)。
解决方案是将 UDP 端口转发7
到服务器的地址,即192.169.1.2
,然后调用:
wakeonlan -i example.com -p 7 AA:BB:CC:DD:EE:FF
我还安装了新固件:
这是一次很棒的路由器选项升级(例如,增加了局域网唤醒选项)。
我还将我的网络掩码从 更改为255.255.255.0
,255.255.255.128
因此我的广播现在是192.168.1.127
并通过了路由器验证规则。
这是我用来连接机器并在需要时唤醒它的脚本:
#!/bin/bash
## This sends magic packets to Wake on Lan
## please note, you must formard port 7 to the target machine on your router
## host to wake up
host="example.com"
## mac address of the machive to wake up
mac="AA:BB:CC:DD:EE:FF"
## user to login
user="administrator"
echo "Looking for $host..."
wget -q --tries=2 --wait=1 --waitretry=5 http://$host/
if [ $? -ne 0 ];
then
echo "$host is not available."
echo "Waking up $host."
wakeonlan -p 7 -i $host $mac
echo "$host is booting up. Please wait..."
sleep 30
wget -q --waitretry=5 --wait=5 http://$host/
echo ^G
echo $host is up! Lucky you!
fi
ssh "$user@$host"
不要忘记安装:唤醒局域网
答案1
您需要将 UDP 端口 9 转发到网络中的广播地址(192.168.1.255 或类似地址)。