Tailscale設定

ChuteはネイティブのTailscaleネットワーク機能を内蔵しています。設定が完了すると、ルールやポリシーグループから組み込みポリシーTAILSCALEを参照して、トラフィックをtailnet経由に送ることができます。tailnet内の他のデバイスへのアクセス、出口ノード(exit node)経由でのインターネット接続、ピアがアドバタイズするサブネットへのアクセスが可能です。

通常のプロキシプロトコルとは異なり、Tailscaleは [Proxy] で行単位で定義するポリシーではなく、グローバルで一意の [Tailscale] セクションで設定します。auth key(認証キー)を使ってコントロールサーバーにノードを登録するため、ブラウザでの対話型ログインは不要です。

Tailscaleセクション

[Tailscale]セクションは、デバイスがtailnetに参加するために必要な設定をすべて定義します:

[Tailscale]
auth-key = tskey-auth-xxxxxxxxxxxx
control-server = https://controlplane.tailscale.com
hostname = my-device
exit-node = 100.101.102.103
accept-routes = true
force-derp = false

注意: 設定ファイル全体で許可される[Tailscale]セクションは1つだけです。重複する[Tailscale]セクションは設定エラーとして扱われます。これはTailscaleエンジンが重く、tailnetのアドレス範囲が互いに排他的であるため、同時に参加できるtailnetは1つだけだからです。Surgeの名前付きの形式[Tailscale <名前>]もこのセクションとして読み込まれます。セクションが1つだけという制限は変わりません。

パラメータ

キー 必須 説明
auth-key はい Tailscale認証キー。公式コントロールプレーン使用時は tskey- で始まる必要があります。サードパーティのコントロールサーバー(例: Headscale)は独自のキー形式を受け付けます
control-server いいえ コントロールサーバーアドレス。http(s):// URLである必要があります。空欄の場合は公式コントロールプレーン controlplane.tailscale.com を使用します
hostname いいえ tailnetに報告するデバイス名(MagicDNSホスト名)
exit-node いいえ 出口ノード。tailnet IP(100.x)またはMagicDNS名を受け付けます。空欄で出口ノードを使用しません
accept-routes いいえ ピアがアドバタイズするサブネットルートを受け付けるか(真偽値、デフォルト false)
force-derp いいえ DERPリレーのみに強制し直接接続を無効にするか(真偽値、デフォルト false)
direct-quality-guard いいえ 直接パスの品質を監視し、品質が低下した際に先回りしてDERPにフォールバックするか(真偽値、デフォルト false)。無効の場合、パス品質は記録されるだけです
peer-relay いいえ peer-relay = trueにすると、直接パスを開けない場合に、DERPより優先してUDPリレーサーバーを実行しているtailnetノード(tailscale set --relay-server-port=<port>)を使用します。コントロールプレーンがtailscale.com/cap/relayを、srcにこのデバイス、dstにリレーノードを含めて許可している必要があります。Chuteはリレークライアントのみで、他ノードのために中継することはありません。デフォルトはオフ
exit-dns いいえ 出口ノード経由でダイヤルするホスト名に使用する DNS: auto(出口ノード設定時のデフォルト — 出口ノードのDNSで解決)、off、または出口ノード経由で到達するリテラルのDNSサーバーIP
advertise-exit-node いいえ このデバイスを出口ノードとしてtailnetに提供する(真偽値、デフォルト false)。macOSのみ — iOS、tvOS、Androidでは警告を出して無視されます
advertise-routes いいえ このデバイスがtailnetのために中継するローカルサブネット。カンマ区切りのCIDRリスト(例: 192.168.1.0/24, 10.0.0.0/8)。macOSのみ

Surgeの表記もエイリアスとして受け付けます: control-urlはcontrol-server、derp-onlyはforce-derpと同じです。

真偽値は以下の表記(大文字小文字を区別しない)を受け付けます: true/false、1/0、yes/no、on/off。

注意: 不明なキーは警告付きで無視されます(設定の読み込みは妨げられません)。キーのスペルミス(例: force-derp を force_derp と書く)はそのオプションを黙って無効にします。上の表で確認してください。

組み込みポリシーTAILSCALE

[Tailscale] セクションを設定すると、組み込みポリシー識別子 TAILSCALE が使えるようになります。DIRECT や REJECT と同列に位置し、ルールやポリシーグループで直接参照できます。[Tailscale] セクションが未設定、またはTailscaleがオフのとき、TAILSCALE を参照するルールは REJECT にフォールバックします(fail-closed)。

[Proxy Group]
Mesh = select, TAILSCALE, DIRECT

