NAPT

読み:なぷと / 英語表記:Network Address Port Translation

IPアドレスに加えてポート番号も変換することで、1つのグローバルIPアドレスを、多数の端末で同時に共有できるようにするアドレス変換の方式。変換の対応は、ルータのNAT変換テーブルに記録される。

イマシルちゃんの解説

おうちのWi-Fiには、パソコンもスマホもゲーム機もつながっているけど、
インターネットから見ると、みんな同じ1つの住所(グローバルIPアドレス)から来ているように見えるんだ。

これを実現しているのがNAPT!
ルータが「この通信はスマホの分」「これはパソコンの分」って、ポート番号を使い分けて区別しているんだよ。
その対応表がいっぱいになると、新しい通信ができなくなっちゃうから、ちょっと注意が必要なんだ。

より深い解説

定義

NAPT(Network Address Port Translation)は、プライベートIPアドレスとポート番号の組を、グローバルIPアドレスとポート番号の組に変換する方式である。IPマスカレード、PAT(Port Address Translation)とも呼ばれる。1対1でアドレスだけを変換する(狭い意味の)NATと違い、多数の端末で1つのグローバルIPアドレスを共有できる。

NAT変換テーブル

内部の端末が外部に通信を始めると、ルータは変換の対応をNAT変換テーブルのエントリー(変換エントリー)として記録する。戻ってきたパケットは、このテーブルを見て、元の端末に届ける。

項目例誰が決めるか
内部のIPアドレス(local IP address)192.168.10.13端末
内部のポート番号(local port number)56124端末
変換後のIPアドレス(registered IP address)ISPから割り当てられたグローバルIPアドレスルータ
変換後のポート番号(assigned port number)5001ルータ
プロトコルTCP、UDP通信の種類

変換後のアドレスとポート番号は、ルータが自分の持つグローバルIPアドレスと、空いているポート番号から割り当てる。

エントリーの数と枯渇

1つのグローバルIPアドレスで使えるポート番号は約6万5千であり、ルータのNAT変換テーブルにもエントリーの上限がある。同時に通信する端末と、1台あたりのセッションの数が多いと、テーブルがいっぱいになり(枯渇)、新しい通信の変換ができなくなる。その結果、一部の端末の通信だけが、不特定に失敗する。

計算の例値
エントリー数の上限65,536
1台あたりの最大セッション数200
同時に問題なく使える台数65,536 ÷ 200 = 327.68 → 327台
600台が同時に使うのに必要なエントリー数600 × 200 = 120,000

エントリーの保持時間

通信が終わったエントリーは、一定時間(保持時間)が過ぎると削除され、再利用される。

通信保持時間の考え方
TCPSYN、FIN、RSTを見て接続の開始と終了がわかるため、終了したらすぐに削除できる
UDP接続という概念がなく、終了がわからないため、最後の通信から一定時間(例:300秒)待って削除する

UDPの保持時間が長いと、使われなくなったエントリーがテーブルに残り続ける。HTTP/3(QUIC)のようにUDPを使う通信が増えると、UDPの保持時間を短くすることで、テーブルを有効に使える。ただし、短くしすぎると、通信の途中でエントリーが消え、通信が切れてしまう。

NAPTの課題

課題内容
外部からの接続外部から内部の端末に、直接接続を始められない(静的なポート転送の設定が必要)
アプリケーションへの影響通信の中にIPアドレスを含むプロトコル(FTP、SIPなど)は、特別な対応(ALG)が必要
ログの追跡外部から見ると全員が同じアドレスなので、誰の通信かを調べるには、NAPTの変換ログが必要

実際の試験ではここに出る!

この用語が出てくる記事

↑