SSD Nodes Learn Hosting plans →
ガイド Matt Connor著者 Matt Connor ・更新日 2026-08-27

VPSをTailscaleのexit nodeにする方法

VPSをTailscaleのexit nodeに設定します。インストール、exit nodeの広告、IP forwarding、管理コンソールでのルート承認、DNSとIPv6の問題まで5手順で解説します。

Tailscale の exit node が行うこと

Tailscale の exit node は、tailnet 内の他のデバイスに代わってすべてのインターネットトラフィックを転送するマシンです。VPS(virtual private server)は、固定されたパブリックアドレスを持ち、常時オンラインであるため、exit node に適しています。設定は 5 つの手順で行います。サーバーに Tailscale をインストールし、exit node を広告し、IP forwarding を有効にし、管理コンソールでルートを承認してから、ラップトップでその node を選択します。4 番目の手順は Web ページ上の toggle であり、コマンドではありません。ここで止まる人が多くいます。

有効にすると、ラップトップはすべてのパケットを暗号化して VPS に送信します。VPS は source NAT(network address translation)を適用し、自身のパブリック IP アドレスでパケットを送信します。Web サイトからは VPS が見えます。カフェの Wi-Fi からは、VPS への暗号化された UDP 通信が 1 本見えるだけで、それ以外は見えません。

Tailscale は、データパスに WireGuard を使用し、鍵を配布して NAT 越しに 2 台のマシンが互いを検出できるようにする coordination server を組み合わせたものです。この coordination server があるため、以下の手順で鍵をコピーする必要はありません。トレードオフを詳しく確認するには、Tailscale と通常の WireGuard の比較を参照してください。トンネルのすべての部分を自分で管理したい場合は、代わりに VPS で通常の WireGuard VPN をセルフホストするを参照してください。

以下の手順では、ラップトップですでに Tailscale が動作しており、両方のマシンが同じ tailnet にサインインしていることを前提とします。tailnet はプライベートな Tailscale ネットワークです。その中のすべてのデバイスに、100.64.0.0/10 内の固定アドレスが割り当てられます。

VPS に Tailscale をインストールする

curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

インストールスクリプトは、ディストリビューションに適したパッケージリポジトリを選択し、tailscaled デーモンをインストールします。tailscale up は認証 URL を表示します。その URL をブラウザーで開き、ノートパソコンと同じアカウントでサインインしてください。VPS が別の tailnet にサインインしていると、ノートパソコンからその VPS を利用できないためです。

tailscale status
tailscale ip -4

tailscale status を実行すると、両方のマシンが一覧に表示されます。tailscale ip -4 は VPS の tailnet アドレスを表示します。後でクライアントに指定するアドレスです。

Tailscale はトンネルの構築に TUN デバイスを必要とします。KVM VPS では、このデバイスが用意されています。ホストカーネルを共有するコンテナー仮想化ベースのプランでは、/dev/net/tun が存在しないことがあります。その場合、tailscaled は tailscale0 インターフェイスを作成できません。先に進む前に ls -l /dev/net/tun を実行してください。

IP forwarding を有効にしないと、VPS はすべてのパケットを破棄する

Linux マシンは、自分宛てではないパケットを破棄します。これは、net.ipv4.ip_forward がデフォルトで 0 だからです。exit node はトラフィックを受信して復号しますが、そのまま破棄します。再起動後も設定が維持されるように、設定をファイルへ書き込みます。

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

tee -a は追記するため、これらの行を 2 回実行すると、両方の設定が 2 回ずつ書き込まれます。結果は動作しますが、cat /etc/sysctl.d/99-tailscale.conf の表示は不自然になります。ファイルの内容を信頼せず、実行中の値を確認します。

sysctl net.ipv4.ip_forward

net.ipv4.ip_forward = 1 と表示される必要があります。これを省略して tailscale up --advertise-exit-node を使用すると、クライアントは次のように通知します。

Warning: IP forwarding is disabled, subnet routing/exit nodes will not work.

tailscale set --advertise-exit-node はこの確認を実行しません。そのため、set から何も出力されなくても、forwarding が有効だとは限りません。sysctl の値を自分で読み取ります。

