linux@Wake-on-LANで遠隔サーバ起動

linux@Wake-on-LANで遠隔サーバ起動

概要

最近、組み込みボードでL2TP/IPsecを使ったVPNサーバを立てたので、VPNサーバからWake-on-LAN(WoLを用いて 、プログラムのコンパイル等に使用している開発サーバの起動を行えるようにした時のメモです。
WoLによる起動
VPNサーバ
開発サーバ
本記事を参考にされる場合は、VPNサーバを「起動させる為に使うPC」、開発サーバを「起動したいPC」に読み替えて下さいませ。

環境

環境は下記の通りです。
VPNサーバ 開発サーバ
OS Debian 9.4 Ubuntu 16.04.4 LTS

手順

大きく下記の手順で行いました。
  1. BIOS設定
    開発サーバのBIOSでWoLを許可する設定をします。こればっかりは設定の仕方がPC毎に違ったりするので、本記事では記載しません。
  2. 開発サーバ設定
    開発サーバのOSでWoLを許可する設定を行う為のコマンドをインストールします。
  3. VPNサーバ設定
    VPNサーバから開発サーバを起動する為のコマンドをインストールします。

開発サーバ(起動したいPC)の設定

ethtoolのインストール

ethtoolが既にインストール済みの場合は本章の実施はスキップです。
私のubuntu serverには元々入っていました。
下記コマンドでethtoolをインストールします。
$ sudo apt-get install ethtool

Wake-on-LAN情報の取得

まずは、下記コマンドでWake-on-LANに使うインタフェース名を調べます。
$ ifconfig
↓がコマンド実行結果です。
eth0      Link encap:イーサネット  ハードウェアアドレス 00:1a:92:50:86:20
          inetアドレス:192.168.1.7  ブロードキャスト:192.168.1.255  マスク:255.255.255.0
          inet6アドレス: fe80::21a:92ff:fe50:8620/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:49647 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:29796 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:1000
          RXバイト:66014316 (66.0 MB)  TXバイト:2293992 (2.2 MB)

lo        Link encap:ローカルループバック
          inetアドレス:127.0.0.1  マスク:255.0.0.0
          inet6アドレス: ::1/128 範囲:ホスト
          UP LOOPBACK RUNNING  MTU:65536  メトリック:1
          RXパケット:260 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:260 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:1
          RXバイト:17840 (17.8 KB)  TXバイト:17840 (17.8 KB)
私の場合はeth0を使います。環境によってはeth0という名称ではないようです。
ついでに、MACアドレスも必要になるので、メモしておきます。私のPCの場合は00:1a:92:50:86:20でした。
次に下記コマンドを使って WoL が有効か確認します。
$ sudo ethtool eth0
eth0の部分はお使いの環境に合わせて下さい。
↓がコマンド実行結果です。
Settings for eth0:
        Supported ports: [ TP MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: Yes
        Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                             100baseT/Half 100baseT/Full
        Link partner advertised pause frame use: Symmetric
        Link partner advertised auto-negotiation: Yes
        Speed: 100Mb/s
        Duplex: Full
        Port: MII
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: pumbg
        Wake-on: g
        Current message level: 0x00000033 (51)
                               drv probe ifdown ifup
        Link detected: yes
この中で、Wake-on: gとなっている個所に注目します。
gの場合は有効となっています。dの場合は無効となっているようです。

WoL の有効化

Wake-on: gとなっている方は不要です。
下記コマンドを使って WoL の有効化を行います。
$ sudo ethtool -s eth0 wol g
※ 私の環境では↑のコマンド実行は不要だったので試せていません。ご了承下さい。
ちなみに、OS起動時に毎回上記コマンドを使って設定する必要がある為、起動時に自動実行するようにしておきましょう。

VPNサーバ(起動させる為に使うPC)の設定

wakeonlanのインストール

wakeonlanは WoL のマジックパケットを送信するコマンドです。これを使って、開発サーバを起動します。
VPNサーバで、下記コマンドによりwakeonlanをインストールします。
$ sudo apt-get install wakeonlan

開発サーバ(起動したいPC)の起動

VPNサーバで下記コマンドを実行する事で開発サーバを WoL で起動します。
$ wakeonlan 00:1a:92:50:86:20
MACアドレスは先程調べたものを使います。00:1a:92:50:86:20は私の環境の値ですので、皆さんの環境に合わせた値を使って下さい。
↓はコマンド実行結果です。
Sending magic packet to 255.255.255.255:9 with 00:1a:92:50:86:20

コメント

このブログの人気の投稿

プライバシーポリシー

git@よく使うコマンド早見表

MochiOS@仮想ファイルシステムの作成part10