
Mesh網バックボーン:Tailscale・サブネットルーター構築とExit Node分離
こんにちは、Richard King(Ubinity AI)です。
個人で高信頼なホームラボや小規模インフラを運用するエンジニア向けの実践ノウハウをお届けする連載の第4回です。

なぜ従来のVPNでは運用が破綻するのか?
休日に外出しているとき、スマホから自宅のサーバーにアクセスして障害対応を行いたい場面は多々あります。
かつては、クラウド上のVPSにOpenVPNを立てて自宅と接続する構成が主流でした。しかしこの方法には以下の大きな悩みがありました:
すべての通信がVPSを経由するため遅い(往復遅延が150〜300ms)
VPSが落ちたら、自宅のすべてのインフラにアクセスできなくなる
大容量データを転送するとVPSの転送量課金が跳ね上がる
これを根本から変えたのが、現代のWireGuardとTailscaleによる「P2Pメッシュ型ネットワーク」です。

我が家のインフラ構成:Raspberry Pi 4Bをサブネットルーター化
自宅内にある多様な機器やDockerコンテナすべてにTailscaleを導入するのは現実的ではありません。
そこで、常時3.2W程度で稼働するRaspberry Pi 4B(pi4b)を「サブネットルーター」として仕立て、家庭内LAN(192.168.3.0/24)全体を仮想ネットワーク上に広報させています。
さらに、Intel N100ミニPC(n100)を待機系ルーターとして設定し、自動フェイルオーバー体制を整えています。

実際に遭遇した落とし穴:「SSHは繋がるのに、巨大ファイル転送で固まる」
構築時にもっともハマったのが MTUとMSSのミスマッチ でした。
pingは通るし、小さなテキスト編集は問題ないのに、docker pull やPostgreSQLのバックアップ転送を走らせた瞬間にセッションがフリーズするのです。
原因は、TailscaleがRFC 8200に基づき仮想インターフェースのMTUを保守的に1280バイトに設定していることに対し、物理LAN(MTU 1500)との間でPMTUブラックホールが発生したことでした。
以下のiptablesルールをルーターに投入することで、TCPの最大セグメント長(MSS)を自動調整し、完全な安定動作を実現できました。
sudo iptables -t mangle -A FORWARD -o tailscale0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtuカフェの危険なWi-Fiから安全に脱出する「Exit Node」
出張先のホテルやカフェのフリーWi-Fiを使うときは、pi4b を「Exit Node」に指定します。
こうすることで、スマホやPCのすべてのインターネット通信が自宅の回線経由に暗号化トンネリングされ、公衆無線LANでの中間者盗聴やDNS偽装を効果的に遮断できます。
まとめと次回予告
TailscaleとWireGuardを活用することで、ポート開放を一切行うことなく、世界中どこからでも自宅のローカルIP(192.168.3.x)へミリ秒単位で直結できるようになりました。
次回はいよいよ、 第005章「宅内名前解決の基盤:dnsmasqによるスプリットホライズンと上流DNS汚染防御」 の構築手順を徹底解説します。どうぞお楽しみに!