masquerade ルールを手動で作成する必要はありません。tailscaled は独自の firewall chain を作成します。chain 名は ts-input、ts-forward、ts-postrouting です。exit node のトラフィックに対する NAT ルールは ts-postrouting にあります。sudo iptables-save | grep ts- で確認するか、nftables を使用しているシステムでは sudo nft list ruleset を実行します。

VPS を exit node として広告する

sudo tailscale set --advertise-exit-node

tailscale set は他の設定を変更せず、1 つの設定だけを変更します。tailscale up --advertise-exit-node はノードも広告しますが、副作用があります。up は、コマンドライン上のフラグをデフォルト以外の設定一式として扱います。そのため、後から引数なしで sudo tailscale up を実行すると拒否され、次のメッセージが表示されます。

changing settings via 'tailscale up' requires mentioning all
non-default flags. To proceed, either re-run your command with --reset or
use the command below to explicitly mention the current value of
all non-default settings:

継続的な変更には set を使用してください。このメッセージが表示されることはありません。

広告は申し出です。VPS は、exit node になる意思があることを coordination server に通知します。この時点では、まだどのクライアントも利用できません。

Tailscale exit node を管理コンソールで承認する

この手順には実行するコマンドがありません。管理コンソールの Machines ページを開き、VPS を見つけます。行の末尾にある三点メニューを開き、Edit route settings を選択して、Use as exit node を有効にします。

この切り替えを有効にするまで、コントロールプレーンはその申請を保持しますが、どのデバイスにも割り当てません。ノートパソコンの tailscale exit-node list には何も表示されず、ネットワークトラフィックも通常の経路を使い続けます。どちらのマシンにもエラーメッセージは表示されません。exit node が表示されない状態が続くだけです。

tailnet ポリシーファイルにエントリを追加すると、exit node を自動的に承認できます。

"autoApprovers": {
  "exitNode": ["tag:exit"],
}

--advertise-tags=tag:exit で起動したデバイスは、同じポリシーファイルの tagOwners の下に tag:exit が定義されていれば、自動的に承認されます。タグを付けると所有者が変わります。タグ付きデバイスはユーザーアカウントではなく tailnet に属し、それに伴って適用されるアクセスルールも変わります。VPS が 1 台だけの場合は、切り替えを使う方が簡単です。

ノート PC で exit node を選択する

Linux クライアントでは、次を実行します。

tailscale exit-node list
sudo tailscale set --exit-node=vps.your-tailnet.ts.net

exit-node list は、tailnet で承認済みの exit node とそのアドレスを表示します。空の一覧が表示される場合、承認手順が完了していません。macOS、Windows、iOS、Android では、Tailscale アプリの Exit Node にあるメニュー項目から同じ選択を行います。

確認はサーバーではなく、必ずクライアントから実行します。

curl -4 https://ifconfig.me

exit node を選択する前と、選択した後に 1 回ずつ実行します。アドレスがローカルのアドレスから VPS のパブリック IP に変わる必要があります。exit node の使用を停止するには、次を実行します。

sudo tailscale set --exit-node=

初日に確認すべきフラグがもう 1 つあります。exit node を選択すると、クライアントは 192.168.1.50 宛てのパケットを含め、すべての通信をトンネルへ送信します。そのため、プリンターやネットワークストレージが応答しなくなります。ローカルネットワークにはローカルルートを使用させます。

sudo tailscale set --exit-node=<name> --exit-node-allow-lan-access=true

exit node を有効にすると DNS が変わる理由

デフォルトでは、exit node を使用するデバイスは、すべてのドメインの DNS(domain name system)リゾルバーとしてもその exit node を使用します。これにより、tailnet に設定したグローバル DNS および split DNS のネームサーバーは上書きされます。この動作は意図されたものです。クエリがローカルネットワークのリゾルバーに送信され続けると、通信自体はプライベートでも、カフェのルーターにはアクセスしたすべてのサイト名が見えてしまいます。名前解決とパケットは、同じ場所から送信される必要があります。

内部リゾルバーを運用している場合、この動作の影響を受けることがあります。依存している tailnet のネームサーバーが、exit node の有効中は使用されなくなるためです。復元するには、管理コンソールの DNS ページで、そのネームサーバーの Use with exit node を有効にします。

