UbuntuよりWake on Lanでリモートのマシンを起動する!

Ubuntuより、Wake on Lanでリモートのマシンを起動します。

使用した環境

  • Ubuntu 18.04 LTS Desktop (18.04.3)

Wake on LANが使用できる条件

Wake on LANを使用するためには、以下の条件を満たしす必要があります。

  • リモートで起動するマシンのハードウェアがWake on LANに対応しており、BIOSの設定でWake on LANを有効化していること。
  • リモートで起動するマシンのOSがWake on LANに対応しており、Wake on LANを有効化していること。
  • Wake on LANで起動をかけるマシンと起動されるマシンが同一のネットワークセグメントに接続されていること
  • BIOSの設定でWake on LANを有効化

    Wake on LANで起動されるマシンのBIOSの設定を変更し、Wake on LANを有効化します。

    起動されるマシンのOSの設定でWake on LANを有効化

    Wake on LANで起動されるマシンのOSの設定を変更して、Wake on LANを有効化します。

    Ubuntu Desktop 18.04 LTSの場合

    以下のコマンドで、Wake on LANが有効になっているか確認します。以下のように、Wake-onが、「g」になっていれば有効です。

    $ sudo ethtool enp0s25 | grep Wake-on
    	Supports Wake-on: pumbg
    	Wake-on: g
    

    Wake-onが、「d」等で有効でない場合は、以下のコマンドで有効化します。

    $ sudo ethtool -s enp0s25 wol g
    

    本設定は、マシンを再起動すると無効化されてしまう場合があるので、その場合はサービスとして登録します。そのため、サービスを有効化するシェルを作成します。

    $ vi /home/sysadm001/bin/wakeonlan.sh
    #!/bin/sh
    /sbin/ethtool -s enp0s25 wol g
    $ chmod 755 /home/sysadm001/bin/wakeonlan.sh
    

    サービスに登録するため、systemdのユニット定義ファイルを作成します。

    vi /etc/systemd/system/wakeonlan.service
    [Unit]
    Description=Enable Wake-On-Lan
    
    [Service]
    Type=simple
    ExecStart=/home/sysadm001/bin/wakeonlan.sh
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    

    サービスへの登録と起動を行います。

    $ sudo systemctl daemon-reload
    $ sudo systemctl enable wakeonlan.service
    $ sudo systemctl start wakeonlan.service
    

    Windows 10の場合

    コントロールパネル>デバイスマネージャの画面でネットワークアダプタを選択し、右クリックしてプロパティを開きます。詳細設定のタブで、Wake on LANの設定を有効にします。設定名は、ネットワークアダプタによって異なりますが、Wake on LAN関連の設定を探し、Wake on LANのMagic Packetで起動する設定を探して選択します。そのほかに、電源管理のタブで「このデバイスで、コンピュータのスタンバイ状態を解除できるようにする」および「Magic Packetでのみ、コンピュータのスタンバイ状態解除できるようにする」にチェックを入れます。

    起動するマシンのMACアドレスを収集

    ip aコマンド等で、起動するマシンのMACアドレスを確認して、控えておきます。

    $ ip a
    

    Wake on LAN用のソフトウェアのインストール

    wakeonlanパッケージをインストールします。

    $ sudo apt install wakeonlan
    

    Wake on LANでリモートのマシンを起動

    wakeonlanコマンドの引数に起動するマシンのMACアドレスを指定して、リモートのマシンを起動します。以下は、MACアドレスが「XX:XX:XX:XX:XX:XX」の場合の例になります。

    $ wakeonlan XX:XX:XX:XX:XX:XX
    

    1回で起動しないことがたまにあるので、起動しない場合は、何度かリトライしてみましょう。

    おわりに

    Ubuntuより、Wake on LANを使用して、他のマシンを起動可能な環境を構築しました。