[Rule]
IP-CIDR,100.64.0.0/10,TAILSCALE,no-resolve
FINAL,DIRECT

自動ルーティング

Tailscaleを有効にすると、Chuteはすべてのルールより前に以下の3つのルールを自動的に注入するため、通常はtailnet到達用のルールを手書きする必要はありません:

DOMAIN-SUFFIX,ts.net,TAILSCALE
IP-CIDR,100.64.0.0/10,TAILSCALE,no-resolve
IP-CIDR6,fd7a:115c:a1e0::/48,TAILSCALE,no-resolve

tailnetのMagicDNSのベースドメインがts.netでない場合 — Headscaleの構成です — そのドメイン向けのDOMAIN-SUFFIX,<ベースドメイン>,TAILSCALEルールも、accept-routesのルールより前に注入されます。

これらの注入ルールは実行時のみで、設定ファイルを変更することはありません。accept-routes = true を設定すると、ピアがアドバタイズするサブネットも対応する IP-CIDR / IP-CIDR6 ルールとして自動注入され、ピアがサブネットを追加・撤回すると自動的に更新されます。

使い方

tailnet内のデバイスにアクセスする

[Tailscale]セクションを設定すれば、tailnet内の他のデバイスへのアクセスに追加ルールは不要です。注入されたルールがtailnetのアドレス範囲とMagicDNSサフィックスを既にカバーしています。MagicDNS名やtailnet IPで直接アドレス指定できます:

[Tailscale]
auth-key = tskey-auth-xxxxxxxxxxxx
hostname = my-iphone

[Rule]
FINAL,DIRECT

これで my-pc.<tailnet>.ts.net や 100.101.102.103 といった宛先は自動的にTailscale経由になります。

出口ノード経由でインターネットに出る

TAILSCALE を FINAL の宛先に設定すると、より具体的なルールに一致しなかったトラフィックをすべて出口ノード経由で送出できます:

[Tailscale]
auth-key = tskey-auth-xxxxxxxxxxxx
exit-node = 100.101.102.103

[Rule]
FINAL,TAILSCALE

注意: exit-node を設定しただけでは、トラフィックは出口ノードを経由しません。TAILSCALE にトラフィックを送るルール(例: FINAL,TAILSCALE)も追加する必要があります。そのルールがないと、出口ノードは設定されていても使用されません。Chute Mac、Chute iOS、Chute Androidの設定エディターはこれを警告しますが、Chute tvOSの設定エディターは警告しません。

サブネットルートを受け付ける

tailnet内のデバイスがサブネットルーターとしてローカルサブネットをアドバタイズしている場合、accept-routes = trueを有効にすればそれらのサブネットにアクセスできます。対応するルーティングルールが自動的に注入されます:

[Tailscale]
auth-key = tskey-auth-xxxxxxxxxxxx
accept-routes = true

このデバイスを出口ノードにする(macOSのみ)

macOSのみ。 iOS、tvOS、Androidは出口ノードを利用できますが、出口ノードにはなれません。以下のキーはそれらの環境でも解析されますが、警告を出して無視されます。

Chuteを実行しているMac自身を出口ノードにして、他のデバイスのインターネット通信をこのMac経由にできます。メインウィンドウの 設定 タブ → プロキシ → Tailscale → 他のデバイス向けに出口ノードとして提供する で有効にするか、メニューバーのTailscaleサブメニュー → 出口ノードとして提供 で有効にするか、設定に直接記述します:

[Tailscale]
auth-key = tskey-auth-xxxxxxxxxxxx
advertise-exit-node = true

インターネット全体ではなくローカルネットワークだけを共有したい場合は、対象のサブネットを列挙します:

[Tailscale]
auth-key = tskey-auth-xxxxxxxxxxxx
advertise-routes = 192.168.1.0/24, 10.0.0.0/8

アドバタイズは申し出にすぎません。 管理者がTailscale管理コンソール(Headscaleでは headscale nodes approve-routes)でルートを承認するまで、どのデバイスもこのMacを選択できません。それまではメニューバーに 管理コンソールでの承認待ち と表示され、通信は流れません。

承認後は、他のデバイスは通常の出口ノードと同じように選択でき、メニューバーにはこのMacが中継している接続数が表示されます。

有効にする前に知っておくべき点がいくつかあります:

  • 他のデバイスの通信はこのMacのインターネット接続を使い、このMacの IPアドレスで外部に出ます。そのため通信量はこの回線に計上され、通信の帰属先もこのネットワークになります。
  • Macがスリープしている間は出口ノードとして機能しません。Tailscaleメニューの 提供中はMacをスリープさせない を有効にすると、承認されて提供している間だけスリープを抑止します。フタを閉じた場合はスリープします — これを上書きする設定はなく、Tailscale公式macOSクライアントも同じ制限です。
  • ICMPは転送しません。そのため他のデバイスからこの出口ノード経由の ping には応答しません。tailscale ping はICMPを使わないため影響を受けません。