MagicDNS の名前は引き続き機能します。Tailscale クライアントが、exit node に到達する前に 100.100.100.100 でローカルに応答するためです。dig @100.100.100.100 your-vps.your-tailnet.ts.net で確認できます。systemd-resolved クライアントでは resolvectl status を使用すると、Tailscale インターフェースが 100.100.100.100 を DNS サーバーとして登録していることを確認できます。

--accept-dns=false で Tailscale の DNS 処理を無効にすると、クライアントはローカルネットワークから取得したリゾルバーを使用し続けます。通信はトンネル化されますが、クエリはトンネル化されません。これは、手動で構築した WireGuard トンネルでも発生するのと同じ DNS リークです。変更する明確な理由がない限り、--accept-dns はそのままにしてください。

IPv6 を exit node 経由で利用する

exit node は、0.0.0.0/0 と ::/0 の両方のデフォルトルートを広告します。VPS からインターネットへの IPv6 経路が機能していない場合、IPv6 パケットはトンネル経由で到着した後、そこで停止します。信頼して使用する前に、VPS 上でテストしてください。

ip -6 addr show
curl -6 https://ifconfig.me

リクエストが失敗する場合、VPS に IPv6 の上流経路がありません。デュアルスタックの Web サイトは通常、引き続き読み込めます。クライアントが IPv6 をあきらめて IPv4 で再試行するためです。ただし、この再試行により、各サイトへの初回接続時に遅延が発生します。IPv6 専用の宛先には到達できません。

もう一方の要素はフォワーディングです。net.ipv6.conf.all.forwarding を 0 のままにした net.ipv4.ip_forward = 1 は、IPv4 の経路を機能させる一方で、IPv6 をブラックホールにします。この状態は、読者には検索可能なエラーではなく「一部のサイトが遅い」という症状として現れます。両方の行を sysctl ファイルに記述してください。

VPS はサブネットルートも広告すべきですか?

Exit node は、すべてのインターネットトラフィックを運びます。サブネットルートは、広告元のマシンの背後にある 1 つのプライベートレンジへの経路です。これらは別々の機能であり、承認も別々に必要ですが、1 台のマシンで両方を使用できます。どちらも VPS 自体で実行しているサービスを公開するものではありません。実際に必要なのが、そのサーバー上のアプリケーションに HTTPS URL でアクセスすることなら、serve と funnel が使用すべき機能です。

sudo tailscale set --advertise-routes=10.0.0.0/24

VPS が、プライベートアドレスで接続したい他のサーバーとプライベートネットワークを共有している場合は、サブネットを広告します。同じ Edit route settings パネルで、専用のトグルを使って承認します。Linux クライアントは、--accept-routes を渡すまで広告された経路を無視します。これは、サブネットルーターの手順で詳しく説明している違いの 1 つです。

範囲は慎重に選んでください。広告された経路は、ラップトップのデフォルトルートより具体的です。そのため、VPS から 192.168.1.0/24 を広告すると、同じ範囲を使用する自宅ネットワークのアドレスがその経路に引き継がれ、手元のデバイスが通信できなくなります。自分で選んだ範囲を使用し、自宅のルーターが自動的に選んだ範囲は使用しないでください。

UDP GRO 転送で exit node を高速化する

Linux 6.2 以降のカーネルで Tailscale 1.54 以降を使用すると、転送トラフィックのスループットを向上させる受信オフロードを利用できます。GRO(generic receive offload)は、カーネルが受信パケットを個別に処理する前に結合します。2026年8月時点では、exit node で手動設定が必要です。

sudo apt install -y ethtool
NETDEV=$(ip -o route get 8.8.8.8 | cut -f 5 -d " ")
sudo ethtool -K $NETDEV rx-udp-gro-forwarding on rx-gro-list off

ip -o route get 8.8.8.8 は実際にインターネットへ到達するインターフェースを表示するため、eth0、ens3、enp1s0 のどれかを推測する必要がありません。ethtool -k $NETDEV | grep udp-gro-forwarding で確認します。結果は on と表示されるはずです。GRO は、それ以外の部分が正常な経路でのみ効果があります。そのため、設定後も exit node が遅い場合は、基盤のリンクより遅い単純な WireGuard トンネルの場合と同じ方法で、経路自体を測定してください。

