NATトラバーサルとは

NATトラバーサルは、プライベートIPアドレスとグローバルIPアドレスを変換するNAT(Network Address Translation)が存在する環境において、外部ネットワークから内部ネットワークの端末へ直接通信を確立、維持するための技術の総称のことです。

本来、NATは外部からの予期せぬ接続を遮断する性質を持っていますが、VoIP(IP電話)やP2P通信、オンラインゲーム、リモートデスクトップなどの双方向通信を実現するために、この制約を回避して通信経路を確保する仕組みが必要となります。

NATトラバーサルが必要とされる理由

NAT環境下では、内部から外部への通信は比較的容易ですが、外部から内部への通信を開始する際には大きな障壁があります。

  1. プライベートIPアドレスの秘匿: 内部端末はインターネット上で直接ルーティングできないアドレスを使用しています。
  2. 動的ポート変換(NAPT): 多くのルータはポート番号を動的に書き換えるため、外部からは内部端末の待ち受けポートを特定できません。
  3. セキュリティフィルタ: NATデバイスは、内部から開始されていない外部パケットを不正なアクセスとみなして破棄する一般的特性を持っています。

代表的なNATトラバーサルの技術

用途やNATの種類(コーンNATやシンメトリックNATなど)に応じて、複数の手法が組み合わせて利用されます。

1. STUN(Session Traversal Utilities for NAT)

端末が自身のグローバルIPアドレスと、NATによって割り当てられたポート番号を確認するためのプロトコルです。外部のSTUNサーバーに問い合わせることで、通信の「穴」を開けるための情報を取得します。

2. TURN(Traversal Using Relays around NAT)

NATの制限が厳しく、直接通信(P2P)が不可能な場合に、中継サーバーを経由してデータを転送する手法です。確実性は高いですが、中継サーバーの帯域コストが発生します。

2. TURN(Traversal Using Relays around NAT)

NATの制限が厳しく、直接通信(P2P)が不可能な場合に、中継サーバーを経由してデータを転送する手法です。確実性は高いですが、中継サーバーの帯域コストが発生します。

3. ICE(Interactive Connectivity Establishment)

STUNやTURN、直接通信など、利用可能な複数の経路候補の中から最適な接続手段を自動的に選択するフレームワークです。

4. UPnP(Universal Plug and Play)

端末がルータに対して、特定のポートを開放するように自動で要求する仕組みです。主に家庭用ルータで利用されます。

接続成功率と評価指標

NATトラバーサルの有効性は、NATの種類によって大きく左右されます。特に送信先ごとにポート番号を変える「シンメトリックNAT」が経路に含まれる場合、単純なSTUNによる穴あけ(ホールパンチング)は失敗します。

ネットワーク全体の接続成功率

P_{success}

は、P2P接続が可能な割合を

P_{p2p}

、中継(Relay)によって補完される割合を

P_{relay}

とすると、以下の概念式で表されます。

P_{success} = P_{p2p} + (1 - P_{p2p}) \times P_{relay}

TURNサーバーを導入することで

P_{relay}

が1に近づくため、理論上の接続成功率はほぼ100%となりますが、遅延(レイテンシ)が増大する傾向にあります。

運用上の留意点

NATトラバーサルは利便性を向上させる一方で、以下の点に注意が必要です。

  • セキュリティのリスク: ポートを動的に開放したり、外部サーバーと情報を交換したりする性質上、ファイアウォールのポリシーと整合性を取る必要があります。
  • 複雑な実装: 複数のプロトコルを組み合わせるため、アプリケーション層での高度な制御が求められます。
  • IPv6への移行: IPv6環境では、各端末がグローバルIPアドレスを持つため、本来のNATトラバーサルの必要性は減少しますが、依然としてステートフルファイアウォールの通過という観点で類似の技術が利用されます。

NATトラバーサルは、今日の高度に複雑化したインターネットインフラにおいて、場所を問わずスムーズなリアルタイム通信を支えるための影の立役者と言える技術です。

関連用語

プロトコル | 今更聞けないIT用語集
ファイアウォール | 今更聞けないIT用語集
クラウドソリューション

お問い合わせ

システム開発・アプリ開発に関するご相談がございましたら、APPSWINGBYまでお気軽にご連絡ください。

APPSWINGBYの

ソリューション

APPSWINGBYのセキュリティサービスについて、詳しくは以下のメニューからお進みください。

システム開発

既存事業のDXによる新規開発、既存業務システムの引継ぎ・機能追加、表計算ソフトによる管理からの卒業等々、様々なWebシステムの開発を行っています。

iOS/Androidアプリ開発

既存事業のDXによるアプリの新規開発から既存アプリの改修・機能追加まで様々なアプリ開発における様々な課題・問題を解決しています。


リファクタリング

他のベンダーが開発したウェブサービスやアプリの不具合改修やソースコードの最適化、また、クラウド移行によってランニングコストが大幅にあがってしまったシステムのリアーキテクチャなどの行っています。