NAT(ネットワークアドレス変換)とは?基礎原理を整理

家庭のルーター1台だけで、複数の機器が同時にインターネットを使えるのはなぜでしょうか。その裏にあるNATの原理を整理しました。

NAT(ネットワークアドレス変換)とは

家庭やオフィス内部で使うプライベートIPアドレスと、実際にインターネットに出ていく1つのパブリック(公開)IPアドレスとを相互に変換する、ルーターの中核機能です。

NATが必要な理由:IPv4アドレスの枯渇

世界中で割り当て可能なIPv4アドレスは約43億個しかなく、スマートフォンやノートパソコン、IoT機器のすべてに1つずつパブリックIPを割り当てるにはまったく足りません。NATのおかげで、1つの家庭内にある数十台の機器が、プロバイダーから割り当てられたたった1つのパブリックIPアドレスを共有しながら同時にインターネットを利用できます。これは、IPv4アドレスが本来枯渇していたはずの時期をはるかに超えて使い続けられている、現実的な折衷策です。

PAT(ポートアドレス変換):家庭用ルーターの実際の動作方式

ノートパソコンとスマートフォンが同時にインターネットに接続しても互いに混線しないのは、ルーターが内部機器ごとの(プライベートIP、ポート)の組み合わせを、パブリックIPの異なるポート番号にそれぞれ割り当てているからです。例えばノートパソコンのリクエストはパブリックIPの40001番ポートへ、スマートフォンのリクエストは40002番ポートへ送り出され、応答が戻ってきたときはポート番号を見てどちらの機器に返すべきか判断します。この、ポート番号まで使って変換するPAT(ポートアドレス変換、通称NAPT)方式こそが、家庭用ルーターが実際に採用している方式です。

NAT変換テーブル:対応関係を記憶しておく台帳

新しい通信が始まるたびに、ルーターは「内部の192.168.0.5:51000は外部へ出るときにパブリックIP:40001になる」といった項目を一時的に作成して管理します。この項目は通信が終わったり、一定時間応答がなかったりすると自動的に削除されますが、オンラインゲームやビデオ通話のように長時間接続を維持する必要があるサービスでこの項目が想定より早く消えてしまうと、接続が突然切れる問題につながることがあります。

静的NATと動的NATの違い

静的NATは1つのプライベートIPアドレスと1つのパブリックIPアドレスを常に固定で対応させる方式で、常に同じ外部アドレスでアクセスできる必要があるサーバーなどに適しています。動的NATは、複数のパブリックIPアドレスのプールを用意しておき、必要なタイミングで1つずつ一時的に割り当てる方式で、限られたパブリックIPを多くのユーザーが交代で使う企業ネットワークなどで活用されます。ただし、家庭用ルーターが日常的に行っているのは、この2つよりも先に説明したポートベースのPATにずっと近い動作です。

NATの限界:ポート開放やP2P接続が難しくなる

NATは基本的に内部から始まった通信にしか応答を返さないため、家庭内サーバーへの外部アクセスやゲーム機のP2Pマッチングのように、外部から先に内部機器へ接続を試みるケースは、特別な設定なしでは初期状態でブロックされます。これを解決するには、特定のポートを指定した内部機器に開放するポートフォワーディングや、必要なときに自動でポートを開くUPnPといった仕組みが必要です。オンラインゲームで見かけるOpen・Moderate・StrictといったNATタイプの表示も、結局はこの限界に由来しています。

NATがもたらす副次的なセキュリティ効果

NATはセキュリティ機能として設計されたものではありませんが、ファイアウォールに似た副次的な効果を生みます。外部の攻撃者が自分のパブリックIPへの接続を試みても、NATテーブルに該当する通信の記録がなければ、ルーターはそのトラフィックをどの内部機器に送ればよいか判断できず、結果として自然に破棄されます。

長時間の接続が予期せず切れることがある理由

すべての通信の背後にあるNATテーブルの項目には寿命があり、一定時間通信がないと期限切れになって、ルーターは応答をどこに返せばよいか分からなくなります。長時間接続を維持しながらもトラフィックが断続的にしか発生しないオンラインゲームやビデオ通話は特にこの影響を受けやすく、通話が長く無音状態になったり、ゲームのセッション中に通信の空白期間があったりすると、NATのマッピングが期限切れとなって接続が突然切断されることがあります。この問題を認識しているアプリケーションは、NATテーブルの項目を生かし続けるために、一定間隔で小さな「キープアライブ」パケットを送信するのが一般的です。

NATはファイアウォールのように見えても、ファイアウォールではない

NATが招かれざる外部からの接続を遮断する傾向があるのは、あくまでその動作原理から生じる副次的な結果であり、意図的に設計されたセキュリティ制御ではありません。悪意のあるトラフィックと無害なトラフィックを区別する仕組みも、遮断した試みを記録するログ機能も、パケットの中身を検査する能力もありません。本物のファイアウォールは、どのトラフィックを許可するかを意図的なルールに基づいて判断します。だからこそ、実際のファイアウォール機能を伴わずNATだけに頼っていると、本来のセキュリティツールが提供するきめ細かな制御を欠いたネットワークになってしまいます。

よくある質問

NATとファイアウォールは同じものですか?

いいえ、違います。NATの役割はあくまでアドレスを変換することだけであり、招かれざる外部からの接続を初期状態でブロックするのは、その変換の仕組みから生じる副次的な効果に過ぎず、意図的なセキュリティ機能ではありません。きめ細かいルールでトラフィックをフィルタリングするには、別途、本物のファイアウォール機能が必要です。

IPv6を使えばNATは不要になりますか?

IPv6はアドレス空間が非常に広く、理論上はすべての機器にパブリックアドレスを割り当てられるため、NATは必須ではなくなります。ただし現実には、当面IPv4とIPv6を併用する環境が多く残ると見られ、NATはしばらくの間、日常的に使われ続ける見込みです。