Tailscale公式のiOS / tvOSクライアントにも同じ制限があり、理由も同じです。ネットワーク機能拡張は長時間動作する転送経路を保持できません。

カスタムコントロールサーバー(Headscale)

公式コントロールプレーンに加え、ChuteはセルフホストのHeadscale / Ionscaleコントロールサーバーもサポートします。対応するURLを入力するだけです:

[Tailscale]
auth-key = your-headscale-preauth-key
control-server = https://headscale.example.com
hostname = my-device

サードパーティのコントロールサーバーは tskey- 接頭辞を強制せず、独自の認証キーを受け付けます。http:// 平文アドレスの使用は、信頼できるネットワーク(例: ローカルでセルフホストしたHeadscale)でのみ推奨されます。

既知の制限とベストプラクティス

Tailscaleの実装はプロキシシナリオで最もよく使われる機能に焦点を当てており、公式クライアントの一部の機能はまだサポートされていません。以下の挙動の違いにご注意ください:

  1. force-derp = true はトラブルシューティング時にのみ使用してください。 Chuteは通常、ピアとの直接UDP接続(disco ホールパンチング)を優先します。直接接続は一般にDERPリレーより低レイテンシで高スループットです。特定のネットワークで直接接続が継続的に不安定、またはDERPより遅い場合は、両方のモードを比較したうえで、その環境に限って force-derp を有効にしてください。

  2. auth-key ログインのみサポート。 SSO / ブラウザでの対話型ログイン、Tailscale SSH、Taildrop、Funnel / serve はサポートされていません。iOS、tvOS、Androidでは、Chuteはローカルサブネットルートをアドバタイズしたり、このデバイスを出口ノードとして提供したりすることはできず、コンシューマーとしてのみ参加します。macOSでは両方がサポートされています。上記の「このデバイスを出口ノードにする(macOSのみ)」を参照してください。

  3. 出口ノードを使用してもシステム全体のDNSはローカルで解決されますが、TAILSCALE経由でダイヤルされるホスト名は出口ノード経由で解決されます。 MagicDNS名はローカルのtailnetマップから解決されます。出口ノード経由でルーティングされる接続では、ホスト名は出口ノードのDNS(peerapi ExitDNS、またはexit-dnsで設定したリゾルバー)を通じて解決されます。解決をローカルのままにするにはexit-dns = offを設定してください。グローバルリゾルバーとリモートのsplit-DNSリゾルバーは未サポートです。

  4. MagicDNSはA / AAAAレコードのみサポート。 グローバルリゾルバー、split-DNSルート(専用リゾルバーを持つエントリ)、非アドレス型ExtraRecords(TXT / CNAME / SRV)は無視されます。検出時には警告がログに記録されます。

  5. 直接パスの内側MTUは 1280 に固定。 パスMTU探索はなく、この保守的な値によりPPPoE / 重ね合わせトンネルリンクでのブラックホールを防ぎます。DERPリレーパスは影響を受けません。

  6. Tailnet Lock(ネットワークロック)は未サポート。 ネットワークロックが有効なtailnetでは、このノードのキーは署名されず、ロックされたピアはこのデバイスからのトラフィックを黙って破棄します。

  7. 送信元アドレスの書き換えは実装済み。ただしMullvad出口ノードは未検証。 ピアが割り当てうるcapVer-104のマスカレードアドレス(SelfNodeV4MasqAddrForThisPeer と v6 版)に従うため、そのピア宛のトラフィックは要求されたアドレスを名乗ります。その上に成り立つMullvadの仕組みは、実サービスに対して試されていません。

  8. ネットワーク変更後の復旧はシステム通知に依存します。 Wi-Fi / セルラー切替時、Chuteは速やかに接続を再構築しますが、ネットワーク変更通知が受信されなかった稀なケースでは、約3分のウォッチドッグ再接続にフォールバックします。

  9. モバイルではピア数に上限があります。 iOS・tvOS・Android では netmap が 256 ピアに切り詰められます。node IDの小さいピアが残り、残りは一度だけ警告を出して破棄されます。macOSでは全ピアを保持します。

S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-30 15:11:19

本ページは英語版からの翻訳です。内容に相違がある場合は、英語版が優先されます。

results matching ""

    No results matching ""