私は近所に別宅を持っているのですが、防犯のためWifiカメラを設定しています。アプリを使えば、いつでも録画内容を確認できるのですが・・・クラウドサーバーを経由するため、シンガポールや香港経由での接続になります。自宅ではHome Assistantが稼働しているので、このシステム経由で別宅のカメラ映像を確認できないかと試行錯誤していました。
VPNには以下のようなパターンがあります。
* リモートアクセスVPN
* 拠点間VPN
* 匿名型?VPN(送信元詐称)
当初やりたかったのは以下のような感じ
リモートアクセス
自宅(光回線) -----------------> 別宅(モバイル回線)
自宅と別宅にはFirewallaというアプライアンスデバイスがあるので、こいつについているVPN Server機能で何とかならないかといろいろ試行錯誤しました。しかし・・・別宅のモバイル回線はCGNAT(キャリアグレードNAT)配下なので自宅側から接続できません。逆方向の別宅->自宅方向はVPN接続できますが、ルーティング設定をどうやっても自宅から別宅側には通信できませんでした。
そこでいろいろ調べてたどり着いたのがTailScaleです。
【外出先】
[iOSデバイス]
▲ ▲
/ \
リモート / \ リモート
アクセス / \ アクセス
/ \
▼ ▼
【自宅 LAN】 ─────────> 【別宅 LAN】
[Ubuntu (NAS)] 片方向のみ [Raspberry Pi]
│ (自宅→別宅) │
▼ ▼
[Home Assistant] [カメラ]
(※iOSから直接アクセス可) (※iOS・自宅からアクセス可)
別宅には防犯装置の通報システムとしてRaspberry Pi Zero Wをこっそり稼働させていたので、これをTailScaleノードにしています。たとえラズパイが盗まれても自宅LANにはアクセスさせないように通信ルールを設定しています。
当初はmineoのSタイプの低速回線だったのですがTailScaleとの相性が微妙で接続までの時間がかかることがあったのですが、Aタイプに変更したところ、それほど待たずに接続できています。
クラウドに依存している部分がネックではありますが、活用させていただきます。