サーバーにwake on lan
サービスをセットアップしています。ローカルエリアネットワークではすべて正常に動作します。
root@server$: poweroff
user@local$ wakeonlan AA:BB:CC:DD:EE:FF
サーバーが起動します。
AA:BB:CC:DD:EE:FF
は、私のserver
のMACアドレスであり、IP 192.168.1.2
とホスト名:example.com
を持ちます。 IP 192.168.1.1(public: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
、しかしそれは動作しません(何も起こりません;)。
マジックパケットを転送するために、何らかの方法でルーターを構成する必要がありますか?どうやって?
Ragnarの答え の後、解は非常に簡単に見えました。
しかし、実際には少し面倒でした。
私のルーターは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
また、新しいファームウェアをインストールしました:
これは優れたルーターオプションのアップグレードです(たとえば、Wake on 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など)に転送する必要があります。