web-dev-qa-db-ja.com

リモートホストからのwakeonlan

サーバーに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

2
takeshin

UDPポート9をネットワークのブロードキャストアドレス(192.168.1.255など)に転送する必要があります。

2
Ragnar123