Tailscaleを使用するために開くべきファイアウォールポートは?
最終検証日:
翻訳: 竹洞 陽一郎
ほとんどの場合、Tailscaleのためにファイアウォールポートを開く必要はありません。TailscaleはさまざまなNAT越え技術を使用して、手動操作なしに安全に他のTailscaleノードへ接続します。いわば「設定不要で動作する」仕組みです。
ただし、両方のデバイスが制限の厳しいネットワーク上にある場合、Tailscaleはデバイス間のピアツーピア接続を確立できないことがあります。その場合でも、セキュアな中継サーバー(DERP)を通じてトラフィックの送受信は継続できますが、中継接続はピアツーピア接続ほど高速ではありません。
このような場合、ファイアウォールポートを開放することでTailscaleのピアツーピア接続を改善できます。
-
内部デバイスから
*:443へのTCP接続を許可する。コーディネーションサーバーやその他のバックエンドシステムへの接続、およびDERP中継サーバーへのデータ接続は、ポート
443のHTTPSを使用します。特にDERP中継のセットは時間とともに増加します。許可する宛先を列挙しようとすると、将来的に接続が壊れる可能性が高いため、*:443を推奨します。特定のDERPとの通信がブロックされると、ノードが完全に接続を失ったり、ランダムなデバイスペア間でのみ接続が失われるといった形で現れます。 -
内部デバイスから
:41641を送信元として*:*へのUDP通信を許可する。WireGuardの直接トンネルは、送信元ポート
41641のUDPを使用します。ユーザーが利用するすべてのゲストWi-Fi、カフェ、LTEプロバイダー、ホテルのネットワークを予測することは不可能なため、*:*を推奨します。 -
内部デバイスから
*:3478へのUDP通信を許可する。STUNプロトコルは、NAT配下のマシンがインターネット上のマシンに自身のIPアドレスを問い合わせるためのものです。これにより、NAT配下のマシンは自身のパブリックIPアドレスを把握できます。STUNはポート番号も通知するため、
tailscaledが「イージーNAT」(送信元ポートがすべての宛先で同じ外部ポートにマッピングされる)か「ハードNAT」(宛先ごとにポート番号が変わる)かを判断できます。tailscaledはSTUNをDERPサーバーにのみ送信しますが、DERPサーバーのセットは時間とともに増加するため、ルールには*:3478を推奨します。 -
内部デバイスから
*:80へのHTTP(TCP)接続を許可する。コーディネーションサーバーへの接続は、効率的な暗号化トランスポートを使用してポート
80のHTTPを優先使用します。ただし、コーディネーションサーバーがこのポートで応答しない場合、クライアントはポート443のHTTPSにフォールバックします。キャプティブポータルの検出と通知のため、TailscaleはTCPポート
80で受信接続を受け付けることが既知の中継サーバーに接触を試みます。クライアントは中継サーバーの/generate_204エンドポイントに対して非暗号化のHTTPリクエストを実行し、このエンドポイントは204ステータスコードのHTTPレスポンスを返すことが期待されます。これらの接続を許可することは必須ではなく、ファイアウォールルールでドロップすることも可能です(タイムアウトが発生します)。無効にすると、Tailscaleへの接続時に遅延が生じたり、キャプティブポータルの検出が正常に機能しなくなる場合があります。
2025年7月より、
login.tailscale.comおよびcontrolplane.tailscale.comドメインはTailscaleに登録された静的IPアドレス範囲に解決されるようになりました。ファイアウォールの設定はIPアドレスのハードコードより、ドメイン名による設定を推奨します。ただし、IPベースのルールが必要な場合は、以下の範囲を明示的に許可してください。
- IPv4:
192.200.0.0/24- IPv6:
2606:B740:49::/48
2025年11月より、
log.tailscale.comドメインはTailscaleに登録された静的IPアドレス範囲に解決されるようになる予定です。ファイアウォールの設定はIPアドレスのハードコードより、ドメイン名による設定を推奨します。ただし、IPベースのルールが必要な場合は、以下の範囲を明示的に許可してください。
- IPv4:
199.165.136.0/24- IPv6:
2606:B740:1::/48
デバイスが中継(DERP)を使用しているか確認するには?
中継はデバイスペアごとに使用されます。特定のデバイスが別のデバイスと中継経由で通信しているか確認するには、いずれかのデバイスから tailscale status(ドキュメント)を実行します。
tailscale status コマンドは、Tailscale経由でアクセス可能なすべてのデバイスについての結果テーブルを返します。実行例を以下に示します。
1 2 3 4 5 100.1.2.3 device-a alice@ linux active; direct <ip-port>, tx 1116 rx 1124 100.4.5.6 device-b bob@ macOS active; relay <relay-server>, tx 1351 rx 4262 100.7.8.9 device-c charlie@ windows idle; tx 1214 rx 50 100.0.1.2 device-d diane@ iOS -
tailnetでデバイスがアクティブな場合、接続ステータス(列5)には、ピアツーピア接続では使用IPアドレスとともに「direct」と表示されます。DERP経由の接続では、nyc や fra などの都市コードとともに「relay」と表示されます。
デバイスが中継を使用しています。ピアツーピア接続にするには?
2台のデバイスが制限の厳しいネットワーク上にある場合、一方のデバイスでUDPポート 41641 への接続を許可すると、Tailscaleが中継にフォールバックするのを防ぎ、ピアツーピア接続を確立できる場合があります。
たとえばUbuntuでは、標準搭載の ufw コマンドで次のように設定できます。
sudo ufw allow 41641/udp
NATトラバーサルの詳細については、ブログ記事 How NAT Traversal Works(英語)をご参照ください。
Tailscaleが使用するホスト名を明示的に指定したい場合は?
どうしても必要な場合は、完全修飾ドメイン名(FQDN)のリストで例外を許可できます。Tailscaleのインフラ変更による影響を最小限にするため、許可ホスト名を自動的に最新の状態に保つ仕組みの構築を強く推奨します。
コーディネーションサーバー(認証、鍵交換、ファイアウォール更新などに必要)のリストは変更される可能性がありますが、頻度は低いです。
console.tailscale.comcontrolplane.tailscale.comlog.tailscale.comlogin.tailscale.com
また、DERPリレーサーバー(随時変更されます)にはTCPポート 443 でアクセスします。DERPサーバーは derpN(1 <= N <= 28、2025年8月時点。Nの上限は今後増加予定)という名前で管理されており、Tailscaleは各リージョンのDERPサーバーごとに複数のAレコード(IPv4)とAAAAレコード(IPv6)を含む derpN-all エントリを作成します。
DERP DNSエントリの許可リストは次のようになります。
derp1-all.tailscale.comderp2-all.tailscale.com...derp28-all.tailscale.com
DERPマップからTailscaleのDERPリージョンを削除している場合、削除したリージョンのDNSエントリはスキップできます。
DERPサーバーはユーザーの所在地に合わせて最適なサービスを提供するため、頻繁に追加・変更されます。DERPサーバーの追加・変更後、TailscaleはDNSエントリを約15分後に更新します。最新のTailscale DERPサーバー一覧はDERPマップで確認できます。または次のコマンドを実行してください。
curl https://login.tailscale.com/derpmap/default | jq
サーバーを確認したら、該当するAレコードおよびAAAAレコードをファイアウォールの設定に追加してください。
ファイアウォールがDNSエントリを受け入れてL3 tailnetポリシーファイルエントリに追加でき、かつDNSから定期的に再取得してエントリを更新できる場合は、derpN-all.tailscale.com エントリを設定するだけで、DERPサーバーのリストを常に手動更新する必要がなくなります。