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」