この設定は再起動すると失われます。networkd-dispatcher を実行しているシステムでは、自動化します。

printf '#!/bin/sh\n\nethtool -K %s rx-udp-gro-forwarding on rx-gro-list off \n' "$(ip -o route get 8.8.8.8 | cut -f 5 -d " ")" | sudo tee /etc/networkd-dispatcher/routable.d/50-tailscale
sudo chmod 755 /etc/networkd-dispatcher/routable.d/50-tailscale

最初に /etc/networkd-dispatcher/routable.d/ が存在することを確認してください。存在しない場合、そのマシンでは networkd-dispatcher が実行されていません。その場合は、起動時に ethtool の行を実行する小さな systemd unit で同じ処理を行えます。

プロバイダーの acceptable use policy が exit traffic に与える意味

クライアントが exit node 経由で送信するすべてのパケットは、VPS のパブリック IP アドレスから送信されたものとして扱われるため、あなたのアカウントに紐付けられます。著作権侵害の通知やポートスキャンに関する苦情などの abuse report は、あなたの受信トレイに届きます。家庭内の利用者やチームを 1 台のサーバー経由で接続する前に、プロバイダーの AUP (acceptable use policy) を確認してください。また、信頼性を確認できない人に exit node を開放しないでください。

Bandwidth は 2 回分として計上されます。Traffic はトンネル経由で VPS に到着し、その後インターネットへ再び送信されます。通常は、どちらの方向もプランの transfer allowance に対して計上されます。exit node 経由で視聴する動画ストリームは、多くの人が想定するより大きな使用量になります。

Datacenter のアドレス範囲には、reputation もあります。一部のサイトでは、そのようなアドレスに対して CAPTCHA の表示が増え、一部の streaming service は完全に接続を拒否します。これは、プロバイダーが所有する address block の性質によるものです。設定を変更しても、この点は変わりません。

ローカル接続経由でネットワークトラフィックが送信され続ける理由

Exit node は広告されていますが、承認されていません。 クライアントで tailscale exit-node list を実行しても何も表示されず、どちらのマシンにもエラーは記録されません。Machines ページを開き、Use as exit node を有効にします。

クライアントが Exit node を選択していません。 承認すると、そのノードを tailnet から利用できるようになります。選択は各デバイスで個別に行う操作です。sudo tailscale set --exit-node=<name> を再実行し、続けて curl -4 https://ifconfig.me をもう一度確認します。

転送が無効になっています。 症状は限定的です。tailscale ping <vps> は成功し、トンネルも明らかに確立されていますが、外部アドレスへの接続はすべてタイムアウトします。sysctl net.ipv4.ip_forward の値は 0 です。sysctl ファイルを修正してから、sudo sysctl -p /etc/sysctl.d/99-tailscale.conf を実行します。

ファイアウォールが転送パケットを破棄しています。 tailscaled は独自の ts-forward chain を挿入するため、クリーンな VPS ではこれだけで十分です。ufw や Docker がすでに動作しているマシンでは、FORWARD ポリシーが DROP になり、Tailscale のルールより前にルールが配置されることがあります。推測で判断せず、クライアントがページを読み込もうとしている間に sudo iptables -L FORWARD -n -v を実行し、どのカウンターが増えるかを確認します。ufw を使用しているマシンでは、通常は /etc/default/ufw の DEFAULT_FORWARD_POLICY="ACCEPT" に続けて sudo ufw reload を実行します。プロバイダーのコントロールパネルにあるネットワークファイアウォールも確認してください。これはサーバー上で動作しているものとは別の制御です。

動作しますが、速度が遅い状態です。 両方のマシンで tailscale netcheck を実行します。UDP が blocked と表示される場合、2 台のデバイスは直接経路を構築できず、DERP relay にフォールバックしています。そのため、すべての接続に遅延が加わります。プロバイダーのネットワークファイアウォールで VPS への inbound UDP port 41641 を許可すると、通常は直接経路が復旧します。

Tailscale の調整サーバーから移行するタイミング

