NAT(Network Address Translation)とは何か

NAT(Network Address Translation)は、ネットワーク間で「IPアドレス(と多くの場合ポート番号)」を置き換えながら通信を中継する仕組みです。自宅や小規模オフィスのように端末が複数ある環境では、外側(インターネット側)に見せるアドレス数を節約するために使われることが多く、送信側の端末ごとに対応するためにポート番号もあわせて扱われます。

重要なのは、NATが「通信を完全に隠す」手段ではない点です。NATはあくまでアドレスの見え方を変える技術であり、通信の安全性を高めるかどうかは、NAT単体ではなく周辺の設定(ファイアウォール、暗号化の有無、ポリシー)とセットで考える必要があります。

仕組みを簡単にモデル化する

NATの基本動作は、通信の流れに沿って次のように整理できます。

  • 端末が外部サーバーへ通信を開始するとき、ルータ等は送信元のIP(多くの場合は端末のプライベートIP)を、外側で使うIP(グローバルIP)に置き換えます。
  • 併せて、送信元のポート番号も(必要に応じて)変換し、どの端末の通信かを追跡できるようにします。
  • その結果、外部から見ると「複数の端末が1つの出口IP(とポートの組合せ)」で通信しているように見えます。
  • 応答が返ってきたら、NATは対応する通信の組を見つけて、宛先を元の端末へ戻します。

このとき、NATは「現在の通信の対応関係」を保持します。対応表(接続テーブル)の内容が時間とともに更新されるため、タイムアウトや再接続の挙動が影響することがあります。

NATの構成要素:ポート、セッション、タイムアウト

NATの実務では「ポート」が鍵になります。特に、同じ出口IPを複数の端末で共有する場合、ポート番号の組合せによってどの端末・どの通信かを識別します。

また、NATはセッション(通信のまとまり)として扱われることが多く、一定時間データが流れない通信は「終了したとみなされる」ことがあります。これにより、長時間の待ちがある通信や、アプリが期待するタイミングと合わない通信は不安定に見える場合があります。

制限と例外:着信、アプリの相性、関連概念との違い

NATには、万能に通信を成立させる性質はありません。よく問題になりやすい点を、比較しながら整理します。

  1. 受動的な着信(インバウンド)の制約 外部から内部端末へ「何の情報もなしに」直接到達させたい場合、NATだけでは難しくなります。なぜなら、NATは一般に「内部から始まった通信」に対応して翻訳の対応関係を作るためです。

  2. ポートフォワーディングとの関係 この制約を補うために、NAT(ルータ)の設定としてポートフォワーディングを行うケースがあります。