2025/10/16 10:06 Nat traversal, and how we're improving it

やあ、ロボ子!今日のITニュースはTailscaleのNATトラバーサルについてじゃ。

Tailscaleですか、博士。エンドツーエンド暗号化されたWireGuard™トンネルを使用するVPNサービスですね。NATトラバーサルとは、具体的にどのようなお話なのでしょう?

TailscaleはP2P接続を優先するアーキテクチャを採用しておるからの。ほとんどのトラフィックはピア間で直接送受信されるのじゃ。でも、直接接続できない場合は、クラウド中継サーバー(DERP)を使うぞ。

なるほど。DERPは、接続の開始とフォールバックリレーとして機能するのですね。

そうじゃ!直接接続はリレー接続よりもスループットが高く、レイテンシが低いからの。TailscaleのNATトラバーサルは、あらゆる障害を打ち破るために機能するのじゃ!

記事によると、Tailscaleは通常の条件下で90%を超える直接NATトラバーサルの成功率を誇るそうですね。

その通り!デバイスAがデバイスBに接続する場合、最初に最寄りのDERPリレーを介してBに接続し、情報を交換するのじゃ。並行して、各サイドはその情報を使って直接UDP接続を試みる。成功すれば、トラフィックは直接UDPパスにシームレスに切り替わるぞ。

もしNATトラバーサルが成功しない場合は、DERPを介してトラフィックが流れ続けるのですね。

そうじゃな。でも、対称NAT(ハードNAT)や複数のNATレイヤー(ダブルNAT)、厳格なファイアウォール、キャリアグレードNAT(CGNAT)など、直接接続を妨げる要因もあるぞ。

キャリアグレードNAT(CGNAT)は、多数の加入者がパブリックIPアドレスのプールを共有するため、直接接続の可能性が低くなるのですね。

その通り。制限の厳しいエンドポイント構成では、DERP(TCP経由)が唯一のパスとなる場合もあるぞ。

FreeBSDのPFファイアウォールがデフォルトでUDPトラフィックに対称NATを実装していた件について、Tailscaleがスポンサーとなり、UDPのエンドポイント独立マッピングをサポートするパッチが提供されたのは素晴らしいですね。

じゃろ?このパッチにより、FreeBSDベースのNATルーターは、「フルコーン」NATのように動作するオプションが与えられ、STUNやICEなどのプロトコルの直接接続の確立能力が大幅に向上するのじゃ。

Tailscaleは、UPnPやNAT-PMPの代わりに、FreeBSDのエンドポイント独立NATアプローチの方が安全でエレガントであると考えているのですね。

そうなんじゃ。Tailscaleは、クライアントソフトウェアのNATトラバーサルツールキットを継続的に調整しておる。ルーターのNATマッピングが接続中に変化した場合や、NAT-PMPマッピングが期限切れになった場合などの特定のコーナーケースの処理を改善しておるぞ。

複数の潜在的なパスが見つかった場合、それらを競合させ、レイテンシが最も低いパスに固執するように、magicsockライブラリを最適化しているのですね。

その通り!さらに、Tailscaleは、tailscale netcheckサブコマンドを追加し、その出力を改善し、パワーユーザーが背後にあるNATタイプを正確に確認できるようにしたぞ。

IPv6が利用可能な場合、Tailscaleは直接接続にそれを優先するのですね。IPv6はNATを必要としないため、当然の流れですね。

そうじゃな。Tailscaleは、クラウドNATに関する考察、接続の将来の展望などに関する投稿を予定しておるらしいぞ。楽しみじゃな!

本当ですね!ところで博士、TailscaleのNATトラバーサルについて、何か面白いジョークはありますか?

うむ、あるぞ!TailscaleのNATトラバーサルは、まるで迷路のようなネットワークを駆け抜ける忍者のようじゃ!どんな難関も突破して、目的地にたどり着くのじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
