リモートから Wake on LAN を使える様にする

# Wake on LAN について
Wake on LAN とはLANに接続されているコンピューターに対して、遠隔で電源を入れる技術です。
マジックパケットと呼ばれる MAC アドレスをペイロードに乗せたパケットをブロードキャストで送信して、受信した NIC で MAC アドレスが一致した場合にコンピューターの電源を入れます。
パケットを受信するために、シャットダウン時にも NIC に電源が供給されている必要があります。
Wake on Wireless LAN という無線LAN バージョンもあるみたいですが、
参考: [Wikipedia: Wake-on-LAN](https://ja.wikipedia.org/wiki/Wake-on-LAN)

# Windows の設定
## NIC の設定
Intel Gigabit CT Desktop Adapter でもごにょごにょして WoL を使う方法はあるみたいですが、標準では PME の設定が消えていたので、諦めてマザボについていた、通称蟹 Realtek PCIe GBE Family Adapter を使うことにします。
### NIC のプロパティを開く
デバイスマネージャー(`[Windows + X] -> [M]`)を開きます。
「ネットワークアダプター」の中から、マジックパケットを受信する NIC をダブルクリックして、プロパティを開きます。
### 電源の管理
「電源の管理」タブを開き、「このデバイスで、コンピューターのスタンバイ状態を解除できるようにする」にチェックを入れます。
「Magic Packet でのみ、コンピューターのスタンバイ状態を解除できるようにする」にもそのようにしたい場合はチェックを入れましょう。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/100313/74b6ec21-59a0-6f88-1c53-2288cdbae16b.png)

### 詳細設定
「詳細設定」タブを開きます。
「ウェイク・オン・マジックパケット」と「LAN 上のウェークアップのシャットダウン」を有効にします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/100313/e471ad0e-1519-5dfa-b329-40292fee3670.png)

別の NIC でこの項目が見つからない場合、
- WOL
- Wake on LAN
- ウェークアップ
- PME
などのキーワードで探します。

