はじめに
外出中に自宅のWindowsが必要になることがある。Windowsにしか入っていない開発環境があって、これだけはどうしても代替が効かない。
かといってWindowsを起動しっぱなしで出るのも嫌なので、スリープ中のWindowsをコマンド一発で起こして操作できる仕組みをWake-on-LAN + Tailscale + RDPで作った。
| 技術 | 役割 |
|---|---|
| Wake-on-LAN(WoL) | スリープ中のPCをネットワーク経由で起動する |
| Tailscale | インターネット越しにデバイス同士をVPNでつなぐ |
| RDP(リモートデスクトップ) | Windowsの画面を遠隔操作する |
いきなり外出先から試すと詰まりやすいので、まず自宅LAN内で動かしてからTailscaleを足す順番で進める。
- フェーズ1:自宅LAN内で Wake-on-LAN + RDP を動かす
- フェーズ2:Tailscale を足して外出先から同じことをする
全体構成と登場人物
登場するデバイス
| デバイス | OS | 役割 |
|---|---|---|
| Mac Studio | macOS | 自宅の操作端末(普段使い) |
| MacBook Pro | macOS | 外出先の操作端末 |
| Windows 11 Pro | Windows | 接続先・有線LAN接続 |
| Raspberry Pi | Linux | WoLの中継役・常時起動 |
WindowsをWoLで起こすには常時起動しているデバイスが必要で、長い間眠っていたRaspberry Pi 2 Model B(UD-RP2)をその役割に使った。古い機種だが、WoLパケットを送るだけなら十分。消費電力も低いので常時起動に向いている。
フェーズ1:自宅LAN内の構成図
Mac StudioからRaspberry PiにSSH接続してWoLコマンドを実行し、Raspberry Piがスリープ中のWindowsにマジックパケットを送って起動させます。起動後はMac StudioからWindowsにRDPで直接接続します。
シーケンス図
各デバイス間の通信の流れを示します。Raspberry Piを中継してWindowsを起動させ、起動完了を待ってからRDP接続する順序がポイントです。
フェーズ2:Tailscale経由の構成図
外出先のMacBook ProとRaspberry Pi・WindowsがTailscale VPN経由でつながります。フェーズ1と操作の流れは同じですが、SSHもRDPもすべてTailscaleのIPアドレスを使って通信します。
シーケンス図
フェーズ1との違いは、SSHとRDPがTailscale経由になる点と、Windows起動後にTailscaleサービスが自動接続されるのを待つ点です。
フェーズ1:自宅LAN内でWoL環境を作る
必要条件
フェーズ1を動かすには以下が必要です。
- Windows PC が 有線LAN接続であること(WoLは無線LANでは基本動作しない)
- 自宅ネットワークに常時起動しているデバイスがあること(今回はRaspberry Pi)
Windowsの設定
1. BIOS/UEFIでWoLを有効にする
PCの電源投入直後に Del や F2 キーを押してBIOS/UEFIを開き、Wake-on-LAN または Power On By PCI-E の項目を有効にします。
BIOS画面はメーカー・機種によって異なります。「Wake on LAN」「Resume By PCI-E」などの名称で見つかることが多いです。
2. NICドライバのWoL設定を有効にする
「デバイスマネージャー」→「ネットワークアダプター」から有線NICを右クリックして「プロパティ」を開きます。
「電源の管理」タブを開き、以下の項目すべてにチェックを入れます。
- このデバイスで、コンピューターのスタンバイ状態を解除できるようにする
- 管理ステーションでのみ、コンピューターのスタンバイ状態を解除できるようにする
- Wake on Magic Packet
続いて「詳細設定」タブを開き、プロパティ一覧から 「ウェイク・オン・マジック・パケット」 を選択して、値を 「有効」 に設定します。
3. リモートデスクトップ(RDP)を有効にする
「設定」→「システム」→「リモートデスクトップ」を開き、「リモートデスクトップを有効にする」をオンにします。
WindowsのローカルIPを固定する
RDP接続先のIPが変わると接続できなくなります。ルーターのDHCP固定設定でWindowsのIPを固定しておきます。この記事では 192.168.68.111 を使用します。
WindowsのNIC MACアドレスを確認する
後でWoLの設定に使うため、有線NICのMACアドレスをメモしておきます。コマンドプロンプトで確認できます。
ipconfig /all
「イーサネット アダプター」の「物理アドレス」がMACアドレスです(例:9C-6B-00-79-C7-D9)。
Raspberry Piの設定
1. wakeonlanのインストール
sudo apt install -y wakeonlan
2. wake.sh の作成
XX:XX:XX:XX:XX:XX の部分は先ほど確認したWindowsのMACアドレス(コロン区切り)に置き換えてください。
echo "wakeonlan XX:XX:XX:XX:XX:XX" > ~/wake.sh
chmod +x ~/wake.sh
3. ローカルIPを固定する
Raspberry PiのローカルIPが変わるとSSH接続できなくなります。ルーターのDHCP固定設定、またはRaspberry Pi側でスタティックIPを設定しておきます。この記事では 192.168.68.74 を使用します。
Macの設定
1. wakeエイリアスの設定
~/.zshrc に以下を追記します。IPアドレスはRaspberry PiのローカルIPに合わせてください。
# ~/.zshrc
alias wake="ssh ユーザー名@192.168.68.74 ./wake.sh"
追記後、反映します。
source ~/.zshrc
2. Windows Appのインストール
App StoreからWindows Appをインストールします。
フェーズ1の動作確認
すべての設定が終わったら動作を確認します。
手順
- Windowsをスリープ状態にする
- Mac のターミナルで
wakeを実行する
wake
- しばらく待ってWindowsが起動したら、Windows Appから接続する
- 接続先にWindowsのローカルIPアドレスを指定する
wake 実行後、Windowsが起動するまで30秒〜1分程度かかります。すぐにRDP接続しようとしても繋がらないので少し待ちましょう。
フェーズ2:Tailscale経由で外出先から接続する
フェーズ1が自宅LAN内で動作することを確認できたら、次はインターネット越しに同じことをします。
Tailscaleとは
Tailscaleは、複数のデバイスを仮想的なプライベートネットワーク(VPN)でつなぐサービスです。インストールしてログインするだけで、異なるネットワークにあるデバイス同士が直接通信できるようになります。
各デバイスに 100.x.x.x という固定のIPが割り当てられ、どこからでもそのIPで接続できます。
Tailscaleのセットアップ
1. 全デバイスにTailscaleをインストール
以下のデバイスすべてに Tailscale をインストールして、同一アカウントでログインします。
- MacBook Pro(外出先の操作端末)
- Raspberry Pi
- Windows 11 Pro
Tailscale公式サイトからOSに合わせてインストールします。
Raspberry Piへのインストールはaptで入る。
sudo apt update
sudo apt install -y tailscale
sudo tailscale up
起動確認は systemctl status tailscaled で。active (running) になっていればOK。
sudo systemctl status tailscaled
● tailscaled.service - Tailscale node agent
Loaded: loaded (/lib/systemd/system/tailscaled.service; enabled; preset: enabled)
Active: active (running) since Fri 2026-05-29 08:24:37 JST; 1 month 1 day ago
Status: "Connected; xxxxx@gmail.com; 100.83.12.94 fd7a:115c:a1e0::9c01:c63"
スリープ復帰後も自動起動されるか、enableになっているかも確認しておく。
systemctl is-enabled tailscaled
enabled
2. 管理画面でデバイスの接続を確認する
Tailscaleの管理画面(login.tailscale.com)にアクセスし、全デバイスがオンラインになっていることを確認します。各デバイスに割り当てられたIPアドレスをメモしておきます。
3. WindowsのTailscaleがスリープ復帰後に自動接続されることを確認する
Windowsがスリープから復帰したとき、Tailscaleが自動接続されていないとRDPできない。ここを確認し忘れると、rwakeを実行してもRDPが繋がらずに詰まる。
Tailscaleのサービスが「自動(スタートアップの種類)」かつ「実行中(状態)」になっていることを確認します。
タスクマネージャー → 「サービス」タブ → Tailscale を探します。
Macの設定変更
外出先用のコマンドを追加します。~/.zshrc に rwake エイリアスを追記します。
# ~/.zshrc
alias wake="ssh ユーザー名@192.168.68.74 ./wake.sh" # 自宅用(LAN内)
alias rwake="ssh ユーザー名@100.83.12.94 ./wake.sh" # 外出先用(Tailscale経由)
source ~/.zshrc
フェーズ2の動作確認
手順
- MacBook ProでTailscaleが接続中であることを確認する
- Windowsをスリープ状態にする
- MacBook Proのターミナルで
rwakeを実行する
rwake
- しばらく待ってWindowsが起動・Tailscale接続されたら、Windows AppからWindowsのTailscale IP(
100.119.171.112)に接続する
WindowsがスリープからTailscaleに接続されるまで、1〜2分かかることがあります。焦らず待ちましょう。
まとめ
セットアップで一番ハマりやすいのはNICのWoL設定とTailscaleの自動起動の2点で、ここさえ確認しておけばあとはほぼ一発で動く。
外出先でTailscaleに接続して rwake を打てば、Raspberry PiがWindowsを起こして1〜2分後にはデスクトップが手元に出てくる。電源をつけっぱなしにしなくていい。











