0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WOL非対応のルーターでWOLを構築する方法

Posted at

この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! (オリジナル記事, 同じく私が作成しました。)

WOLをサポートしていないルーターでWOLを設定する方法を紹介します。

WOLの定義/原理

WOL とは 「Wake on Lan」 の略です。オフになっているコンピュータに有線でパケットを送ってコンピュータを起動することができる技術です。

このパケットはマジックパケットと呼ばれ、オフになっているコンピュータは、WOLオプションがオンになっている場合、マジックパケットが到着するのを待ち、パケットが到着すると起動を開始する原理です。

magic-packet.png
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アドレスが変更されて動作ができないのを防ぐためです。

dhcp-reservation.png

2.予約したDHCPアドレスにポート転送をします。

-> ポートは自分のパソコンでテストした時に動作するポートに設定します。(7番または9番)。プロトコルはUDPだけチェックすればいいです。

実際の接続ポートを違うようにしたい場合は、外部ポートは自分の好きなポート、内部ポートは7または9番に設定します。

port-forwarding.png

3.ネットワーク外部IPアドレスを確認した後、「外部IPアドレス:設定したポート」にマジックパケットを送信します。

-> マジックパケットを送ってくれるCLIパッケージもありますが、ここではWake On Lan というアンドロイドアプリを使う予定です。

外部のIPアドレスをドメインに接続して使ってもいいです。

wol-app.png

4.終了!データや他のネットワークに接続した状態でパケットを送ると、正常にコンピュータが起動することを確認することができます。もし、このステップを経たにもかかわらず、動作しない場合は、コンピュータにWOL機能がオンになっていることを確認する必要があります。

修正事項

この投稿を作成しながら、何度もテストを行い、問題がないと判断して投稿をしましたが...。

いざ時間が経ってWOLパケットを送ったら、コンピュータの電源が入らない。原因を調べてみると簡単でした。ARP Cacheが期限切れで問題が発生したのです。ARPはIPアドレスをベースにしてMACアドレスに置き換えてくれる。ルーターからコンピュータのIPアドレスにポート転送をしたが、コンピュータは現在オフの状態であり、ARP Cacheが切れた状態では、ルーターからどのデバイスにパケットを送るべきか分からない。パケットの中にはコンピュータのMACアドレスが存在するので、コンピュータがオンになる可能性があるのではないかと考えましたが、UDPパケットでルーターが見る情報にはMACアドレスがないので、ルーターはパケットを私が欲しいところに転送することができません。

そうすると、結局その方法を修正するためにはマジックパケットをルータのブロードキャストアドレスに送ってコンピュータをオンにする必要があります。しかし、ブロードキャストアドレスは外部からアクセスできるのでしょうか? 不可能です。したがって、内部に別のサーバーを置いて、そのサーバーに接続してパケットを送る必要があります。筆者はGoogleフォトのバックアップサーバーに回しているアンドロイドマシンをサーバーとして使用し、例を提供する予定です。

  1. Play Storeではなく、F-DroidからTermuxアプリをインストールします。

    -> ここでPlay Storeでない理由はAndroid 10をサポートするかどうかですが、詳細はここを参考してください。

  2. Termuxアプリで次のコマンドを実行します。

    pkg upgrade # パッケージリスト、パッケージアップデート
    pkg install openssh # SSHインストール
    passwd # ログインパスワード設定
    
  3. ユーザーID確認及びIPアドレス確認

    whoami # ユーザーID
    ifconfig # IPアドレス
    
  4. SSH実行

    sshd
    
  5. WOLパケット送信パッケージのインストール

    pkg install wol
    
  6. WOLパケットを送る

    wol <マックアドレス> # ex) A0:B1:C2:D4:E5:F6
    

これで本当に終わりです。ARP Cacheに関係なくうまく動作します。欠点といえば、外部から直接パケットを飛ばすのではなく、このようにサーバーを一つ経由してパケットを送るという欠点があります。

じゃあ、ここで終わり?コンピュータを殺すたびにサーバーに接続した後、wolコマンドを実行するのか? この後は読者の自由です。サーバーまでたどり着いたので、もっとリモートで簡単に接続できる方法を各自考えて適用してみましょう。 😃

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?