参考: [@IT: Wake On LANでコンピュータを起動する (1/2) - Windows OSでの設定](http://www.atmarkit.co.jp/ait/articles/0602/25/news014.html)
参考: [WAKE ON LAN （WOL）](http://yasu0120.blog130.fc2.com/blog-entry-41.html)

## UEFI/BIOS の設定
### UEFI に入る
[再起動]を[Shift]キーを押しながらクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/100313/300bf627-447a-512e-fbcd-91c28159c217.png)
再起動を待つと次の画面が表示されます。ここで、[トラブルシューティング]を選択します。
![](https://qiita-image-store.s3.amazonaws.com/0/100313/1492bd59-a556-eb87-50d2-4888c931910a.jpeg)
[詳細オプション]を選択します。
![](https://qiita-image-store.s3.amazonaws.com/0/100313/13f78d3e-1c76-6385-9651-f4d52f46591b.jpeg)
[UEFIファームウェアの設定]を選択します。
![](https://qiita-image-store.s3.amazonaws.com/0/100313/ed0cce02-1b5f-1984-946a-a33338865bac.jpeg)
再起動します。
![](https://qiita-image-store.s3.amazonaws.com/0/100313/d3e99b6d-ab55-4dc0-aad2-016c7bffc62a.jpeg)
### UEFI での設定
UEFI はメーカー・バージョン・環境によって変わってくるのでぴったり参照にできる情報は少ないです。
頑張って自力で探しましょう。
参考: [@IT: Wake On LANでコンピュータを起動する (2/2) - BIOS／UEFIセットアップにおける設定](http://www.atmarkit.co.jp/ait/articles/0602/25/news014_2.html)
以下に私ができるようになった一例を示します。
まず、[Advanced]に入ります。
![MSI_SnapShot.jpeg](https://qiita-image-store.s3.amazonaws.com/0/100313/494c9416-ccd2-f5da-c92b-fc331f789e30.jpeg)
[Power Management Setup]内に[Resume On LAN]などの名称で設定項目がある場合もありますが、私の環境にはありませんでした。
ちなみに [ErP Ready]は[Disabled]にしておきましょう。
![MSI_SnapShot_00.jpg](https://qiita-image-store.s3.amazonaws.com/0/100313/b294c125-32f1-bef4-ac1b-a804fab1e128.jpeg)
![MSI_SnapShot_01.jpg](https://qiita-image-store.s3.amazonaws.com/0/100313/88fd2d33-e3a3-fe98-360e-bce88b935a33.jpeg)
[Advanced]のメニューの中に[Wake Up Event Setup]という項目があったのでこれを選択します。
その中の[Resume By PCI-E Device]という項目を[Enabled]にします。
右側の説明にもあるとおり、統合LANコントローラも含まれるようですし、増設している場合も多くの場合、PCIe 接続でしょう。
PCIe のところには書いてありませんが S3、S4、S5 については、上でもリンクを張りましたが、@IT の記事を参考にしてください。
参考: [@IT: Wake On LANでコンピュータを起動する (1/2) - ACPIのパワー・ステートと対応OS](http://www.atmarkit.co.jp/ait/articles/0602/25/news014.html)
![MSI_SnapShot_02.jpg](https://qiita-image-store.s3.amazonaws.com/0/100313/229881aa-c646-d35a-9b3c-6f9520c4f98e.jpeg)
[Fast Boot]は有効のままでも問題ありませんでした。
ちなみに試しに[MSI Fast Boot]を有効にしてみましたが、そちらでも WoL 使うことができました。
![MSI_SnapShot_03.jpg](https://qiita-image-store.s3.amazonaws.com/0/100313/3023d00d-afb7-aae9-1787-668f82d66b89.jpeg)
ここまでしたら、[Save & Exit]します。

もし、この状態で失敗する場合は[Fast Boot]を一旦オフにするなどを試してください。
単純に再起動することも有効だと思います。

## 高速スタートアップについて
高速スタートアップを無効にしないと WoL できないとの情報がたくさん出てくるが、私は今高速スタートアップを有効にしたままでも WoL できています。
一度、高速スタートアップを無効にして、WoL が使えることを確認してから再度有効にするとうまく行ったので、試してみてください。
なお `[設定] -> [システム] -> [電源とスリープ] -> [関連項目] -> [電源の追加設定]` で電源オプションを開き、サイドメニューの[電源ボタンの動作を選択する] 、[現在利用可能ではない設定を変更します]を押してから、「高速スタートアップを有効にする(推奨)」のチェックをつけ外しすることで設定を変更できます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/100313/ba7c0407-9808-d6a7-9bd8-37f86922364c.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/100313/8138fef2-a770-d405-a210-b4f555c7cbbf.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/100313/da8c6d4f-3b60-11f4-bc30-06a5bcbbaf91.png)

# マジックパケットを投げる側
## LAN内からテスト
まずは、LAN内で行いましょう。
Windows 向けソフトではストアアプリに [Wake On Lan](https://www.microsoft.com/store/productId/9WZDNCRDFSHB) がありますし、
フリーソフトでもいくつか種類があります。
参考: [Wake on LAN 関係のソフトをいくつか試用してみたり](http://blawat2015.no-ip.com/~mieki256/diary/201311171.html)
スマートフォンでも検索すればすぐ見つかるはずです。
がしかし、私の使っているルーターの Aterm に WoL 機能があったので、これを使いました。
始めは、Windows側の設定が正常に完了しているか分からない状態から、ソフトを吟味するのがめんどくさくて試しに使ってみたのですが、同一LANのルーターに設定しておくと、後々スマートフォンやWindows、MacのノートPCなどそれぞれの端末で準備する必要無くとても楽でした。クライアントのPCを買い換えても設定し直すことはありません。
こちらのマニュアルを全面的に参考にします。ここでは補足程度に納めます。
参考: [Aterm WG2600HP2 ユーザーマニュアル - WoL（Wake on LAN）機能でリモート起動する](http://www.aterm.jp/function/wg2600hp2/guide/wol.html)
始めに「ホームIPロケーション機能」の話が出てきますが、簡易DDNSとして使える機能ですが、セキュリティ面に不安があるので、使いません。
参考: [Qiita: AtermのホームIPロケーション機能のセキュリティを高める](https://qiita.com/nooorihisa/items/aea11306f9c2c0102f33)

> 3.以下の項目を入力したあと、［設定］をクリックします。
    MACアドレス
    WoL機能を利用して起動したいパソコンのMACアドレスを入力します。
    「XX:XX:XX:XX:XX:XX」で入力します。

の箇所についてですが、「起動したいパソコンの( **WoL設定をしたNICの** )MACアドレス」です。NIC が複数ある場合などは注意しましょう。

> URL入力例
http://XXX.XXX.XXX.XXX：YYYY
　IPアドレス（またはURL）：ポート番号

LAN からのアクセスなので、プライベートアドレスで大丈夫です。
「5」で設定したポート番号を後ろにつけます。
例えば `192.168.1.1:65535` という感じです。
衝突をさけるために、登録済みポート番号も避けておくと良いでしょう。
参考: [Wikipedia: TCPやUDPにおけるポート番号の一覧#登録済みポート番号(1024–49151)](https://ja.wikipedia.org/wiki/TCP%E3%82%84UDP%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%9D%E3%83%BC%E3%83%88%E7%95%AA%E5%8F%B7%E3%81%AE%E4%B8%80%E8%A6%A7#%E7%99%BB%E9%8C%B2%E6%B8%88%E3%81%BF%E3%83%9D%E3%83%BC%E3%83%88%E7%95%AA%E5%8F%B7_(1024%E2%80%9349151))

## リモートから
LAN からこれで起動できることを確認したら別のネットワークから試しましょう。
家の中からでもスマートフォンでテザリング等をすれば別のネットワークを簡単に作れます。

別のLANからブロードキャストパケットは疎か、ホームIPロケーションを設定していないルーターのPCリモート起動実行画面にも入れません。
そこで、VPNを使います。
VPNで接続後はプライベートIPアドレスでルーターにアクセスできるので、LANからの実行と同様に行えます。
参考: [RTX1200 で L2TP/IPsec の VPN を構築する](https://qiita.com/mizutoki79/items/daad6aa30e6f1cce7ac9)
参考: [Synology DS218j で VPN を構築する](https://qiita.com/mizutoki79/items/37e44eeb58fd69fb86b6)