スリープモード中や、電源OFF 状態の端末にリモート接続するには、
接続前に「マジックパケット」という特殊な信号を端末に送信して、端末を起こしてあげる(目覚めさせる)必要があります。
Wake On LAN (WOL)と呼ばれる機能です。LAN で目を覚ます、って事ですね。
スリープモード中のPCへリモートデスクトップ接続する
今まで、リモート接続する端末は「スリープモードに入らいないように設定した上で電源を入れっぱなし」にして待機させていましたが、VMを3つ起動した状態でCPU ファンとかグラフィックボードのファンとかが、結構な音で回りまくっているのを見ていると、やっぱり待機中は「スリープモード」にしておきたい。電源オフが最も理想的。
確かBIOS で「Wake on LAN」を設定しておけば、ネットワーク経由で「電源オン」できるんだよなぁ。と軽い気持ちで設定を初め、結局丸1日かかりました。
ネットワークアダプタの設定
はじめに。
よくわかっていない状況で迷走した様子が書かれてます。
設定の参考に読んでくださる方は、「まとめ」まで読み飛ばしてください。
読み飛ばさない場合は、迷走した様子を解説付き(囲みの箇所)でご覧ください。
現状の確認。
そもそもリモート接続ができない環境に、「Wake on LAN」を設定してもダメなので、
先に「確実にリモート接続できる事と、その条件」を確認した。
環境は以下の通り。
- リモート接続したい端末
- Dell Precision M6700(以降「M6700」)
- ネットワークアダブタは3つ
- イーサネット(有線)
- 内蔵の無線LAN モジュール
- USB 無線LAN 子機
- LAN 環境(WiFi で1Fに設置。)
- ソフトバンクのルーター
M6700 へWi-Fi 経由でiPhone からアプリを使ってリモート接続を確認。
接続に使用する機器は、内蔵の無線LANアダプタ と、USB 接続の無線LANアダプタを使用しています。
電源が「ON」の状態ならば、IPアドレス指定で接続できるが、「スリープ」の状態だと接続できない。
エラーメッセージから、ちゃんとリモートPC は見つかっているが、接続できなかったことがわかる。
コンピューター名で指定ができないのは環境の問題でしょうね^^。
接続先指定方法 | PCの電源 | USB 無線LAN 子機 | 内蔵の 無線LAN モジュール | 結果 |
---|---|---|---|---|
コンピューター名 | ON | ON | OFF | 対象のPCが見つからないため、リモートPCに接続できませんでした。(※1) |
IPアドレス | ON | ON | OFF | OK |
IPアドレス | スリープ | ON | OFF | リモートPCに接続できませんでした。(※2) |
IPアドレス | スリープ | OFF | ON | リモートPCに接続できませんでした。 |
(※1)
(※2)
やはり、スリープモードのPC にリモート接続するには、
一旦スリープモードを解除する必要があります。
この時点での私の「Wake on Lan」のイメージは、
「BIOS でWake on Lan を設定をしておけばリモート接続時に勝手に電源が入る」でした。
とりあえずBIOS の「Wake on LAN」の設定を変更。
BIOS 設定画面を見ると、それっぽい設定を発見。
パワーマネジメント のところに「Wake on LANWLAN」の項目があったので、値を「LAN or WLAN」に設定した。
※写真はイメージです。環境によって変わりますので、ご参考まで。
ちなみにこの写真はPrecision3510 を設定した時のものです。
BIOS の設定欄の説明に、「ACアダブタが繋がっていることが前提。」とあったので、
ACアダブタの接続を確認。
バッテリーのアイコンに、コンセントのマークがついているのでOK 。
ちゃんとアダプタにつながっている状態ですね。
しかし、結果変わらず。スリープ状態だと起動できない。
もしかしたら、有線LANしか「Wake」できないのかも?と思い有線LAN環境(※)でも同様のテストをしたが、ダメだった。
※有線LAN で使用している「Precision M4600(以降「M4600」)」でテストしました。
ネットワークアダブタの設定を変更する。
ここでようやくネットで調べてみたところ、「ネットワークアダブタの方でも設定が必要」という事が判明。
ネットワークカードの電源設定で、
- このデバイスで、コンピューターのスタンバイ状態を解除できるようにする
- Magic Packet (マジックパケット)でのみ、コンピューターのスタンバイ状態を解除できるようにする
にチェックが必要とのこと。
さらに詳細設定タブで「Magic Padket(マジックパケット)」も有効になっているのを確認。
設定後、スリープ状態のリモートPCへの接続を確認をしてみたが、、、
起動しない?
Magic Packet(マジックパケット)を送信する。
Wake on LAN とは?
Wake on LAN (以降「WOL」)は、ルーターからPCに「Magic Packet (マジックパケット) 」を送信してマシンを起動させる仕組み。
その 「Magic Packet」は意図して送る必要があることに気が付いた。。。orz
Magic Packet はリモートデスクトップ接続のプログラムが勝手に送ってくれると思っていました。
「Magic Packet」の送信については、ルーターが対応していたり、リモートツールが対応していたり、専用のツールをインストールしたりと様々あるらしい。
Magic Packet (マジックパケット) を送信する方法
スマホアプリ
というわけで、App Storeから「Magic Packet 」を送信するアプリを探してインストール。
諸設定をして、下記の画面から「Wake Up」をクリックすることでスリープ状態からLAN経由で復帰させることができた。
ちなみにマジックパケットは「ブロードキャストアドレス」に送信しています。
Windows
Windows 10で接続する場合は、「Power Shell」 からMagic Packet が送信できる。
という記事を見つけたので実施してみましたが、これも上手く行きました。
$mac_addr = @("**:**:**:**:**:**") ← MAC アドレスを入力。
$header=[byte[]](@(0xFF)*6)
foreach ($item in $mac_addr){
Write-Host "send magic packet to:" $item
$addr = [byte[]]($item.split(":") | %{ [Convert]::ToInt32($_, 16)});
$magicpacket = $header + $addr * 16;
$target = [System.Net.IPAddress]::Broadcast;
$client = New-Object System.Net.Sockets.UdpClient;
$client.Connect($target, 2304);
$client.Send($magicpacket, $magicpacket.Length) | Out-Null
$client.Close();
Write-Host "Send magic packet to:" $item -ForegroundColor Green
}
MAC アドレスを入力したら、Power Shell に貼り付けして、Enterキーを押すと、
Magic Packet が入力したMACアドレス宛に届きます。
※正確にはネットワーク全体にマジックパケットを送信しています。
ブロードキャストアドレスは「255.255.255.255」になっています。セグメント単位のブロードキャストにしたい場合は、$target の行を以下のように書きます。
$target = [system.net.ipaddress]::parse("192.168.3.255");
送信ポートを変更したい場合は、Client.Connect()の記述で変更します。
$client.Connect($target, 9);
Linux(ラズパイ)
wakeonlan [-h] [-v] [-i IP_address] [-p port] [-f file] [[hardware_address] …]
Options
-h
this information
-v
displays the script version
-i ip_address
set the destination IP address
default: 255.255.255.255 (the limited broadcast address)
-p port
set the destination port
default: 9 (the discard port)
-f file
uses file as a source of hardware addresses
wakeonlan の後にマックアドレスを入れます。
詳細というか、検証したときの投稿がこちら。ヨカッタラミッテッテ。
電源オフ状態からの、電源オン。
Wake on Lan で「スリープ解除」を確認できたので、次は「電源オン」を目標に。
現時点では、電源をオフにした状態からのパワーオンができなかった。
電源が入っていない状態のPCに対してWOL するには、追加で電源周りの下記の設定が必要でした。
電源オフ時の電源供給の状態が重要らしい。
M4600のイーサネットアダブタ(有線)ではこの設定で電源オンができることが確認できた。
しかし、Wi-Fi 接続する方の無線LAN アダブタではできなかった。
どうやら、ネットワークカードの問題で実現できなさそうだ。というとが分かったのでWiFi 経由での電源ON は諦めます。
当初の目標「スリープ状態からの復帰 + リモートPC接続」はできたので、これでOKです。
電源OFF → WOL 電源ON!!! をしたいパソコンは、有線LAN で接続する。
Wake On LAN 設定について、まとめ。
- スリープモード中の端末にリモートデスクトップ接続するには、
事前に「マジックパケット」を対象の端末に送りスリープモードを解除する必要があります。 - マジックパケットで端末のスリープモードを解除するには、
BIOS やネットワークカードで「Wake on Lan」の機能を有効にしておく必要があります。 - マジックパケットは「ブロードキャスト」で送信します。
Wi-Fi 経由での WOL(Wake on LAN)でスリープモードを解除するまで。
- 環境の準備
AC アダプタは挿しっぱなしにする。(ノートPC の場合)
Magicpacket を送信するツールの準備。(スマホのアプリとかでOK)
ネットワークアダプタがWOL に対応していること。(大体しているとは思う^^) - BIOS の設定
Wake On Lan的な設定を見つけて有効化する。 - ネットワークアダプタの設定
このデバイスで、コンピューターのスタンバイ状態を解除できるようにする →チェック入れる。
Wake On Magic Packet →有効
Wake On LAN する環境
- ACアダプタは常時挿しっぱなし。
(ノートPC の場合です。機種で差があるかも。
BIOS のWake On Lan 設定の画面に注記など情報があると思います。)
- 対象のPC に「Magicpacket を送信するツール」が必要。(スマホのアプリ、Windows のPowerShell、Linux など。)
※Paspberry Pi や、Linux 端末であれば、簡単にWOL のツールが使用できます。
※インターネット経由でWOL する場合は、ルータがインターネットWOL に対応している必要があります。
- WOL に対応しているネットワークアダプタを使用していること。
BIOS 設定
- BIOS 設定画面で「Wake On LAN」的な設定を見つけて「Enable」的な値に設定する。
(電源管理的なの設定の中に入っていると思います。)
パソコンの電源ON 時に【F12】 キー押すとかでBIOS 設定画面を起動できます。メーカーや機種によって違います。
ネットワークアダプタの設定(構成)で、WOL を有効な感じに設定する。
コントロールパネル >デバイスマネージャ >ネットワークアダプタ >対象のネットワークカード →(右クリックメニュー)プロパティ画面
- 電源の管理タブ
このデバイスで、コンピューターのスタンバイ状態を解除できるようにする
→チェック入れる。
対象のネットワークカードは接続しているネットワークのプロパティなどで確認できます。
- 詳細設定タブ
Wake On Magic Packet
→有効
この状態で、ツールから「Magic Paket」をブロードキャスト送信すれば、スリープモードが解除できる(はず)。
さらに電源オフからのWOL を実施するには。
- 電源プラン
ハイブリッドスリープを許可する →オフ - 電源ボタンの定義
「高速スタートアップを有効にする。」→チェックをはずす。 - ネットワークアダプタ
省電力イーサネット →オフ
注意:設定が変更できないときは、下記のボタンをクリックして変更操作を有効にします。
電源プランの変更
有線LAN 接続ではできても、ワイヤレス 接続でもできるとは限らないので注意。
ネットワークアダプタがWOL 電源ON 機能に対応している必要があります。
- コントロールパネル >電源オプション
>プラン設定の変更 >詳細な電源設定の変更 >スリープ>ハイブリッドスリープを許可する
→オフ
※デスクトップ端末だと、この設定が無いかも。
電源ボタンの定義の変更
- コントロールパネル >電源オプション
>カバーを閉じたときの動作の選択 or 電源ボタンの動作を選択する
(※現在使用可能ではない設定を変更します)
>「高速スタートアップを有効にする。」
→チェックをはずす。
※ノートPCの場合です。
「電源ボタンの操作を選択する」でも同じ画面になります。
ネットワークアダプタの設定変更
- ネットワークアダプタの設定(構成)で、電源設定を変更。
詳細設定タブ >省電力イーサネット(※機種で表示が違うかも。)
→オフ
コントロールパネル >デバイスマネージャ >ネットワークアダプタ >対象のネットワークカード →(右クリックメニュー)プロパティ画面 >詳細設定タブ
編集後記 的な。
検証後に2F に設置してあるM6700 にWOL(ワイヤレス)設定を適用としたところ、スタンバイを解除を可能にする項目がグレーアウトの状態で設定できなかった。
どうも、Wi-Fi のアダプタが対応していないらしい。。。
というわけで、M4600 のアダプタを外しM6700 のアダプタと交換。
M4600 のアダプタ。線が3本繋がれている。
M6700 のアダプタ。真ん中の線が一本少ない。この1本の差なのか!?
付け替えた事で、スタンバイを解除の設定ができるようになったので、アダプタの非対応だったんだなぁと思う。
あと、ワイヤレスでのWOL はやや不安定な感じがします。
有線LAN 接続の場合はバッチリです。
以上です。
ピンバック: インターネット経由でWOLする – .zapping