Tailscaleでスリープ中PCを起こす構成を、通信経路から順に整理する
結論
外出先からTailscale経由で自宅PCをWake on LANで起こすときは、Subnet Routerが作るIP経路だけで成功を判断できません。LAN側でマジックパケットを送る常時起動端末と、スリープ中もネットワークアダプターが起動信号を待てる条件を分けて確認します。
Subnet Routerを有効にすると、Tailscaleを入れられないLAN内機器のIPアドレスへ通信できます。ただし、離れた場所からLAN内へブロードキャストする通信を、そのまま自宅LANへ転送する機能ではありません。
Wake on LANでは、対象PCを起こすマジックパケットをネットワークアダプターへ届けます。よく使われるのは、UDPを使って同じLAN内へ一斉に送る方法です。
Tailscale側:LANのIP範囲までの経路を作る
LAN側 :対象PCのネットワークアダプターへ
マジックパケットを送る
そのため「LAN宛てのIP経路を設定したので、ブロードキャストも必ず届く」とは判断できません。実際の動作は環境によって変わります。確認する条件は次の4つです。
- 使うOS
- Tailscaleの設定
- Wake on LANを送るアプリ(WoLアプリ)
- マジックパケットの宛先
まず、同じLAN内から対象PCを起動できるかを確認します。
僕の構成では、起動中のAndroidを自宅LAN側へ置きました。外出先から操作し、PCが起動するところまで確認しました。
ただし、Android版TailscaleとWoLアプリが、受け取った通信をどのようにLANへ送るかは未確認です。構成を再現するときは、Android経由でLAN内のIPへ届くことと、WoL操作で実際にPCが起動することを分けて試します。
参考:Subnet routers、Kernel vs. netstack subnet routing
IP経路だけではWoLの成功を判断できず、LAN側でマジックパケットを送る役割が必要です。次は、スリープ中のPC自身がその役割を担えるかを見ます。
スレッドを開く スレッドを閉じる 2
LAN側に送信役が必要でも、PCがスリープしてTailscaleも止まる構成では、そのPC自身に送信役を任せられません。
TailscaleはOS上で動くソフトウェアです。PCがスリープし、OSとアプリの実行が止まれば、Tailscaleも新しい通信へ応答できません。
一方、Wake on LANに対応したネットワークアダプターは、対応する低電力状態でマジックパケットを検知し、PCへ復帰を要求できます。この役割は、停止したTailscaleアプリではなく、通電が続くネットワークアダプターが担います。
スリープ中のPC
├─ Tailscaleアプリ:停止しており応答できない
└─ Wake on LAN対応ネットワークアダプター:
条件が合えばマジックパケットを待てる
利用できるスリープ状態やWake on LANの可否は、次の条件で変わります。
- PCが対応するスリープ状態
- ネットワークアダプター(NIC)とドライバーのWake設定
- UEFI(PC起動前の設定画面)のWake設定
- 有線または無線の接続方法
Windowsならpowercfg /aで利用可能なスリープ状態を確認し、デバイス側のWake設定も別に確認します。
この制約を避けるには、自宅LANへ常時起動の端末を置きます。外部からはその端末までTailscaleで到達し、最後のWake on LANはLAN側から送る役割分担です。
参考:Wake on LAN behavior、About Network Wake-Up Events
スリープ中のPCとは別に、Tailscaleへ応答してLAN側からWoLを送れる常時起動端末が必要です。続けて、その役割をAndroidへ任せる場合の確認へ進みます。
その常時起動端末として、僕は使っていなかったAndroidを置きました。初回の起動成功だけでなく、画面消灯後と再起動後も中継できるかを確認します。
自宅LAN宛ての通信をAndroid経由で送れるよう、LANの経路をTailscaleへ知らせました。外出先のスマホからWoLアプリを操作すると、PCが起動するところまでは確認しました。
ただし、Androidの省電力機能であるDozeやApp Standbyにより、未使用時にはバックグラウンドのCPU処理やネットワーク利用が制限されます。端末メーカー独自の省電力設定が重なる場合もあります。
確認は次の順に分けます。
- 画面を点灯した状態で、Tailscale経由の到達とPC起動を確認する
- 画面を消し、時間を置いた後も同じ操作を繰り返す
- 失敗時は、Wi-Fi、Tailscale接続、アプリの省電力対象を一つずつ確認する
- 端末の再起動後にも、Wi-Fi、Tailscale接続、WoLアプリが使える状態へ戻るか確認する
設定名や制限はAndroidの版とメーカーで変わります。特定の画面名を手順として固定せず、画面消灯後と再起動後の動作を合格条件にします。
参考:Subnet routers — Android、Optimize for Doze and App Standby
TailscaleのIP経路とWoLの到達を分けると、スリープ中のPCとは別に常時起動端末を置く理由が見えます。Androidを使う場合は、PCが一度起動したことだけで終えず、中継役を継続できる条件まで確認します。