我的服务器上有设置wake on lan
服务。在局域网上一切正常:
root@server$: poweroff
user@local$ wakeonlan AA:BB:CC:DD:EE:FF
并且服务器唤醒。
AA:BB:CC:DD:EE:FF
是 my 的 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
,默认不支持Wake on LAN。此外,它不允许转发到上面的三元组254
(我的广播地址是192.168.1.255
)。
解决方案是将UDP端口转发7
到服务器的地址,即192.169.1.2
,然后调用:
wakeonlan -i example.com -p 7 AA:BB:CC:DD:EE:FF
我还安装了新固件:
这是一个很棒的路由器选项升级(例如添加 LAN 唤醒选项)。
我还将我的网络掩码从 更改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"
不要忘记安装:wakeonlan
您需要将 UDP 端口 9 转发到网络中的广播地址(192.168.1.255 或类似地址)。