用語辞典・IP・アドレス

NAPT

NAPTとは

NAPTは、IPアドレスとTCPまたはUDPのポート番号を同時に変換し、複数の内部端末が一つの外部IPアドレスを共有できるようにする仕組みです。正式名称はNetwork Address Port Translation(ネットワーク・アドレス・ポート・トランスレーション)です。

NAPTは、IPアドレスとTCPまたはUDPのポート番号を同時に変換し、複数の内部端末が一つの外部IPアドレスを共有できるようにする仕組みです。

家庭用ルーターで「NAT」と表示される機能の多くは、実際にはNAPTです。製品や資料によってPAT(Port Address Translation/ポート・アドレス・トランスレーション)、IPマスカレードなどの名称も使われます。同じ外部アドレスを使っても、変換後のポート番号を変えれば応答の戻り先を区別できることが中心です。

一つの外部アドレスを、異なるポートで分け合う色の異なる対応札が、応答を元の端末へ戻す
複数の内部端末がアドレスとポートの組をルーターで変換し、共通の外部IPアドレスと別々のポート番号を使って通信する図解
図1NAPTは、内部側の送信元アドレスとポートを、外部側の共通アドレスと空いているポートへ対応付けます。応答が戻ると、外部側の宛先ポートから対応行を探して元の端末へ変換します。

変換表には、アドレスとポートの組が並ぶ

同時通信を見分ける対応表外部ポートが同じにならないように割り当てる
通信規則内部側の送信元外部側で見える送信元
TCP192.168.1.10:53001203.0.113.8:41001
TCP192.168.1.11:53001203.0.113.8:41002
UDP192.168.1.12:60000203.0.113.8:41003
図2例示用アドレスとポートです。TCPとUDPは別の通信規則なので、同じ数値のポートでも別々に管理されます。実際の機器は宛先情報や通信状態も使って対応を識別する場合があります。

往路で作った対応を、復路で逆に使う

内部端末が外部サーバーへTCPパケットを送ると、NAPT機器は送信元のプライベートIPアドレスと送信元ポートを変換します。外部サーバーは、変換後のグローバルIPアドレスとポートへ応答します。

戻ってきたパケットでは、その宛先アドレスと宛先ポートを表から照合し、元の内部アドレスとポートへ戻します。対応は永久ではなく、通信の終了や一定時間の無通信などで削除されます。対応が失われれば、届いた応答をどこへ戻すか判断できません。

外部から始める通信には、ポート転送などの設定が必要

外部から新しく届いたパケットには、往路で作った対応がありません。特定の外部ポートを特定の内部アドレスとポートへ結び付けるport forwarding(ポート・フォワーディング)を設定すれば、外部から内部サービスへ転送できます。

ただし、ポート転送はサービスを外部へ到達可能にする設定です。必要なポートだけに限定し、ファイアウォール、認証、ソフトウェア更新も同時に確認します。また、さらに事業者側のCGNATがある場合、家庭用ルーターだけに設定しても外部から届かないことがあります。

ポート番号はサービス名そのものではない

ポート番号にはよく使われる通信規則との対応がありますが、番号だけで通信内容が保証されるわけではありません。別のアプリが同じポートを使うことも、既定と異なるポートでサービスを待ち受けることもできます。NAPTは番号を通信の識別材料として扱い、アプリの意味を理解して振り分けているわけではありません。

ICMPの問い合わせ識別子など、TCP・UDPポート以外を変換する実装もあります。NAPTを「すべてのIP通信に必ずポート番号がある仕組み」と一般化しないようにします。

仕様の確認資料:RFC 3022「Traditional IP Network Address Translator」、RFC 2663「IP Network Address Translator Terminology」

関連用語