NATの種類を完全解説(フルコーン・制限コーン・シンメトリック)

同じ「NATの内側にいる」という状態でも、どの方式かによってP2P接続の成功率が大きく変わります。

フルコーン・シンメトリックの分類はどこから来たのか

この古典的なNAT分類は、2003年にSTUNプロトコルを定義したRFC 3489で初めて提示され、P2P接続が通るかどうかを説明するために使われてきました。フルコーン(Full Cone)、リストリクテッドコーン(Restricted Cone)、ポートリストリクテッドコーン(Port Restricted Cone)、シンメトリック(Symmetric)という4つの分類がそれです。その後、実際のルーターやファイアウォールの動作がこの4種類にきれいに当てはまらないケースが多いことが分かり、2007年のRFC 4787は「マッピング動作」と「フィルタリング動作」というより細かい基準でこれを置き換えました。それでも、P2P接続の成功可能性を直感的に説明する際には、今でもこの4つの古典的分類が広く使われています。

フルコーン(Full Cone)NAT

内部機器が一度特定のポートから外部に出ると、その後はどの外部相手であってもそのポート宛てに接続してくれば内部に転送される、最も開放的な方式です。P2P接続が最も成立しやすい方式ですが、外部から予測したポートにアクセスできる余地が大きく、セキュリティの観点では比較的緩やかです。

リストリクテッドコーン(Restricted Cone)NAT

フルコーンより一段階制限的な方式で、マッピングされた公開ポートにパケットが届いても、以前に内部から先にパケットを送ったことのあるIPアドレスからでなければ遮断します。ただしポート番号までは確認しないため、同じIPの別のポートからの応答は通過させます。

ポートリストリクテッドコーン(Port Restricted Cone)NAT

IPアドレスだけでなくポート番号まで一致しなければ通さない、リストリクテッドコーンよりさらに厳格な方式です。内部機器が特定のIPの特定ポートへ先にパケットを送ったことがある場合のみ、正確にそのIP・ポートの組み合わせからの応答を通過させます。家庭用ルーターでよく見られる方式で、ゲーム機のNATタイプ表示では「Moderate(標準)」に当たることが多いです。

シンメトリック(Symmetric)NAT

内部機器が接続する相手先が変わるたびに毎回異なる公開ポートが割り当てられ、外部からポートを予測するのが最も難しい方式です。ある相手との通信で得たマッピング情報を別の相手との接続に再利用できないため、STUNだけで穴を開ける方式(ホールパンチング)が失敗しやすくなります。セキュリティは最も強いもののP2P接続の成功率は最も低い方式で、ゲーム機では通常「Strict(制限)」と表示されます。

NATタイプがP2P・ビデオ通話の接続に与える影響

WebRTCのビデオ通話、インターネット電話(VoIP)、P2Pゲームのマッチングは、多くの場合STUNサーバーで互いの公開IP・ポートを調べた上で直接接続(ホールパンチング)を試みます。双方ともコーン系のNATであればこの方式はうまく機能しますが、どちらか一方でもシンメトリックNATであれば、相手が調べたポートが実際の通信には再利用されず、直接接続が失敗します。この場合、アプリはTURNサーバーという中継サーバーを経由してデータをやり取りすることになりますが、これは遅延が増え、中継サーバーの帯域幅を消費するという欠点があります。

自分のネットワークのNATタイプを改善するには

ルーターの後ろに別のルーターや通信会社のモデムのNATが重なっている二重NAT状態では、NATタイプがより制限的に表れやすくなります。通信会社側の機器をブリッジモードに切り替えてNATを1つに減らし、必要なポートをルーターで直接ポートフォワーディングしたりUPnPを有効にしたりすると、ゲーム機やビデオ通話アプリが認識するNATタイプをより開放的な方向へ改善できることが多いです。

マッピングとフィルタリング:タイプを決める2つの問い

古典的な4つのタイプは、実は2つの問いへの答えです。マッピングは、機器が異なる相手と通信するときにルーターが同じ公開ポートを使い回すかどうか。フィルタリングは、その公開ポートに届くことを許される外部の送信元はどこか、という問いです。フルコーン、リストリクテッドコーン、ポートリストリクテッドコーンはいずれもマッピングを使い回し、フィルタリングだけが異なります(誰でも、同じIP、同じIPとポート)。シンメトリックは相手ごとにマッピングを変えます。RFC 4787がこの2つを分けて説明しているため、現在の文書ではコーンの名前の代わりに「エンドポイント独立のマッピング」という言い方が使われます。

ホールパンチングの4つの手順

まず双方がSTUNサーバーに問い合わせて自分の公開アドレスとポートを知ります。次にシグナリングサーバーを介してその情報を交換します。それぞれが相手の公開アドレスに向けてパケットを送ると、外向きのマッピングができ、多くのコーン系NATでは返信を通すフィルターも開きます。両者のパケットがうまく行き違えば双方向の経路が開き、通話や対戦が直接つながります。シンメトリックNATでは、STUNサーバーに見えたポートが相手向けの通信では使われないため、最初の手順でつまずきます。