ここまでの構成はすべて、鍵交換と、クリックした承認の処理を Tailscale のホスト型協調サーバーに依存しています。通信は引き続き laptop から VPS へ直接送られ、協調サーバーを経由しません。ただし、tailnet に参加できるユーザーと、各デバイスから到達できる範囲は協調サーバーが決定します。料金が移行の理由になることはほとんどありません。無料プランでは、各ユーザーが所有するデバイスを無制限に、6 ユーザーまで利用できるためです。料金ではなく、この依存関係自体を基準に判断してください。7 人目から状況が変わります。Tailscale はデバイス単位ではなくユーザー単位で課金するため、料金を理由に判断する前に、家庭や 5 人のチームで実際にいくらかかるかを計算してください。正しく評価するには、侵害された協調サーバーや盗まれた identity アカウントから実際に何へ到達できるかを把握する必要があります。これはTailscale の trust model が説明している内容です。この依存関係をなくしたい場合は、Headscale を独自の Tailscale control server として運用し、両方のクライアントをそこへ接続します。その後の exit node の手順は同じです。ルートの承認だけは、ホスト型コンソールではなく Headscale のコマンドラインで行います。Headscale は control plane を置き換えますが、Tailscale クライアントはそのまま使えます。スタック全体を自分で運用したい場合は、NetBird が独自の協調サーバーとクライアントを提供しており、1 台の VPS でホストできます。

FAQ

ローカル接続を選択したまま、exit node を選択してもネットワークトラフィックがローカル接続を経由するのはなぜですか?

一般的な原因は 2 つあります。exit node が広告されたものの、承認されていない可能性があります。管理コンソールで Machines ページを開き、VPS を見つけて Edit route settings を選択し、Use as exit node を有効にします。承認はコンソールの切り替え操作で行い、サーバー上のコマンドでは実行できません。もう 1 つの原因は異なる症状になります。IP forwarding が無効だと、トンネルは確立し、tailscale ping で VPS には接続できますが、外部アドレスへの接続はすべてタイムアウトします。sysctl net.ipv4.ip_forward で確認してください。値は 1 である必要があります。

毎回、exit node を手動で承認する必要がありますか?

この切り替え操作は、各マシンで 1 回だけ行います。VPS を頻繁に再構築する場合は、tailnet のポリシーファイルに autoApprovers ブロックを追加し、"exitNode": ["tag:exit"] を記述します。tagOwners の下に tag:exit を定義し、--advertise-tags=tag:exit でノードを起動します。タグ付きデバイスはユーザーアカウントではなく tailnet によって所有されるため、適用されるアクセスルールも変わります。

exit node が有効な間、ノートパソコンはどの DNS サーバーを使用しますか?

exit node 自体です。exit node を使用するデバイスは、すべての DNS クエリを exit node に送信します。これにより、tailnet に設定されたグローバル DNS および split DNS のネームサーバーは上書きされます。ローカルネットワークから、検索した名前を見られなくなります。tailnet のネームサーバーを 1 つ適用し続けるには、管理コンソールの DNS ページでそのネームサーバーの Use with exit node を有効にします。MagicDNS の名前は引き続き解決されます。Tailscale クライアントが 100.100.100.100 でローカルに応答するためです。

1 台の VPS を exit node とサブネットルーターとして同時に使用できますか?

はい。sudo tailscale set --advertise-exit-node と sudo tailscale set --advertise-routes=10.0.0.0/24 は独立しており、それぞれに Edit route settings の下で個別の承認切り替えがあります。VPS では、どちらにも IP forwarding を有効にする必要があります。ノートパソコンのホームネットワークと一致する範囲を広告しないでください。広告されたルートはデフォルトルートより具体的であるため、ローカルデバイスに到達できなくなります。

exit node によって VPS プロバイダーからネットワークトラフィックを隠せますか?

いいえ。トンネルは VPS で終端するため、トラフィックは宛先が要求する形式でサーバーから送信されます。サイト自体が暗号化していない場合、プロバイダーはそのトラフィックを平文で伝送します。exit node は、ネットワークトラフィックがインターネットに接続する場所を、現在接続しているネットワークから借用したサーバーへ移します。カフェの Wi-Fi と自宅の ISP からブラウジングを隠せますが、同じブラウジングはアカウント名とともに VPS プロバイダーから見える状態になります。