以下ドキュメントに詳細が書いてあったのでまとめ
tailscaleは全てのクライアントに直接クライアントアプリをインストールする(Tailscale Networkに参加する)ことを推奨しているが、それが難しい場面もある。例えばプリンター等の組み込みデバイスはインストールできないし、Private Cloud等で仮想サーバ数百台〜数千台とか構築しててそれ全部に入れるのかと言われると...という場面が想定される。
このようなケースでは、"Subnet router" を設定できる(relay node とも呼ばれてたらしい)。2024年時点では、この構成でVPN Serverを構築する企業が多いと思われる。詳細な手順はドキュメントに委ねるが、Linuxの場合は
- tailscaleをインストール
- IP Forwardingを有効化
- ※ 利用するプラットフォームによっては、OS上の設定に加えてインスタンス作成時にIP Forwardingを有効化する必要がある
tailscale upする際に、--advertise-routes=xxxを指定してSubnet routerとしてtailscaleを起動- tailscaleのadmin consoleから先ほど指定したroutesを許可する
access rule
基本的にはこれまでの設定でSubnet routerを利用可能だが、追加でaccess ruleを設定することもできる。例えば、開発ユーザーは開発用のセグメントにアクセスできるが、本番セグメントや管理用セグメントは管理ユーザのみアクセスできるようにしたい場合は、以下のような設定が可能。
{
"groups": {
"group:admin": ["alice@example.com"],
"group:dev": ["bob@example.com"]
},
"acls": [
// manegement subnet 192.168.10.0/24
// development subnet 192.168.20.0/24
{ "action": "accept",
"src": ["group:admin"],
"dst": ["192.168.10.0/24:*", "192.168.20.0/24:*"]
},
{ "action": "accept",
"src": ["group:dev"],
"dst": ["192.168.20.0/24:*"]
}
]
}