VPN 経由で家族にカメラへのリモートアクセスを与える方法
プライベートな VPN 経路は公開カメラポートの代わりになりますが、視聴者、サービス、経路を絞り込む場合に限ります。設計して検証すべき境界はここにあります。
家庭用カメラを VPN 経由で到達可能にすべきかを決めるのは三つの問いであり、そのどれもカメラのブランドの話ではない。誰が見る必要があるのか、その人が正確に何に到達すべきか、そしてその人にとっても到達できてはならないものは何か。ゲートウェイを買う前にこれらに答えること。答えがネットワークの形を決めるのであって、その逆ではない。VPN の入口は、そこに結び付ける経路とアカウントと同じだけしか私的にならない。
誰が入るのか、どの ID で入るのかを決める
視聴者の一覧から始め、ゲートウェイが対応していれば各自に別々の VPN ID を与える。ID を分ければ、削除は家族全員が共有するパスワードの変更ではなく一度の操作で済む。共有プロファイルでは、どの接続も同じ人物に見えるため、ログも役に立たなくなる。
各視聴者が何に到達してよいかを書き出す。通常の答えは一つのカメラの視聴サービスであり、カメラの管理画面ではなく、ましてルーターではない。
その一覧が認可モデルであり、ゲートウェイを交換しても生き残るべきものだ。新しいルーターが利用者ごとの経路を表現できなければ、設計は静かに all-or-nothing になっている。アドレスを配るだけのゲートウェイより、ID を宛先に結び付けられるゲートウェイを選ぶこと。
経路を一つのカメラサービスに絞る
スマートフォンを自宅 LAN に置く VPN は、視聴以上のものを与えてしまう。許可する経路をカメラのアドレスと、そのアプリが実際に使うポートに絞ること。アプリが検出用ブロードキャストを必要とするなら、それは意図して許可すべき別個の依存であり、サブネット全体を開ける理由にはならない。
カメラが VPN クライアントを実行できない場合は、ゲートウェイでトンネルを終端し、承認済みの宛先だけを経路に載せる。カメラがサーバーになる必要はない。
スマートフォンの商用インターネット出口 VPN はこれではない。それはスマートフォンの通信がどこから来たように見えるかを変えるだけで、自宅ネットワークへの帰り道は作らない。両者を混同することが、VPN 設定でもカメラが見えない最もよくある理由だ。
視聴と管理を分ける
カメラ自身のアカウントはネットワーク経路と同じくらい重要だ。製品が用意していれば、一般の家族には視聴専用の役割を使い、管理者パスワードはグループチャットに出さないこと。ネットワークのフィルタリングは一つの HTTPS リスナーを共有する二つの機能を分けられないので、視聴と管理が同じポートにあるなら、カメラの認可制御が境界になる。
ベンダーのアプリがリモート視聴にクラウドリレーを黙って使っていないか確認する。使っているなら、VPN 経路は完全に迂回されている可能性がある。
クラウドアクセスは自動的に誤りではないが、判断であるべきだ。プライベート経路が意図したものであるなら無効にし、無効化がアプリの依存するファームウェア更新や通知も止めうることに注意する。
祝う前に他の扉を閉じる
ポート転送を一つ外しても、カメラがインターネットから到達不能になった証明にはならない。残った UPnP マッピング、有効なベンダーのクラウド機能、二つ目のリレーは、いずれも忘れていた経路を与えうる。 対応しているリモートアクセス設定を棚卸しし、どれが本当に必要かを決める。
ルーターが明確に表現できるなら、カメラ用の別セグメントは役に立つ。承認済みの経路からの視聴を許可し、カメラがノート PC やスマートフォンに到達するのを遮断する。
更新や視聴の流れが止まるほど強く分離しないこと。後で圧力を受けて規則を広げるのではなく、例外を文書化する。そして、セグメント化は既定の管理者アカウントや未対応ファームウェアのカメラを直さないことを覚えておく。それは侵害されたカメラが到達できる範囲を制限するだけだ。
両側から境界を試す
適格性は感覚ではなく観察の集合だ。承認済みのリモートクライアントから映像が読み込まれることを確認する。未承認のアカウントからは読み込まれないことを確認する。インターネット側からカメラのポートが閉じていることを確認する。
ネットワーク外のホストからの簡単な外部確認:
nmap -Pn -p 443,554,8000 203.0.113.10
curl -sS -o /dev/null -w "%{http_code}" --max-time 5 http://203.0.113.10/
次に削除と再起動を試す。一人の視聴者の ID を削除し、他に影響せずアプリが動かなくなることを確認する。ゲートウェイを再起動し、経路と拒否規則が戻ることを確認する。メモリにしか存在しない規則は境界ではないからだ。公開アクセスを意図的に外したなら、その拒否も前提にせず検証する。