Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

NAT越え(ナットゴエ)とは | 意味や読み方など丁寧でわかりやすい用語解説

NAT越え(ナットゴエ)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

NAT越え (ナットゴエ)

英語表記

NAT traversal (ナットトラバーサル)

用語解説

NAT越えとは、Network Address Translation(NAT)という仕組みが導入されたネットワーク環境において、外部のコンピュータがNATの内側にいる特定のコンピュータと直接通信できるようにする技術や手法の総称である。NATは、プライベートIPアドレスを使用する内部ネットワークのコンピュータが、インターネット上で使用されるグローバルIPアドレスを共有して通信できるようにする技術であり、IPアドレス枯渇問題の緩和と内部ネットワークのセキュリティ向上に貢献している。しかし、NATの機能によって、外部から内部への「unsolicited」な(要求されていない)通信が遮断されるという問題が生じる。この問題を解決し、P2P(Peer-to-Peer)通信やリモートアクセス、オンラインゲームなど、外部からの直接的な通信を必要とするアプリケーションの実現を可能にするのがNAT越えである。

NATは主に、内部ネットワークの複数のコンピュータが、ルータに割り当てられた単一のグローバルIPアドレスを共有してインターネットにアクセスする際に利用される。このとき、ルータは内部のプライベートIPアドレスとポート番号の組み合わせを、自身のグローバルIPアドレスと空いているポート番号に変換し、そのマッピング情報を保持する。この一連の動作をNAPT(Network Address Port Translation)、あるいはIPマスカレードと呼ぶことが多く、現在最も一般的なNATの形態である。

NAPTの主要な機能の一つに、セキュリティが挙げられる。内部から外部への通信は許容される一方で、外部から内部への unsolicited な通信は、ルータがその宛先となる内部コンピュータを特定できないため、原則として遮断される。ルータは外部からの通信パケットを受信しても、そのパケットの宛先ポート番号に対応する内部ホストへのマッピング情報が存在しない限り、どの内部コンピュータに転送すべきか判断できないためである。結果として、外部からの接続は破棄され、内部のコンピュータには到達しない。これが、NAT越えが必要となる根本的な理由である。

NAT越えを実現するための代表的な手法はいくつか存在する。

まず、UPnP(Universal Plug and Play)は、内部のデバイスが自動的にルータに対してポートの開放を要求し、外部からの通信を可能にするプロトコルである。例えば、ゲーム機やネットワークカメラなどが、自らルータに設定変更を依頼し、特定のポートを外部に公開する。これにより、ユーザーが手動で設定を行う手間が省けるが、ルータがUPnPに対応している必要がある点や、自動的なポート開放はセキュリティリスクを伴う可能性がある点に注意が必要である。

次に、ポートフォワーディング(Port Forwarding)は、ルータの管理者が手動で設定を行う方法である。これは、特定の外部ポート番号への通信を、常に内部ネットワークの特定のIPアドレスとポート番号に転送するようルータに指示する設定である。例えば、外部からのWebサーバへのアクセスを内部の特定サーバに転送する際に利用される。設定は確実だが、手動での設定作業が必要であり、内部のコンピュータのIPアドレスが固定されている(またはDHCP予約されている)ことが前提となることが多い。

さらに、プロトコルベースの手法としてSTUN(Session Traversal Utilities for NAT)がある。STUNは、NATの背後にいるクライアントが、STUNサーバに接続することで、自身のグローバルIPアドレスとポート番号、および利用しているNATの種類(Full Cone NAT、Restricted Cone NAT、Port Restricted Cone NAT、Symmetric NATなど)を検出するためのプロトコルである。クライアントはSTUNサーバから得た自身のグローバルIPアドレスとポート情報を、通信相手に通知することで、直接的なP2P通信を試みる。しかし、Symmetric NATのような、送信元IPアドレスとポートが変わるたびに異なるマッピングを行うタイプのNATでは、STUNだけでは直接通信を確立することが難しい場合がある。

STUNでは対応できないSymmetric NAT環境などにおいて利用されるのがTURN(Traversal Using Relays around NAT)である。TURNは、中継サーバ(TURNサーバ)を介して通信を行う方式である。STUNが直接通信経路を見つけるためのプロトコルであるのに対し、TURNは通信データを一時的に中継することで通信を可能にする。つまり、通信相手との間で直接通信ができない場合、一度TURNサーバにデータを送信し、TURNサーバがそのデータを目的の相手に転送するという形を取る。これにより、あらゆるNAT環境下での通信が可能となるが、データが必ず中継サーバを経由するため、通信の遅延が発生したり、中継サーバの運用コストがかかったりするというデメリットがある。

これらの技術を統合し、最適な通信経路を確立するためのフレームワークがICE(Interactive Connectivity Establishment)である。ICEは、STUNやTURN、直接接続(ローカルIPアドレスでの接続)など、利用可能な複数の通信経路候補を収集し、それぞれを試行しながら、最も効率的で安定した通信経路を確立しようとする。WebRTC(Web Real-Time Communication)など、リアルタイム通信を必要とする多くのアプリケーションで、ICEがNAT越えの主要なメカニズムとして採用されている。

NAT越えは、今日のインターネットにおいて不可欠な技術である。P2Pファイル共有、IP電話(VoIP)、ビデオ会議システム、オンラインマルチプレイヤーゲーム、IoTデバイスのリモート制御など、様々なアプリケーションがNAT越え技術に依存して動作している。これらの技術がなければ、インターネットの利便性は大きく損なわれることになり、NATが存在する現代のネットワーク環境において、外部との円滑な通信を実現するための重要な基盤となっている。

関連コンテンツ