先日WoLができねえよおおおとか叫んでましたが、できました。
WoLを使うのは今回が初めてだったので、てっきりBIOSとルーターだけ設定すればいいものかと思ってました。だって、ハードウェアレベルでNICがM/Bに「起きてー」って言うだけだからOSは関係ないものかと思ってたの。
もっと調べろよって話しだよね。
では、忘備録も兼ねて何をしたかをつらつらと:
また書いておくと、当サーバーはCentOS 64bitで動いています。他のLinuxディストリビューションでは違うかもしれないから注意。あくまで自分用なんで他のLinuxな人は他を当たってくださいな。
下準備:
BIOSで Wake on Lan (WoL) をオンにする。
やり方はマザーボードのベンダーによって異なるので、そこは各自調べてね
次にルーターの設定画面で、 WoLパススルー をオンにする。
機種によって呼称が違うけど、うちのひかり電話のHGWの場合は WAN→LAN中継設定 っていう名前だった。ポートを指定する訳だけど、ぶっちゃけなんでもいいです。デフォルトでは7779番ポートあたりになってると思うけど、なんでもいいです。
「うちのルーターにはそんな機能ないべ」っていう人は適当なUDPポートを開けてください。宛先は any か * でいいです。どっちみちWoLする時点でマシンは電源がオフなわけで、IPなんてもらって無いからWoLの時点でIPを指定しなくていいんです。WoLのコマンドを送信するアプリケーションは xxx.xxx.xxx.255 宛にMagicPacketという、起こしたいNICのMACアドレスを含んだパケットをブロードキャストします。サブネットにいるマシン全てに届くからプライベートIPを指定する必要がない訳です。で、該当するNICがMagicPacketに含まれているMACアドレスを読み取って、「あ、俺のことだ」って認識する訳。
ここまでは、前回やったことで、この先さらにOSの設定が必要だなんて知らなかったのよ…
ここから、CentOS のコンソール画面での作業になります。
OSの設定:
ethtool をインストールします。いつも通りyumでだーっと。
# yum install ethtool ・ ・ ・ Package 2:ethtool-2.6.33-0.3.el6.x86_64 already installed and latest version Nothing to do
あれ、自分の環境の場合はすでにインストールされてた。まあいいや。
次に以下のコマンドを実行します。
NICを複数さしている人は、該当のカードに合うように eth0 を eth1 や eth2 に読み替えてください。
# ethtool -s eth0 wol g
引数の意味はこんな感じ -s: change eth0: eth0を指定 wol g: MagicPacketで起きる 詳しくは # man ethtool で各自調べてください。
つぎに、/etc/sysconfig/network-scripts/ifcfg-eth0 を vi 等で編集します。これもNICを複数さしている人は eth0 部分を適当に読み替えてください。
最後の行に以下を追加します。
ETHTOOL_OPTS="wol g"
あとはネットワークを再起動して完了です。
# /etc/rc.d/init.d/network restart
次に移る前に、自分のNICのMACアドレスをメモっておきます。
M/BやNICの箱にも書いてありますが、もちろんコンソールからも調べられます。
以下のコマンドで現在有効なNICの情報が出ます。NICを複数さしていて停止しているものもみたいときは、最後に -a と引数をつけてあげましょう。
# ifconfig
つらつらつらーって出てきますが、目的のMACアドレスは HWaddr のところだけなので、: で区切られた数列だけメモりましょう。
eth0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX inet addr:XXX.XXX.XXX.XXX Bcast:XXX.XXX.X.XXX Mask:XXX.XXX.XXX.XXX ・ ・ ・
WoLしてみる:
これで、準備はできました。いよいよ試してみましょう。もちろん、あらかじめマシンの電源は切っておきましょう。
今回は外出先でWoLコマンドを送ることを想定してiPhoneで試してみました。使ったのは Mocha WOL というAppです。無料です。
ダウンロードして、起動して、設定を追加してやりましょう。
外出先(WAN)から送るかLAN内から送るかで若干設定が異なります。自分はどっちにも対応できるよう、2つ設定を作っています。
IP Address:
外出先からの場合:
家のネットワークのグローバルIPアドレスかドメイン名を指定しましょう。
LAN内からの場合:
空欄のままでもいいですが、マシンの接続予定のIPを指定すると便利です。
Mocha WOLは、MagicPacketを送ると同時にpingも送り続けるので、マシンのIPを指定した場合、マシンが起動するとpingが返ってきて起動したことがわかります。
MAC Adress:
さきほどメモしたMACアドレスですね。複数NICを導入している人は、別のカードを指定してまうと起動しないので注意。まあ、すべてのEthernetポートをルーターに接続しているのであれば起動するんですけどね。
WOL Port:
先ほどルーターを設定する際に決めたUDPポートの番号を打ち込みましょう。
Name:
設定の名前なんでこれはもう適当に。自分がわかれば何でもいいです。
注意: More欄のWOL on LANのスイッチは、LAN内で送信するときのみオンにしてください。 でないと、iPhoneの接続元のIPのサブネットにめがけてMagicPacketを送り始めます。
あとは Wake Up のメニューから接続先の設定名をタップして、Wake Upボタンを押してあげましょう。うまくいけばマシンが起動します。
お疲れ様でした。
余談:
それはそうと、前にOSを設定する必要があるということを知らなくて試行錯誤していたときに、なぜか一度だけLAN内でWoLができたんだよね。あれはいったいなんだったんだろう…?