この記事の最終更新日: 2026年5月26日

インターネットを使っていると、普段はあまり意識しませんが、裏側ではNATという仕組みがよく使われています。
NATは、自宅や会社のネットワークにある端末が、インターネットへ接続するために欠かせない仕組みです。
しかし一方で、NATがあることで次のような問題が起きることがあります。
- オンラインゲームで相手と接続できない
- ビデオ通話や音声通話がつながりにくい
- P2P通信がうまく動かない
- 自宅サーバーに外部からアクセスできない
- 「NATタイプがストリクト」と表示される
- WebRTCで通信に失敗する
このような問題を解決するために出てくるのが、NAT越えです。
この記事では、初心者向けにNAT越えとは何か、なぜ通信できないことがあるのか、どうやって解決しているのかをわかりやすく解説します。
- NAT越えとは?
- そもそもNATは何をしているのか?
- NATがあると、なぜ通信できないことがあるのか?
- 問題は「外側から内側へ通信したい」とき
- NATは「内側から始めた通信」は通しやすい
- NATテーブルとは?
- NAT越えが必要になる場面
- NAT越えの代表的な方法
- 方法1:ポート開放
- ポート開放のメリット・デメリット
- 方法2:UPnP
- 方法3:STUN
- STUNだけでは解決できないこともある
- 方法4:TURN
- TURNのメリット・デメリット
- 方法5:ICE
- UDPホールパンチングとは?
- なぜUDPが使われやすいのか?
- NATタイプとは?
- 二重NATとは?
- CGNATとは?
- NAT越えは「必ず成功する技術」ではない
- NAT越えとセキュリティ
- 初心者向けに例えるなら
- Webアプリ開発者もNAT越えを知っておくべき?
- よくある誤解
- まとめ
NAT越えとは?
NAT越えとは、簡単に言うと、
NATの内側にある端末と、外部の端末が通信できるようにするための技術や工夫
です。
英語では、NAT traversal と呼ばれます。
NATの内側にある端末とは、たとえば自宅Wi-Fiにつながっているスマホやパソコンのことです。
自宅のPC:192.168.1.10
自宅のスマホ:192.168.1.11
自宅のゲーム機:192.168.1.12
これらの端末は、家庭内では通信できます。
しかし、インターネット側から見ると、直接は見えません。
外部から見えるのは、基本的にルーターのグローバルIPアドレスです。
外部から見えるIP:ルーターのグローバルIPアドレス
内部にある端末:PC、スマホ、ゲーム機
この「外から直接見えない」という性質が、通信できない原因になります。
そもそもNATは何をしているのか?
NATは、IPアドレスを変換する仕組みです。
家庭や会社のネットワークでは、通常、プライベートIPアドレスが使われます。
192.168.1.10
192.168.1.11
192.168.1.12
これらのIPアドレスは、インターネット上で直接使えません。
そこでルーターが、プライベートIPアドレスをグローバルIPアドレスに変換します。
192.168.1.10
↓ NAT
203.0.113.10
これによって、自宅のPCやスマホはインターネットにアクセスできます。
NATがあると、なぜ通信できないことがあるのか?
NAT環境では、内側から外側へ通信することは比較的簡単です。
たとえば、自宅のPCからWebサイトを見る場合です。
自宅PC
↓
ルーター
↓
Webサイト
この場合、通信は自宅PCから始まっています。
ルーターは、
この通信は自宅PCが始めたものだ
と覚えておきます。
そのため、Webサイトから返ってきたレスポンスを、自宅PCに戻すことができます。
問題は「外側から内側へ通信したい」とき
問題になるのは、インターネット側から自宅の端末へ通信したい場合です。
外部の端末
↓
自宅ルーター
↓
自宅PC
このとき、ルーターは困ります。
なぜなら、外部から通信が来ても、
この通信を、内部のどの端末に届ければいいのか?
がわからないからです。
自宅の中には、PC、スマホ、ゲーム機、タブレットなど、複数の端末があります。
192.168.1.10:PC
192.168.1.11:スマホ
192.168.1.12:ゲーム機
外部からルーターに通信が届いても、その通信をどの端末へ渡すべきか判断できません。
そのため、ルーターはその通信を破棄することがあります。
これが、NAT環境で通信できない大きな理由です。
NATは「内側から始めた通信」は通しやすい
NATを理解するうえで重要なのは、次の考え方です。
NATは、内側から始めた通信の戻りは通しやすいが、外側から突然来た通信は通しにくい
たとえば、Webサイトを見る場合は問題になりにくいです。
自宅PC → Webサイト
Webサイト → 自宅PC
最初に自宅PCから通信を始めているため、ルーターは戻り先を覚えています。
一方で、外部の端末がいきなり自宅PCへ接続しようとすると、ルーターは戻り先を判断できません。
外部端末 → 自宅PC
この通信は、ルーターから見ると「突然来た通信」に見えます。
そのため、通せないことがあります。
NATテーブルとは?
NATでは、ルーターが通信の対応関係を記録しています。
この記録を、NATテーブルと呼びます。
たとえば、自宅PCがWebサイトにアクセスすると、ルーターは次のような情報を覚えます。
内部端末:192.168.1.10:50001
外部向け:203.0.113.10:60001
通信先:198.51.100.20:443
この情報があるから、Webサイトから返ってきた通信を自宅PCへ戻せます。
しかし、外部から突然通信が来た場合、NATテーブルに対応する記録がありません。
外部端末 → 203.0.113.10:60001
ルーターは、
この通信は誰に渡せばいいの?
となります。
結果として、通信が失敗します。
NAT越えが必要になる場面
NAT越えは、特に端末同士が直接通信したい場面で必要になります。
代表的なのは、次のようなケースです。
オンラインゲーム
オンラインゲームでは、プレイヤー同士が直接通信する場合があります。
特に、P2P型の通信ではNATの影響を受けやすくなります。
ゲーム機で表示される次のようなメッセージは、NATと関係しています。
NATタイプ:オープン
NATタイプ:モデレート
NATタイプ:ストリクト
NATが厳しい環境では、他のプレイヤーとマッチングしにくかったり、ボイスチャットが不安定になったりすることがあります。
ビデオ通話・音声通話
Zoom、Google Meet、Discord、LINE通話などのリアルタイム通信でも、NATが関係することがあります。
最近のサービスはNAT越えの仕組みをかなりうまく実装しているため、利用者が意識することは少ないです。
しかし、裏側ではNAT越えの技術が使われていることがあります。
WebRTC
WebRTCは、ブラウザ同士で音声、映像、データ通信を行うための技術です。
WebRTCでは、可能であれば端末同士が直接通信しようとします。
しかし、NATの内側にいる端末同士では、直接つながらないことがあります。
そのため、WebRTCではSTUN、TURN、ICEといったNAT越えの技術が使われます。
自宅サーバー公開
自宅のPCやNASでWebサーバーを立てて、外部からアクセスしたい場合もNATが関係します。
何も設定していない状態では、外部から自宅内の端末に直接アクセスできないことが多いです。
この場合は、ルーターでポート開放やポートフォワーディングを設定する必要があります。
NAT越えの代表的な方法
NAT越えには、いくつかの方法があります。
代表的なものは次のとおりです。
- ポート開放
- UPnP
- STUN
- TURN
- ICE
- UDPホールパンチング
- 中継サーバーを使う方法
順番に見ていきましょう。
方法1:ポート開放
もっともわかりやすい方法が、ポート開放です。
ポート開放とは、
外部から来た特定ポートへの通信を、内部の特定端末へ転送する設定
です。
たとえば、自宅PCでWebサーバーを動かしているとします。
自宅PC:192.168.1.10
Webサーバー:80番ポート
ルーターで次のように設定します。
203.0.113.10:80
↓
192.168.1.10:80
すると、外部からルーターの80番ポートへアクセスされた通信が、自宅PCへ転送されます。
これにより、自宅PCのWebサーバーへ外部からアクセスできるようになります。
ポート開放のメリット・デメリット
ポート開放はシンプルですが、注意点もあります。
メリットは、仕組みがわかりやすいことです。
特定のポートに来た通信を、特定の端末へ送るだけなので、設定内容を理解しやすいです。
一方で、デメリットもあります。
- ルーターの設定が必要
- IPアドレス固定が必要になることがある
- セキュリティリスクが増える
- 利用者全員に設定してもらうのは難しい
- CGNAT環境では使えないことがある
特に一般ユーザー向けのアプリでは、ユーザーにポート開放を求める設計はあまり現実的ではありません。
方法2:UPnP
UPnPは、アプリやゲーム機がルーターに対して、自動的にポート開放を依頼する仕組みです。
ユーザーが手動でルーター設定をしなくても、必要なポートを開けられる場合があります。
オンラインゲーム機などで使われることがあります。
ただし、UPnPにも注意点があります。
- ルーターがUPnPに対応している必要がある
- 無効化されている場合がある
- セキュリティ上の懸念がある
- 企業ネットワークでは使えないことが多い
便利な仕組みですが、すべての環境で使えるわけではありません。
方法3:STUN
STUNは、NAT越えでよく登場する技術です。
STUNは、簡単に言うと、
自分がインターネット側からどのIPアドレス・ポートに見えているかを知るための仕組み
です。
自宅PCは、自分のプライベートIPアドレスを知っています。
192.168.1.10
しかし、インターネット側から見ると、別のIPアドレスとポートに見えます。
203.0.113.10:60001
STUNサーバーに問い合わせることで、
外から見た自分のIPアドレスとポートはこれです
という情報を取得できます。
この情報を通信相手に伝えることで、直接通信できる可能性があります。
STUNだけでは解決できないこともある
STUNは便利ですが、万能ではありません。
NATの種類やネットワーク環境によっては、STUNで外部アドレスを取得しても、相手から接続できないことがあります。
特に、厳しいNATや企業ネットワーク、モバイル回線、二重NAT、CGNAT環境では、直接通信が難しいことがあります。
その場合は、次に説明するTURNが使われます。
方法4:TURN
TURNは、通信を中継するための仕組みです。
STUNで直接通信できない場合、TURNサーバーを経由して通信します。
イメージとしては、次のような流れです。
端末A
↓
TURNサーバー
↓
端末B
端末同士が直接つながれない場合でも、両方の端末がTURNサーバーには接続できれば、通信を成立させることができます。
TURNのメリット・デメリット
TURNのメリットは、直接通信できない環境でも通信できる可能性が高いことです。
一方で、デメリットもあります。
- サーバーの負荷が高い
- 通信量が増える
- 遅延が増えることがある
- サーバー運用コストがかかる
特にビデオ通話のように通信量が多いサービスでは、TURNサーバーのコストが問題になることがあります。
そのため、基本的には直接通信を試み、ダメな場合にTURNへフォールバックする設計がよく使われます。
方法5:ICE
ICEは、STUNやTURNを組み合わせて、最適な通信経路を探す仕組みです。
WebRTCでよく使われます。
ICEは、ざっくり言うと次のような流れで動きます。
- 自分の通信候補を集める
- 相手と候補情報を交換する
- 直接通信できるか試す
- ダメなら別の候補を試す
- 必要ならTURNサーバー経由にする
つまりICEは、
直接つながる道を探して、無理なら中継サーバーを使う仕組み
と考えるとわかりやすいです。
UDPホールパンチングとは?
NAT越えでよく使われる技術に、UDPホールパンチングがあります。
これは、NATの特性を利用して、NATの内側にいる端末同士が通信できるようにする方法です。
たとえば、端末Aと端末BがどちらもNATの内側にいるとします。
端末A → NAT A → インターネット ← NAT B ← 端末B
この状態では、AからBへ直接通信するのは難しいです。
そこで、両方の端末がまず外部のサーバーに通信します。
端末A → サーバー
端末B → サーバー
すると、それぞれのNATに通信の通り道ができます。
その後、サーバーが両者に外部アドレス情報を伝え、端末Aと端末Bがお互いに通信を試みます。
うまくいけば、NATの内側同士でも直接通信できます。
これがUDPホールパンチングの基本的な考え方です。
なぜUDPが使われやすいのか?
NAT越えでは、TCPよりもUDPの方が使われやすい場面があります。
理由は、UDPの方が接続の概念が軽く、NAT越えのための工夫をしやすいからです。
TCPは接続確立の手順が厳密で、NAT越えが難しくなることがあります。
一方、UDPはパケット単位で送受信するため、リアルタイム通信やP2P通信で使いやすい面があります。
そのため、オンラインゲーム、音声通話、ビデオ通話、WebRTCなどではUDPがよく使われます。
NATタイプとは?
オンラインゲームなどで表示されるNATタイプは、NATの通信しやすさを表す分類です。
サービスやゲーム機によって表現は異なりますが、よくある分類は次のようなものです。
| NATタイプ | 状態 | 通信のしやすさ |
|---|---|---|
| オープン | 外部と通信しやすい | 高い |
| モデレート | 一部制限がある | 中程度 |
| ストリクト | 制限が厳しい | 低い |
NATタイプがストリクトだと、マッチングしにくい、ボイスチャットがつながらない、ホストになれない、といった問題が起きることがあります。
二重NATとは?
NAT越えを難しくする原因の一つに、二重NATがあります。
二重NATとは、NATが2段階になっている状態です。
たとえば、次のような構成です。
端末
↓
自宅ルーター
↓
ONU・ホームゲートウェイ
↓
インターネット
自宅ルーターでもNATを行い、さらに上位の機器でもNATを行っている場合、二重NATになります。
この状態では、ポート開放やP2P通信がうまく動かないことがあります。
CGNATとは?
CGNATは、通信事業者側で行われるNATです。
Carrier Grade NATの略です。
通常、家庭のルーターでNATを行いますが、CGNATではプロバイダ側でもNATが行われます。
自宅端末
↓
自宅ルーター
↓
プロバイダ側NAT
↓
インターネット
CGNAT環境では、ユーザーが自宅ルーターでポート開放しても、外部からアクセスできないことがあります。
なぜなら、さらに上位のプロバイダ側NATを越えられないからです。
モバイル回線や一部の固定回線では、CGNATが使われることがあります。
NAT越えは「必ず成功する技術」ではない
ここで重要なのは、NAT越えは万能ではないという点です。
STUN、UDPホールパンチング、ICEなどを使っても、ネットワーク環境によっては直接通信できないことがあります。
その場合は、TURNのような中継サーバーを使う必要があります。
つまり、実務では次のような考え方が重要です。
直接通信を試す
↓
できればそのまま通信する
↓
できなければ中継サーバーを使う
NAT越えは、あくまで「できるだけ直接通信できるようにする工夫」です。
NAT越えとセキュリティ
NAT越えを考えるときは、セキュリティにも注意が必要です。
外部から内部ネットワークへ通信できるようにするということは、便利である一方、攻撃対象を増やす可能性もあります。
特にポート開放を行う場合は注意が必要です。
- 不要なポートは開けない
- 管理画面を外部公開しない
- 強いパスワードを使う
- ソフトウェアを最新に保つ
- ファイアウォールを適切に設定する
- 公開するサービスを最小限にする
NAT越えは通信を成立させる技術ですが、安全性まで自動的に保証してくれるわけではありません。
初心者向けに例えるなら
NAT越えは、マンションの部屋に例えるとわかりやすいです。
インターネット側から見ると、見えているのはマンションの入口だけです。
外部から見えるもの:マンションの入口
内部にあるもの:各部屋
外から荷物を届けたいとき、部屋番号がわからなければ届けられません。
NATも同じです。
外部から通信が来ても、ルーターが
どの端末に届ければいいのか
を知らなければ通信できません。
ポート開放は、
この入口から来た荷物は、この部屋に届けてください
と管理人に伝えるようなものです。
STUNやICEは、
お互いに連絡できる入口を探す仕組み
TURNは、
直接届けられないなら、いったん中継所を使う仕組み
と考えるとイメージしやすいです。
Webアプリ開発者もNAT越えを知っておくべき?
通常のWebアプリ開発では、NAT越えを直接扱う機会はそれほど多くありません。
たとえば、一般的なWebアプリでは、ブラウザからサーバーへHTTPリクエストを送ります。
ブラウザ → Webサーバー
この通信は内側から外側へ始まるため、NATの問題は起きにくいです。
しかし、次のような開発ではNAT越えの理解が重要になります。
- WebRTCを使ったビデオ通話
- P2P通信
- オンラインゲーム
- IoT機器との通信
- 自宅サーバー公開
- VPN
- リモートデスクトップ
- リアルタイム通信基盤
特にWebRTCを扱う場合、STUN、TURN、ICEの理解はほぼ必須になります。
よくある誤解
NATがあるから安全、とは限らない
NATによって外部から内部端末へ直接アクセスしにくくなるのは事実です。
しかし、NATは本来セキュリティ機能ではありません。
通信を許可・拒否する役割は、主にファイアウォールが担います。
ポート開放すれば必ず解決する、とは限らない
ポート開放をしても、二重NATやCGNATがあると外部からアクセスできないことがあります。
また、アプリによっては複数のポートやUDP通信が必要になることもあります。
STUNを使えば必ず直接通信できる、とは限らない
STUNは外部から見たIPアドレスとポートを知るための仕組みです。
しかし、それだけで必ず通信できるわけではありません。
NATの種類によっては、相手からの通信を受け付けられない場合があります。
まとめ
NAT越えとは、
NATの内側にある端末と外部の端末が通信できるようにするための技術や工夫
です。
NAT環境では、内側から始めた通信は通しやすい一方で、外側から突然来た通信は通しにくくなります。
そのため、オンラインゲーム、ビデオ通話、P2P通信、WebRTC、自宅サーバー公開などで問題になることがあります。
NAT越えでは、次のような方法が使われます。
- ポート開放
- UPnP
- STUN
- TURN
- ICE
- UDPホールパンチング
特に重要なのは、次の考え方です。
まず直接通信を試す
↓
無理なら別の経路を探す
↓
それでも無理なら中継サーバーを使う
NAT越えは、通信を成立させるための重要な技術です。
ただし、万能ではありません。
ネットワーク環境によっては直接通信できないこともあり、その場合はTURNのような中継サーバーが必要になります。
初心者のうちは、まず次のように覚えておくとよいでしょう。
NAT越えとは、NATの内側にいる端末へ通信を届けるための工夫である
この理解があると、オンラインゲームのNATタイプ、WebRTCのSTUN/TURN/ICE、自宅サーバーのポート開放などがかなり理解しやすくなります。

大阪のエンジニアが書いているブログ。



コメント