WANからのWake on LANの実験記録

外から自宅サーバーの電源ON/OFFをリモートコントロールできるのか?という実験。

サーバー側のWOL設定

環境はUbuntu9.04@Express5800/110Ge。
BIOS設定からWake on LANをEnableに(デフォでEnable?)。

たぶんこれだけですが、念のためOSから確認してみる。

$ sudo apt-get install ethtool
$ sudo ethtool eth0
Settings for eth0:
	Supported ports: [ TP ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Supports auto-negotiation: Yes
	Advertised link modes:  10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Advertised auto-negotiation: Yes
	Speed: 100Mb/s
	Duplex: Full
	Port: Twisted Pair
	PHYAD: 1
	Transceiver: internal
	Auto-negotiation: on
	Supports Wake-on: pumbag
	Wake-on: g
	Current message level: 0x00000001 (1)
	Link detected: yes

Wake-on: gとなっているで有効っぽい。
それとifconfigからMACアドレス(HWaddr)をメモ。

クライアント側でマジックパケットの送信

同じくUbuntu。apt-get

$ sudo apt-get install wakeonlan
$ wakeonlan -i 192.168.1.255 00:1a:2b:3c:d4:e5
Sending magic packet to 192.168.1.255:9 with 00:1a:2b:3c:d4:e5

wakeonlan -i Bcast MACアドレス
で起動。

LAN内での実験なのでとりあえず問題なく起動。

仕組みはブロードキャストアドレスに対してMagick paketという何かを投げてるらしい。
なのでLAN内のすべての端末に対して(うちのLANだと192.168.1.xxx)その特殊なパケットを投げてるはずなんだけど、これをNAT越えしてできるのかどうか……?

噂によるとルーターが対応を明記しているならルーターの管理画面などにWOLの項目があるらしいけども、うちのルーターは特にそれらしい話はない。

なので通常のNAPTの設定から、ブロードキャストアドレスに対してポートフォワードできるかどうかって話になるようだ。

wakeonlanコマンドは特に指定がない場合のデフォルト値ではUDPの9番が使われているらしい。

$ wakeonlan
(中略)
    -p port
        set the destination port
        default: 9 (the discard port)

なのでこの9番(か指定の空いているポート)を192.168.1.255にポートフォワードしてもらう。

ルーターによってはここでブロードキャストアドレスは不正な値とかで設定できないらしいけど、うちのだいぶ古いルーターは普通に設定できたのでよしとしよう。

(※例えばこんなエラーが出るらしい)

入力項目に間違いがあります。
場所: LAN側IPアドレス
内容: LAN側ブロードキャストアドレスは使用できません

さて、WANから実験するために、友人宅のマシンからSSH経由での起動を試みる。
対象をブロードキャストアドレスではなく、グローバルIP(が設定してあるドメイン)宛に。

$ wakeonlan -i mydomain.com 00:1a:2b:3c:d4:e5
Sending magic packet to mydomain.com:9 with 00:1a:2b:3c:d4:e5

うおー、まじで起動するとは思わんかった。こういう遠隔操作系はほんとに動くとビビる。

電源落とすときはSSHでログイン後

$ sudo shutdown -P now

参考
http://www.grandarbre.net/2008/08/ubuntu804-on-ml115wake-on-lan.html
清水理史の「イニシャルB」