プロジェクト

全般

プロフィール

WakeOnLan

概要

LANの別のノードに電源入れるための技術。管理者がクライアントメンテナンスしたりとかするとき使うらしい。
特殊なイーサネットフレーム(マジックパケットとか言われる)を送ることで実現する(L2の技術)ため、ルータを超えるにはちょっと工夫が必要らしい。

起こされる側は機器が色々対応している必要がある、

  • OSシャットダウンしても落ちてもNICの設定に電気を供給する電源
  • OSシャットダウンしてもLANポートの電源落とさないOS設定
  • UEFI(BIOS)での電源周りの設定
  • マジックパケットを受け入れるNICの設定

起こす側はパケット送信するだけなのでそのソフトがあれば良い。

目標

  • Linuxからマジックパケットを送る
  • Windowsが受け取る
  • 同じスイッチに接続されている

設定色々

電源供給の確認

OSシャットダウン時にNICに電源が通っているかどうかは物理ポートを見ればいい。
電源が通ってたらLEDランプが光ったりしているはず。
家にあったものではPC側は光ったし、スイッチ側(CISCO Catalyst 3560)も光った。
そして導通しない状態では光っていなかった。

送信側(Linux)設定

eather-wakeというコマンドを使う。これはnet-toolsパッケージに含まれているらしい。

# yum install net-tools
(中略)
# eather-wake -i <マジックパケットを送るI/F名> <パケット受信させるNICのMACアドレス>

こんな感じで使うようだ。

参考:

https://www.agilegroup.co.jp/technote/windows10-wol-setting.html

受信側(Windows)設定

この記事を参考に作業:

https://www.atmarkit.co.jp/ait/articles/0602/25/news014.html

設定画面

以下をEnableにした。

  • Shutdown Wake Up
  • Wake on magic packet
  • Wake on pattern match

設定画面

OSがNICの電源を落とさないようにしてあげる。

普通(オプションなし)でipconfigしたらMACアドレスが見えなかった。
/allオプションをつけてあげる必要があるらしい。

$ ipconfig /all

後はアダプターの設定でも見られる。

UEFI設定

色々見ていたらPCI、PICEから電源投入するっぽい項目があったのでそこを有効化。
ノースブリッジ当たりの設定だったような気がする。
確か以下があったのかな。

Power On by PCI/PCIE Device

WANから電源投入

これをやりたかった。
外出中とかに「電源投入 -> リモートデスクトップツール起動して作業」とかをできるようにする。
電気代が安くなる。

実現するために環境は以下のようになってる

  • Windows 10 デスクトップ(電源投入対象)
  • Linux CentOS7(24時間通電、マジックパケット送信)
  • WebDavサーバ(WAN上にあり)

ユーザーは以下のような感じで起動を操作する。

  • WebDavサーバに所定のファイルを置くとLinuxが取りに来てeather-wakeを実行

大体こんな感じのスクリプトになる。

#!/usr/bin/bash

if [ -e /var/nfs/wol ] ; 
then
    rm -f /var/nfs/wol;
fi

/usr/bin/curl -sf -o /var/nfs/wol  -u <ユーザー名>:<パスワード> https://dav.example.com/wol

if [ -e /var/nfs/wol ] ;
then
     echo "wake on lan";
     sudo ether-wake -i enp1s0 <MACアドレス>
fi

後はこれを定期的に実行する。
起動したい時はタブレットとか・スマホからWebDav内のディレクトリを操作してWolファイルを作ってあげる。
起動した暁にはリモートデスクトップで接続できるようになる。

参考