0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Tailscaleで拠点間VPNを構築し、相互にルーティングできるようにする

Last updated at Posted at 2025-09-22

実現したいこと(要件)

  • 実家と自宅間の異なるサブネットを接続し、相互ルーティングする
  • IPSecなどすべてを自前設定するとセキュリティリスクや不安定性などの問題を生じる可能性が高いのでできる限りコマンドを叩くくらいの労力で作る(面倒くさいことはやりたくない)

余談:なぜそんなことをするのか

Cisco IP Phoneを大量入手したので実家と自宅の直通内線を構築したかった
拠点間VPNって面倒くさくて金がかかるイメージがあるので金のかからない簡単な構築法の知識がほしかった

設計

  • ネットワークアドレスは既存のまま変更しない
  • 既に利用しているTailscaleのExit Node用のミニPC(Ubuntu24.04)をGWとして利用する(以下MiniPC-GWと表記)
  • 最上位ルーターのルーティングテーブルに相手先NWアドレスとNexthopとしてMiniPC-GWのIPアドレスを指定

トポロジーを書き起こすと以下の通り
01_設計トポロジー.drawio.png
※PBXは省略しています

通信経路・トンネルを書き加えると次のようになる
02_トラフィック経路.png

例えば、Phone1からPhone2に発信する場合には、Phone1からPBXに問い合わせPhone2のIPアドレスを把握した後、一旦デフォルトGW(ここではRT1)にパケットを送信。このとき宛先IPアドレスはPhone2になっている。
RT1はルーティングテーブルに従い、MiniPC-GW1へ当該パケットを送信。
MiniPC-GW1はTailscaleによって自動で作成されるルーティングテーブルに従い、MiniPC-GW2へ送信
MiniPC-GW2は同様にPhone2へ送信するという流れ。

Config投入(ルータ)

使用する機器によって設定方法は千差万別なので、一例を紹介。
GUIタイプなら
「IPv4静的ルーティング」的な設定があるので、そこのエントリに
192.168.0.0/24側RT
宛先:100.64.0.0/10、10.10.0.0./16の2つの宛先、Nexthop:MiniPC-GW1のIPアドレス
10.10.0.0./16側RT
宛先:100.64.0.0/10、192.168.0.0/24の2つの宛先、Nexthop:MiniPC-GW2のIPアドレス
とする。
これで、拠点間VPNの構築が完了

IP Phoneに限らず、PCからのPingを始め、ありとあらゆるパケットを送受信できるようになる。
特定のパケット・宛先を拒否したければ、ACLなどを使ってください。

引っかかったこと

1. Tailscaleのadvertise subnet routeの設定を入れ忘れた

MiniPC-GWのTailscale起動コマンドを

$ sudo tailscale up --accept-routes --advertise-routes=10.10.0.0/16 --snat-subnet-routes=false

として起動した後、TailscaleのコンソールでSubnet routesを有効化(許可)する必要がある。
既にExitNode・Subnet Routesを利用していたものの、諸事情で別アドレスに変更し、再有効化を失念。疎通できなかった。30分くらいWireSharkとにらめっこしていた。アホ。
※詳しくは参考文献を参照。

ちなみに、このコマンドに、

--advertise-exit-node

を追加すると、当該MiniPCをTailscaleのExit Nodeとして使うことができる。
要はフリーWi-Fiの盗聴防止用VPNや、大学のフィルタリング回避用VPN、LAN側ファイルサーバアクセス用VPN・・・として使える。

また、

--snat-subnet-routes=false

をtrueにすると、NATが有効になり、発信側のIPアドレスがMiniPCのものにすり替わる。
ありとあらゆるシステムが疎通不可能になるので、falseでいいと思う。

image.png
↑公式マニュアルより

2.ルーティングテーブルに100.64.0.0/10を入れ忘れた

この謎のアドレス。実は、Tailscaleで使用されるサブネット。(規格的には通信キャリアで使用されているらしい)
Tailscaleでトンネリングされたパケットはこのネットワークの宛先へ飛んで行くのでこのサブネットをルーティングしてあげないと疎通できない。

参考文献・便利リンク

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?