ネットワークアドレス変換(NAT)は、トラフィックがルーターやファイアウォールを通過する際にパケットヘッダーを書き換えることでIPアドレス空間を再マッピングするアドレス指定方式であり、これにより複数のプライベートホストがパブリックIPv4アドレスを共有し、限られたIPv4アドレス空間を節約することが可能になります。 NATは、内部アドレスやポートを外部のものにマッピングする変換テーブルを維持することで、レイヤ3(およびポート変換の場合はレイヤ4)で動作します。最も一般的な形式はポートアドレス変換(PAT)であり、これにより数千台のホストが1つのパブリックアドレスを共有することが可能になります。 NATはIPv4アドレスの枯渇問題を解決し、付随的な接続フィルタリング機能も提供しますが、状態管理、送信元情報の喪失、プロトコルの非互換性、統合ネットワークにおける複雑さといった運用上の課題も生じます。ただし、IPv6の圧倒的に広いアドレス空間により、NAT導入の主な要因は解消されています。
NATの仕組み
NATデバイスは、2つのアドレス領域(通常はプライベートな内部ネットワークとパブリックなインターネット)の間に配置されます。このデバイスは、内部接続を外部のアドレスおよびポートにマッピングする変換テーブルを保持しています。
- 送信パケットの到着:内部ホストが外部の宛先へパケットを送信します。このパケットは、ホストのプライベート送信元アドレスと送信元ポートを保持した状態でNATデバイスに到達します。
- 翻訳エントリ作成:デバイスはパブリックアドレスを選択し、ポートアドレス変換では送信元ポートも選択します。そして、内部アドレスとポート、および外部アドレスとポート間のマッピングを、変換テーブルに記録します。
- ヘッダーの書き換え:デバイスは、パケットヘッダー内の送信元アドレスとポートを置き換え、チェックサムを再計算します。その後、パケットを宛先に向けて転送します。
- 返信の翻訳:外部サーバーは、パブリックアドレスとポートに対して応答します。デバイスはエントリを検索し、元の内部宛先を復元して、パケットをホストに転送します。
- エントリの有効期限:接続が切断されたり、タイムアウトを超えてアイドル状態が続いたりすると、デバイスはテーブルエントリを削除し、そのポートを再利用する場合があります。
ポートアドレス変換(NATオーバーロードとも呼ばれる)は最も一般的な形式であり、数千台の内部ホストが1つのパブリックアドレスを共有できるようにします。 静的NATは、1つの内部アドレスを1つの外部アドレスにマッピングするもので、サーバーへのインバウンドアクセスに適しています。要求されていないインバウンドトラフィックにはテーブルエントリがないため、静的マッピングやポートフォワードが存在しない限り、そのトラフィックは破棄されます。一部のプロトコルはペイロードにアドレスを埋め込んでおり、NATを経由して動作させるにはアプリケーション層のヘルパーが必要です。
NATに関する一般的な問題
1つのパブリックアドレスには送信元ポートのプールが限られているため、負荷の高いクライアントやプロキシがそれらをすべて使い切ってしまう可能性があります。その結果、特にピーク時の負荷が高い時間帯に、新規接続が失敗したり断続的に停止したりすることがありますが、既存のセッションは引き続き正常に動作します。
ペイロード内にIPアドレスやポートを含むプロトコルは、ヘッダーのみが書き換えられると通信に失敗する可能性があります。一部の音声、動画、およびファイル転送セッションは、NATデバイスにアプリケーションレベルのヘルパーが搭載されているか、エンドポイントがトラバーサル技術を使用していない限り、接続は成立してもメディアやデータが伝送されません。
インターネットに公開されているログには変換後のアドレスのみが表示されるため、多くのユーザーが1つのホストとして認識されてしまいます。タイムスタンプとポート番号を含む変換ログが保持され、相互に関連付けられていない限り、調査担当者はイベントを特定のホストまで追跡することはできません。
NATデバイスがトラフィックを内部へループバックできない場合、パブリックアドレスを経由してサーバーにアクセスする内部クライアントで接続に失敗することがあります。症状としては、インターネットからはサービスが利用できても、内部ネットワークからはタイムアウトが発生するといったものがあり、一般的な回避策としてスプリットホライズンDNSが挙げられます。
(多くの場合、買収後に)同じプライベートアドレス範囲を使用するネットワークを統合すると、ルーティングの競合が発生します。チームは、ドメイン間でダブルNATや変換を追加しますが、これによりトラブルシューティングやDNSレコードの管理が複雑化します。