Tailscale exit node(イグジットノード)とは、手元のTailscaleネットワークにある1台を「インターネットの出口」にする機能です。ある技術ブログの実践記では、自宅のProxmoxサーバーにLXCコンテナ(1 vCPU、512 MB RAM)を立ててexit nodeにし、tracerouteで経路が変わる様子を確認しています。この記事ではその内容をもとに、仕組み、構築手順、確認方法、サブネットルーターとの違いを整理します。
30秒でわかる
・exit nodeは0.0.0.0/0と::/0をアドバタイズし、選んだクライアントの全通信をそのマシン経由にする
・有効にするとtracerouteの1ホップ目がexit nodeのTailscale IPになり、Webサイトからは自宅回線のIPが見える
・LXCでは/dev/net/tunの許可とIPフォワーディングが要る。カフェWiFiの代わりに自宅マシンを信頼する構成になる
ROUTE CHANGE経路の変化
exit nodeを選ぶと、1ホップ目と出口が変わる
exit nodeなし
カフェWiFiのまま
- Hop 1: ローカルゲートウェイ
- 出口: カフェ側のISP
- Webサイトにはカフェ側のIPが見える
exit node有効
自宅マシン経由
- Hop 1: exit nodeのTailscale IP
- 出口: 自宅ISP
- Webサイトには自宅回線のIPが見える
サプライチェーン攻撃の観点でネットワーク構成を見直したい場合は サプライチェーン攻撃とは|手口・防御ツール比較・npm 12の新機構まで実践解説 も参照してください。
Tailscale exit nodeとは:コントロールプレーンとWireGuardの分担
Tailscaleは単なるWireGuardトンネルではなく、その上に制御レイヤーを乗せたものです。WireGuardが「道路」、コントロールプレーンが「地図と信号機」にあたります。
コントロールプレーンの責務は次のとおりです。
・SSO/IdPベースの身元確認
・ピア(デバイス)の相互発見とNAT貫通(ホールパンチング)の調整
・ACLとルート(exit nodeの設定を含む)の配布
・MagicDNS、デバイス失効の反映
2台のデバイスが接続するまでの流れは次のとおりです。
1. 両デバイスがコントロールプレーンに認証
2. コントロールプレーンが各ピアの到達可能エンドポイントと暗号鍵を共有
3. 両ピアがUDPパケットを送り合ってNAT穴あけを試行
成功: 直接のWireGuard暗号化パスを確立
失敗: DERPリレーにフォールバック(エンドツーエンド暗号化は維持)
exit nodeを有効にすると、次の3つが起きます。
・exit nodeが0.0.0.0/0と::/0をアドバタイズし、コントロールプレーンが適切なクライアントへ通知する
・クライアントがそのexit nodeを選ぶと、デフォルトルートがトンネル向きに書き換わる
・exit nodeの実パブリックIP宛の通信は通常のゲートウェイを使う(トンネルが自分自身をトンネルするのを防ぐ)
tracerouteで見る経路の変化(exit node有効と無効の比較)
次の出力は元記事の筆者が公開しているtracerouteです(IPとホスト名は伏せ字・ダミー、遅延は環境で変わります)。exit node有効時は、1ホップ目がexit nodeのTailscale IPになります。
# exit node有効(元記事の出力から抜粋)
Hop 1: tailscale-gw (100.x.y.z) ~7ms
Hop 2: 192.168.x.1 ~7ms
Hop 3: 10.x.x.1 ~9-177ms
Hop 4-6: * * *
Hop 7: home-isp-edge.example (自宅ISP) ~11-14ms
...
github.com到達(以降のホップは省略)
exit nodeを使わない場合の出力も元記事にあります。
# exit nodeなし(元記事の出力から抜粋)
Hop 1: 192.168.x.1 ~4-5ms
Hop 2-6: * * *
Hop 7: cafe-or-local-isp-edge.example ~11-16ms
1ホップ目がローカルゲートウェイになり、7ホップ目の出口はカフェ側のISPです。
| 観点 | exit node有効 | exit nodeなし |
|---|---|---|
| 1ホップ目 | exit nodeのTailscale IP | ローカルゲートウェイ |
| インターネットへの出口 | 自宅ISP | カフェ側のISP |
| Webサイトから見えるIP | 自宅回線のパブリックIP | カフェのパブリックIP |
| 通信を見られる相手 | 自分のexit nodeとその回線 | カフェの管理者とそのISP |
Tailscale exit nodeの構築手順:Proxmox LXC・IPフォワーディング・NAT
LXCでTUNを許可する
LXCコンテナはデフォルトで/dev/net/tunにアクセスできず、Tailscaleが動きません。コンテナ設定に次を追加します。
# /etc/pve/lxc/<CTID>.conf
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
exit node側の設定とクライアント側の選択
まず、exit node側でIPフォワーディングを有効にします(/etc/sysctl.d/99-tailscale.confを作成)。
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
次に、exit nodeとして広告します。広告しただけではクライアントに出ないため、Tailscale管理画面のマシン一覧でそのマシンの「Edit route settings」から「Use as exit node」を承認します(ACLのautoApproversで自動承認にもできます)。
sudo tailscale up --advertise-exit-node # exit node側
tailscale set --exit-node=<exit-node名> # クライアント側
クライアント側でexit node経由にしつつLANのプリンタやNASへ直接届かせたい場合は--exit-node-allow-lan-accessを併用します。
NAT(マスカレード)はTailscaleが設定するのが通常で、失敗が疑われるときはiptables -t nat -L POSTROUTING -vで確認します。
よくある落とし穴は、tailscale statusではピアが接続済みなのにインターネットに出られないケースです。原因の多くはIPフォワーディングかNATの未設定で、exit nodeが中継できていません。
tracerouteと出口IPで確かめる:切り替えチェックリストと信頼の移動
exit nodeの有効と無効を切り替えたときは、次の順に確かめます。
curl ifconfig.me # 有効時は自宅のパブリックIP、無効時は現在のネットワークのIP
traceroute github.com # 有効時はHop 1がexit nodeのTailscale IP
tailscale ping <exit-node名> # direct/DERPのどちらで届いているか
exit nodeを使うと、信頼先がカフェのネットワークから「自分が所有・運用するマシンと自宅ISP」に移ります。匿名化ではなく、信頼の置き場所を変える仕組みです。その分、exit node機の保守と監視は自分の責任になるため、構成は最小限(Tailscaleのみ)に保つのが安全です。
DNSは別設定です。exit nodeが変えるのは出口であり、名前解決の経路ではありません。
exit nodeとサブネットルーターの違い
EXIT NODE VS SUBNET範囲の違い
exit nodeはインターネット全体、サブネットルーターは指定範囲だけ
アドバタイズ範囲
使う場面
アドバタイズ範囲: exit node: 0.0.0.0/0 と ::/0
使う場面: 外出先の通信をすべて自宅経由にする
アドバタイズ範囲: サブネットルーター: 192.168.1.0/24 など
使う場面: NASやProxmoxにだけ届かせる
アドバタイズ範囲: 両方を同じマシンで指定
使う場面: 内部サービスもインターネットも自宅経由
どちらも「自宅側に出入口を作る」機能ですが、アドバタイズする範囲が違います。
・exit node:0.0.0.0/0と::/0(すべてのインターネット)
・サブネットルーター:192.168.1.0/24など特定のプライベート範囲のみ
| シナリオ | 推奨 | 理由 |
|---|---|---|
| カフェから自宅ISP経由でインターネットを使う | exit node | 全インターネットを自宅経由にしたい |
| NASやProxmoxにだけ届けばよい | サブネットルーター | 通常のブラウジングは直接、内部サービスだけトンネル |
| 内部サービスもインターネットも自宅経由にしたい | 1台が両方の役割 | --advertise-exit-nodeと--advertise-routesを同時に指定する |





