以下ドキュメントに詳細が書いてあったのでまとめ

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:*"]
    }
  ]
}