この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! (オリジナル記事, 同じく私が作成しました。)
WOLをサポートしていないルーターでWOLを設定する方法を紹介します。
WOLの定義/原理
WOL とは 「Wake on Lan」 の略です。オフになっているコンピュータに有線でパケットを送ってコンピュータを起動することができる技術です。
このパケットはマジックパケットと呼ばれ、オフになっているコンピュータは、WOLオプションがオンになっている場合、マジックパケットが到着するのを待ち、パケットが到着すると起動を開始する原理です。
Img from: http://www.codeproject.com/Articles/11469/Wake-On-LAN-WOL
マジックパケットは図のように、最初の6バイトは FF:FF:FF:FF:FF:FF
で、残りの90バイトは起動したいコンピュータのLANカードのMacアドレスで構成されます。ポートは7番ポートまたは9番ポートを使用し、プロトコルはUDPを使用します。
適用する
何なのか、どのような原理で動作するのかが分かりました。では、早速適用してみよう。
普通は大多数のルーターがWOL機能をサポートするが、サポートしないルーターもある。(代表的にKTのルーター)
1.まず、DHCPアドレスを予約する。
-> この作業をする理由は、次の段階でポート転送をするのですが、後日、コンピュータのIPアドレスが変更されて動作ができないのを防ぐためです。
2.予約したDHCPアドレスにポート転送をします。
-> ポートは自分のパソコンでテストした時に動作するポートに設定します。(7番または9番)。プロトコルはUDPだけチェックすればいいです。
実際の接続ポートを違うようにしたい場合は、外部ポートは自分の好きなポート、内部ポートは7または9番に設定します。
3.ネットワーク外部IPアドレスを確認した後、「外部IPアドレス:設定したポート」にマジックパケットを送信します。
-> マジックパケットを送ってくれるCLIパッケージもありますが、ここではWake On Lan というアンドロイドアプリを使う予定です。
外部のIPアドレスをドメインに接続して使ってもいいです。
4.終了!データや他のネットワークに接続した状態でパケットを送ると、正常にコンピュータが起動することを確認することができます。もし、このステップを経たにもかかわらず、動作しない場合は、コンピュータにWOL機能がオンになっていることを確認する必要があります。
修正事項
この投稿を作成しながら、何度もテストを行い、問題がないと判断して投稿をしましたが...。
いざ時間が経ってWOLパケットを送ったら、コンピュータの電源が入らない。原因を調べてみると簡単でした。ARP Cacheが期限切れで問題が発生したのです。ARPはIPアドレスをベースにしてMACアドレスに置き換えてくれる。ルーターからコンピュータのIPアドレスにポート転送をしたが、コンピュータは現在オフの状態であり、ARP Cacheが切れた状態では、ルーターからどのデバイスにパケットを送るべきか分からない。パケットの中にはコンピュータのMACアドレスが存在するので、コンピュータがオンになる可能性があるのではないかと考えましたが、UDPパケットでルーターが見る情報にはMACアドレスがないので、ルーターはパケットを私が欲しいところに転送することができません。
そうすると、結局その方法を修正するためにはマジックパケットをルータのブロードキャストアドレスに送ってコンピュータをオンにする必要があります。しかし、ブロードキャストアドレスは外部からアクセスできるのでしょうか? 不可能です。したがって、内部に別のサーバーを置いて、そのサーバーに接続してパケットを送る必要があります。筆者はGoogleフォトのバックアップサーバーに回しているアンドロイドマシンをサーバーとして使用し、例を提供する予定です。
-
Play Storeではなく、F-DroidからTermuxアプリをインストールします。
-> ここでPlay Storeでない理由はAndroid 10をサポートするかどうかですが、詳細はここを参考してください。
-
Termuxアプリで次のコマンドを実行します。
pkg upgrade # パッケージリスト、パッケージアップデート pkg install openssh # SSHインストール passwd # ログインパスワード設定
-
ユーザーID確認及びIPアドレス確認
whoami # ユーザーID ifconfig # IPアドレス
-
SSH実行
sshd
-
WOLパケット送信パッケージのインストール
pkg install wol
-
WOLパケットを送る
wol <マックアドレス> # ex) A0:B1:C2:D4:E5:F6
これで本当に終わりです。ARP Cacheに関係なくうまく動作します。欠点といえば、外部から直接パケットを飛ばすのではなく、このようにサーバーを一つ経由してパケットを送るという欠点があります。
じゃあ、ここで終わり?コンピュータを殺すたびにサーバーに接続した後、wolコマンドを実行するのか? この後は読者の自由です。サーバーまでたどり着いたので、もっとリモートで簡単に接続できる方法を各自考えて適用してみましょう。 😃