Tailscaleロゴ

Viaによる経路の制御

最終検証日:
翻訳: 竹洞 陽一郎

viaフィールドは、グラントに経路の制御を加えるものです。
送信元から宛先への通信を、どのExit Node、サブネットルーター、アプリコネクタを経由させるかを指定できます。
たとえば、エンジニアリングチームからGitHub用のアプリコネクタへの通信を、特定のExit Node経由に固定するといった使い方ができます。

主な用途は次のとおりです。

viaフィールドは省略できます。省略した場合、または[]やnullを指定した場合は、利用可能な経路のいずれを使ってもリソースへアクセスできます。

制限事項

構文

"grants": [
  {
    "src": ["<source>"],
    "dst": ["<destination>"],
    "via": ["tag:<tag-name>"],
    "ip": ["*"]
  },
]

この記述により、<source>から<destination>への通信は、指定したタグを持つデバイスを経由します。

ビジュアルポリシーエディタを使ってtailnetポリシーファイルを管理することもできます。
操作方法については、ビジュアルエディタリファレンスを参照してください。

記述例

デバイスポスチャに応じて経路を分ける

デバイスポスチャの条件に応じて、同じリソースへのアクセス経路を分けられます。

次の例では、group:engのメンバーがposture:latestMacの条件(安定版のTailscaleクライアントを実行するmacOS 13.4.0)を満たしていれば、利用可能な任意のルーター経由で192.0.2.0/24へアクセスできます。
それ以外のメンバー(autogroup:member)は、オフィスに設置したルーター(tag:office-router)を経由する必要があります。

"postures": {
  "posture:latestMac": [
    "node:os == 'macos'",
    "node:osVersion == '13.4.0'",
    "node:tsReleaseTrack == 'stable'",
  ]
},
"grants": [
  {
    "src": ["group:eng"],
    "srcPosture": ["posture:latestMac"],
    "dst": ["192.0.2.0/24"],
    "ip": ["*"],
  },
  {
    "src": ["autogroup:member"],
    "dst": ["192.0.2.0/24"],
    "via": ["tag:office-router"],
    "ip": ["*"],
  },
]

デバイスポスチャの条件の書き方は、デバイスポスチャを参照してください。

拠点ごとにExit Nodeを分ける

地域ごとに、近い場所のExit Node経由でインターネットへ出るよう指定できます。

次の例では、トロントのオフィスの所属者(group:tor)とシアトルのオフィスの所属者(group:sea)が、それぞれの拠点のExit Node(tag:exit-node-tor、tag:exit-node-sea)を経由します。
エンジニアリングチーム(group:eng)は、任意のExit Nodeを使うか、Exit Nodeを経由せず直接接続できます。

"grants": [
  {
    "src": ["group:tor"],
    "dst": ["autogroup:internet"],
    "via": ["tag:exit-node-tor"],
    "ip": ["*"],
  },
  {
    "src": ["group:sea"],
    "dst": ["autogroup:internet"],
    "via": ["tag:exit-node-sea"],
    "ip": ["*"],
  },
  {
    "src": ["group:eng"],
    "dst": ["autogroup:internet"],
    "ip": ["*"],
  },
]

Exit Nodeの設定については、Exit Nodeを参照してください。

アプリコネクタごとに経路を分ける

利用者のグループごとに、SaaSアプリケーションへのアクセスに使うアプリコネクタを指定できます。

次の例では、group:github-usersはGitHub用のアプリコネクタ(tag:github-appconnector)を、group:salesforce-usersはSalesforce用のアプリコネクタ(tag:salesforce-appconnector)を経由します。

"grants": [
  {
    "src": ["group:github-users"],
    "dst": ["autogroup:internet"],
    "ip":  ["*"],
    "via": ["tag:github-appconnector"],
  },
  {
    "src": ["group:salesforce-users"],
    "dst": ["autogroup:internet"],
    "ip":  ["*"],
    "via": ["tag:salesforce-appconnector"],
  }
]

アプリコネクタについては、アプリコネクタの仕組みを参照してください。
複数のアプリコネクタを冗長化する場合は、高可用性の設定も参照してください。

原文:Route filtering with Via(Tailscale公式ドキュメント)