はじめに
Tailscaleには、通常の端末間接続に加えて、Subnet RouterとExit Nodeという機能があります。
どちらもTailscaleをインストールした端末を経由して通信する仕組みですが、それぞれ異なる目的で利用します。
- Subnet Router:Tailscaleをインストールしていない機器が存在するネットワークへアクセスする
- Exit Node:インターネット向けの通信を、指定した別の端末から送信する
どちらも別の端末を経由しますが、通信の目的と経路が異なります。
今回は、それぞれの仕組みと使い分けについて整理します。
Tailscaleの基本的な仕組み
Tailscaleは、WireGuardを利用してプライベートネットワークを構築できるサービスです。
Tailscaleをインストールした端末を同じネットワーク(tailnet)に参加させると、離れた場所にある端末同士でも通信できるようになります。
例えば、次のような環境を考えます。
【外出先】
ノートPC(Tailscale)
│
│ Tailscale
│
【自宅】
Linuxサーバー(Tailscale)
両方の端末が同じtailnetに参加していれば、外出先のノートPCから自宅のLinuxサーバーへ接続できます。
通常のTailscaleによる端末間接続では、それぞれの端末にTailscaleをインストールします。
しかし、自宅のNASなど、Tailscaleを直接インストールできない機器や、インストールしていない機器にアクセスしたい場合もあります。
このような場合に利用できるのがSubnet Routerです。
Subnet Routerとは
Subnet Routerは、Tailscaleに参加している端末を経由して、別のネットワーク内にある機器へアクセスできるようにする機能です。
例えば、自宅に次のような環境があるとします。
【外出先】
ノートPC(Tailscale)
│
│ Tailscale経由
▼
【自宅LAN:192.168.1.0/24】
Linuxサーバー
(Tailscale / Subnet Router)
│
├── NAS
│ 192.168.1.10
│
└── 自宅サーバー
192.168.1.20
(Tailscale未導入)
自宅のLinuxサーバーをSubnet Routerとして設定すると、外出先のノートPCから、自宅LAN内のNASや自宅サーバーへアクセスできるようになります。
このとき、NASや自宅サーバーにはTailscaleをインストールする必要がありません。
通信の仕組み
Subnet Routerでは、接続先となるネットワークの範囲を指定します。
例えば、自宅LANが192.168.1.0/24の場合、Linuxサーバーにこのネットワークへの経路を設定します。
外出先のノートPCから192.168.1.10のNASへアクセスすると、Tailscaleを経由して自宅のLinuxサーバーに通信が送られます。
Linuxサーバーは受け取った通信を自宅LAN内のNASへ転送します。
一方で、ノートPCから一般的なWebサイトへアクセスする場合は、通常のインターネット接続を利用します。
つまり、指定したネットワークへの通信だけを、Tailscale経由で転送するのがSubnet Routerの基本的な役割です。
Exit Nodeとは
Exit Nodeは、Tailscaleに参加している別の端末を、インターネット通信の出口として利用する機能です。
先ほどと同じ環境で、自宅のLinuxサーバーをExit Nodeとして設定した場合を考えます。
【外出先】
ノートPC(Tailscale)
│
│ インターネット向け通信
│ Tailscale経由
▼
【自宅】
Linuxサーバー
(Tailscale / Exit Node)
│
│ 自宅のインターネット回線
▼
インターネット
この構成では、外出先のノートPCからWebサイトにアクセスする際の通信が、自宅のLinuxサーバーを経由するようになります。
通常、外出先のノートPCからインターネットに接続すると、その場所で利用している回線から通信が送信されます。
しかし、Exit Nodeを利用すると、通信はTailscaleを経由して自宅のLinuxサーバーに送られ、そこからインターネットへ転送されます。
そのため、接続先のWebサイトからは、基本的に自宅のインターネット回線のグローバルIPアドレスが通信元に見えます。
Exit Nodeの利用例と注意点
例えば、外出先でも自宅のインターネット回線を経由してWebサイトにアクセスしたい場合に利用できます。
また、外出先のネットワークからインターネットへの通信を自宅経由にまとめたい場合にも利用できます。
ただし、通信は自宅のLinuxサーバーを経由するため、通信速度や安定性は自宅側のネットワーク環境にも影響されます。
また、Exit Nodeを利用したからといって、インターネット上で匿名になるわけではありません。
Subnet RouterとExit Nodeの違い
ここまでの内容を比較してみます。
| 項目 | Subnet Router | Exit Node |
|---|---|---|
| 主な目的 | 特定のネットワークへアクセスする | インターネット通信の出口を変更する |
| 主な通信先 | 自宅LAN内の機器 | インターネット |
| 通信の経路 | 指定したネットワークへの通信を中継 | インターネット向け通信を中継 |
| 利用例 | 外出先からNASへアクセスする | 外出先から自宅回線経由でWebサイトを閲覧する |
| Tailscale未導入機器へのアクセス | 可能 | そのための機能ではない |
| 通常のインターネット通信 | 原則として変更しない | Exit Node経由になる |
どちらを利用するかは、どこへアクセスしたいのかによって異なります。
自宅LAN内のNASやサーバーへアクセスしたい場合はSubnet Routerを利用します。
一方で、自宅のインターネット回線を出口として利用したい場合はExit Nodeを利用します。
どちらも自宅のLinuxサーバーを経由しますが、通信の目的が異なります。
設定方法の違い
両者は通信経路が異なるため、Tailscale側の設定も異なります。
ここではLinuxサーバーを利用する場合の代表的な設定コマンドを紹介します。
なお、以下のコマンドはTailscaleが導入済みであることを前提とした設定例です。実際の利用にはIP転送などの事前設定も必要です。
Subnet Routerの設定
例えば、自宅LANのネットワークが192.168.1.0/24の場合は、次のように指定します。
sudo tailscale set --advertise-routes=192.168.1.0/24
この設定で、LinuxサーバーからTailscaleに192.168.1.0/24への通信を中継できることを通知します。
その後、Tailscaleの管理画面で、指定したネットワークへの経路を承認します。
なお、経路の自動承認が設定されている場合は、手動承認が不要になることもあります。
Exit Nodeの設定
Exit Nodeの場合は、次のように設定します。
sudo tailscale set --advertise-exit-node
この設定で、LinuxサーバーをExit Nodeとして利用できることをTailscaleに通知します。
その後、Tailscaleの管理画面でExit Nodeとしての利用を許可します。
ただし、これだけでは外出先のノートPCの通信経路は変わりません。
実際に利用するノートPC側で、使用するExit Nodeを選択する必要があります。
この点はSubnet Routerとの違いの一つです。
なお、どちらの機能もTailscaleのアクセス制御設定によって、利用できる端末や接続先が制限される場合があります。
Subnet RouterとExit Nodeは併用できるのか
Subnet RouterとExit Nodeは、同じ端末で併用することもできます。
自宅のLinuxサーバーに両方を設定すると、外出先のノートPCから次のような使い方ができます。
- 自宅LAN内のNASやサーバーにアクセスする
- 自宅のインターネット回線を経由してWebサイトにアクセスする
ただし、両方を設定した場合も、通信先に応じて適用される経路が異なります。
また、Subnet RouterのSNAT(送信元アドレス変換)を無効にする場合など、ネットワーク構成によっては追加の経路設定が必要になります。
そのため、両方を併用する場合は、通信経路やネットワーク設定を考慮する必要があります。
まとめ
TailscaleのSubnet RouterとExit Nodeは、どちらも別の端末を経由して通信する仕組みですが、目的が異なります。
- Subnet Router:自宅LANなど、特定のネットワークにアクセスするための仕組み
- Exit Node:別の端末をインターネット通信の出口として利用する仕組み
Subnet Routerは「特定のネットワークに入るための入口」、Exit Nodeは「インターネットに出るための出口」と考えると、違いを理解しやすいと思います。
どちらを利用するべきか迷った場合は、まず通信先が自宅LANなどの特定のネットワークなのか、それともインターネットなのかを考えるとよいでしょう。