ICE:あらゆる手段を順番に試す仕組み

実際のアプリは1つの方法だけに頼りません。ICEは、ローカルアドレス、STUNで得たアドレス、TURNサーバー上の中継アドレスなど複数の候補経路を集めて組み合わせを試し、使える中で最良のものを採用します。厳しいNATの内側でもビデオ通話がたいていつながるのは、遅延が増えても中継経由で通信できるからです。ブラウザの通話の多くを支えるWebRTCもICEを使います。

ゲーム機の表示と古典的タイプの対応

ゲーム機の表示は簡略化されています。XboxではOpen、Moderate、Strictと表示され、PlayStationではNATタイプ1(直接接続)、タイプ2(多くの相手と接続可)、タイプ3(最も制限が厳しい)と表示されます。これらは外部からの接続の受けやすさをおおまかに表しますが、古典的な4つの名前と1対1で対応するわけではなく、ゲームによって解釈も異なります。

キャリアグレードNATで状況が悪化する場合

携帯回線や一部の家庭向けインターネットでは、複数の契約者が1つの公開アドレスを共有するキャリアグレードNAT(CGNAT)が使われます。自分で管理できない機器の側ではポートを開放できず、事業者のNATがシンメトリックなど厳しい動作であることも多いです。自宅のルーターで何を変えてもNATタイプが改善しない場合は、固定のグローバルIPアドレスのオプションやIPv6接続について事業者に問い合わせるとよいでしょう。

ゲーム機のNATタイプ表示が気になるなら

PS5やXboxで表示されるOpen・Moderate・Strictといった分かりやすい表示は、ここで扱った技術的な分類を利用者向けに簡略化したものです。

VoIP通話の接続の仕組みも合わせて見ると良い

NATタイプが通話の接続にどう影響するかもっと知りたいなら、VoIPのSIP・RTPプロトコルが実際にどう動作するかを確認してみましょう。

家庭でできること、できないこと

まずルーターのWAN側にグローバルIPアドレスが付いているかを確認します。ルーター設定画面に表示されるアドレスと、IP確認サイトに表示されるアドレスが違うなら、上流にもう一段NATがあるため、自分のルーターの設定では変えられません。一致している場合は、UPnPを有効にするか、ゲーム機やPCに静的ポートフォワーディングを設定します。ポート開放が続くように、その機器にはローカルIPアドレスを固定してください。仕組みを理解しないままDMZに入れるのは、外部にさらされる範囲が広がるので避けましょう。UPnPもポート開放も外部から届く範囲を広げるため、ルーターのファームウェアは最新に保ちます。ゲーム用のポート開放は利便性とリスクのトレードオフなので、ゲームが公式に示すポートだけを開けるのが基本です。

厳しいNATが問題にならない場面

NATタイプが影響するのは、ボイスチャット、パーティ機能、専用サーバーを使わないゲームなど、端末同士で直接つなぐ機能です。ウェブ閲覧、動画視聴、ダウンロード、会社のサーバーにつなぐ大半のゲームでは、厳しいNATでも実用上の差はほとんどありません。プレイヤー同士のホスト型マッチでだけラグが出るならNATタイプが原因かもしれませんが、すべてのサービスが遅いなら、回線の帯域、Wi-Fiの品質、経路を疑うほうが適切です。また、古典的な分類名は精度を実際以上に見せることがあり、多くのルーターはUDPとTCPで動作が違ったり、負荷時に動作が変わったりします。

よくある質問

今でもフルコーン・シンメトリックの分類はそのまま使われていますか?

この4つの分類は2003年のRFC 3489で提示されたもので、2007年のRFC 4787がより精密な「マッピング・フィルタリング動作」基準でこれを置き換えました。ただし実務でNATの開放性を直感的に説明する際には、今でもこの古典的な分類が広く使われています。

自分のネットワークがどのNATタイプか、どう確認すればいいですか?

一般ユーザーが正確なタイプを自分で確認するのは簡単ではありませんが、ゲーム機やビデオ通話アプリが自ら表示してくれるNATの状態(Open・Moderate・Strictなど)を参考にしたり、オンラインのSTUNテストツールを使っておおよその開放度を確認したりすることができます。

VPNを使うとNATタイプは変わりますか?

変わることがあります。通信はVPN事業者のNATから出ていくため、表示されるタイプは事業者側のものになり、自宅のルーターより良くも悪くもなりえます。ポートフォワーディングを提供する事業者もあれば、禁止している事業者もあります。

IPv6にすればNATタイプの問題は解決しますか?

多くの場合は改善します。IPv6では機器がNATなしでグローバルに到達可能なアドレスを持てるためです。家庭用ルーターは標準でステートフルなファイアウォールを動かしているので、必要な着信を許可する設定は要りますが、ホールパンチングを妨げるポート変換はありません。

シンメトリックNATのほうが安全ですか?

外部から到達しにくいのは確かですが、それは副次的な効果であり、セキュリティ機能ではありません。本当の防御は、ファイアウォール、ソフトウェアの更新、公開するサービスを絞ることで得られるもので、NATのポートの割り当て方では決まりません。