書き換えた住所は、戻せるように覚えておく
支店の PC が外のサーバを見に行くとき、ルータが送信元の住所とポート番号を書き換えて変換表に 1 行覚え、帰りに書き戻すまでを 1 枚の図で追う
目次
図 7 では、支店からデータセンターへ社内の住所のまま送ると、プロバイダのルータで止まりました。
それなのに、同じ支店の PC は普通にウェブを見られます。 図 7 の注では、その理由をルータの書き換えとして 1 行だけ置きました。 この記事は、その書き換えを扱います。 図 7 で挙げた 3 つの問題のうち、解けるのは「社内専用の住所はインターネットでは運ばれません」の、外のサーバへ行く分だけです。
この連載は、ネットワークの言葉を 3 つの層に置いて読みます。 もの(物理か論理か)、結びつき(人が設定で付ける手動か、機器が学習する自動か、製造時に決まる固定か)、通信フロー(1 本の通信がそれらを順に通る道筋)の 3 つです。
登場するもの
変換表(NAT テーブル)
論理のものです。 ルータの中にできる、もう 1 つの表です。 書いてあるのは「内側の住所とポート番号」と「書き換えた後の外側の住所とポート番号」の対応で、帰りの通信をこの表で逆に引いて書き戻します。
内側ローカルと内側グローバル
内側ローカルは、社内で実際に使っている住所です。 内側グローバルは、書き換えた後の外向けの住所です。 外のサーバに見えるのは後者だけです。
ポート番号
TCP や UDP が持つ番号で、1 台の機器の中でどの通信かを見分けるために使います。 ウェブの既定は 80 です。 図 5 では、ルータが見るのは IP の部分だけだと書きました。 NAT はその後ろのポート番号まで見て書き換えます。
内側の送信元を書き換える NAT の 3 種
- 静的 NAT は、住所だけを 1 対 1 で置き換えます。人が 1 行書き、その行はずっと残ります(ポート番号まで固定で結ぶ書き方もありますが、この図では扱いません)。
- 動的 NAT は、用意しておいた外側の住所の集まりから 1 つ割り当てます。行は通信の開始でできて、終了で消えます。同時に使えるのは住所の数までです。
- PAT は、1 つの外側の住所をポート番号で共用します。ポート番号が違えば何台でも同じ外側の住所を使えます。この図の ② はこれです。
結びつき
- インターフェース ⇄ 内側と外側の役は手動です。どちらの口が内側でどちらが外側かを人が指定します。この指定が無いと変換は起きません。
- 内側の住所とポート番号 ⇄ 外側の住所とポート番号は、静的 NAT では手動です。動的 NAT と PAT では、通信の開始で自動に行ができます。
- ルーティングテーブルとは結び付きません。NAT で行が増えるのは変換表だけで、経路の行は図 7 のままです。
通信フロー
支店の A(192.168.10.10)から、外のサーバ(192.0.2.50)のウェブを見に行き、返事が戻るまでです。
① A は宛先 192.0.2.50 が自分のネットワーク外なので、デフォルトゲートウェイ(ルータ 1)へ送ります。図 5・図 7 の ① と同じです。
② ルータ 1 は外側の口から出すときに、送信元を 192.168.10.10 のポート番号 50000 から 203.0.113.10 のポート番号 51001 に書き換え、変換表に 1 行書きます。
③ 宛先も送信元もグローバル IP なので、インターネットは運べます。図 7 の ③ で捨てられたのは、宛先が社内専用の住所だったからです。
④ サーバは返事を 203.0.113.10 のポート番号 51001 あてに返します。サーバが知っているのは書き換えた後の住所だけです。
⑤ ルータ 1 は変換表を逆に引いて、宛先を 192.168.10.10 のポート番号 50000 に書き戻し、内側へ転送します。
図 8
図の上半分が構成図と 3 種の分け方、下半分が各テーブルの推移と通信の中身の推移です。
図 5 では「宛先 IP・送信元 IP は端から端まで変わらない」と書きました。 NAT を通す区間では、この約束が崩れます。 行きで送信元の側が、帰りで宛先の側が書き換わります。 MAC の付け替えは図 5 のままで、変わるのは IP とポート番号の欄だけです。
図 7 の ③ で通信が止まったのは、宛先が社内専用の住所で、途中に一致する行が無かったからです。 図 8 の ③ は宛先も送信元もグローバル IP なので運ばれます。 ただし解けたのは外向きの分だけです。 支店とデータセンターの社内住所同士をつなぐ話は図 10 の GRE、中身が読める話は図 11 の IPsec が扱います。
次の図 9 では、ルータの口に「通す・通さない」の行の並びを付けます。 ルータの中で、その判定が経路探しや変換とどの順で来るかは、この図と同じ出典で確かめられます。
未検証・注意
- 外側のポート番号はルータが選びます。内側と同じ番号をそのまま使おうとする実装もあります(RFC 4787 4.2.1)。ただし、ぶつかったときも同じ番号を使い続ける使い方(ポート多重)は禁止されています(同 REQ-3)。図では別の番号(50000 から 51001)で描いてあり、番号が変わり得ることを見せています。
- 動的 NAT でプールを使い切ったときの挙動は未検証です。引用したページに記述がありません。
- 静的 NAT について「ポート番号は使わない」とは書けません。ポート番号まで固定で結ぶ書き方があります。この図では扱っていません。
- ルータの中の処理順序は、内側から外側が「入口の ACL → 経路探し → 変換 → 出口の ACL」、外側から内側が「入口の ACL → 変換 → 経路探し → 出口の ACL」です。帰りだけ変換が先に来ます。
- 図の 192.0.2.50 と 203.0.113.x は、説明用に予約された番地です(図 7 から引き継ぎ)。
出典
- 勉強会での本人の観察(2026-09-13 実機ハンズオン。資料は非公開)
- RFC 3022: Traditional IP Network Address Translator — Basic NAT は IP アドレスだけを変換し、NAPT は「内側の IP とポート番号」の組を「外側の IP と割り当てたポート番号」の組に対応づける。外向きは送信元のポート番号、内向きは宛先のポート番号を変換する
- RFC 4787: NAT Behavioral Requirements for Unicast UDP — 4.2.1 に内側と同じポート番号を使おうとする実装の説明。REQ-3「A NAT MUST NOT have a 'Port assignment' behavior of 'Port overloading'」
- RFC 9110: HTTP Semantics — 4.2.1。ポート番号が書かれていなければ TCP の 80 が既定
- Cisco: Understand the NAT Order of Operation — 内側から外側は入口の ACL・経路探し・変換・出口の ACL の順。外側から内側は変換が経路探しより先
- インフラエキスパート: NAPT — ポート番号も変換することで 1 つのグローバル IP を複数の端末で共有できる
- インフラエキスパート: スタティック NAT — 内部ローカルアドレスと内部グローバルアドレスの 1 対 1 の対応。
ip nat inside/ip nat outsideの指定 - インフラエキスパート: ダイナミック NAT — アドレスプールから割り当てる。行は通信の開始のときにできる
関連
-
ネットワーク_INDEX — 連載の目次
-
連載の入口: ネットワーク_00_3層で言葉を置く(
/notes/nw-basics-00-three-layers) -
前の記事(図 7): ネットワーク_07_インターネットを挟む(
/notes/nw-basics-07-internet) -
次の記事(図 9): ネットワーク_09_ACL(
/notes/nw-basics-09-acl) -
同じ 3 つの問題を解く記事: ネットワーク_10_GREトンネル(
/notes/nw-basics-10-gre) / ネットワーク_11_IPsec(/notes/nw-basics-11-ipsec)
この記事の校閲記録
誰が・いつ・どの版の・どの段落を・何の観点で見て、何と言ったかを全件そのまま出す(追記のみ・削除しない)。
段落 33 のうち出典つき 13・出典なし 20
v1 2 件
AIAI (claude-fable-5) が AI 確認未解決
出典 8 件をすべて再取得した。NAPT が「内側の IP とポート番号」と「外側の IP とポート番号」の組を対応づけること・外向きは送信元のポート番号を、内向きは宛先のポート番号を変換することを RFC 3022 の本文で確認した。外側のポート番号に内側と同じ番号を使おうとする実装があること、ぶつかっても同じ番号を使い続ける使い方が MUST NOT であることを RFC 4787 4.2.1 と REQ-3 で確認した。ルータの中の処理順序(内側から外側は入口の ACL・経路探し・変換・出口の ACL、外側から内側は変換が経路探しより先)を Cisco のページの表で確認した。ウェブの既定のポート番号 80 は RFC 9110 4.2.1 で確認した。内部ローカルと内部グローバル・ip nat inside と ip nat outside の指定・動的 NAT の行が通信の開始ででき終了で消えることは、インフラエキスパートの該当ページで確認した。動的 NAT がプールを使い切ったときの挙動は同ページに記述が無く、未検証として本文に残した。静的 NAT について「ポート番号は使わない」とは書かず、この図では扱わない書き方に留めた。校正チェックリストを通し、例え話・体言止め・断定を示す禁止語の混入を機械検査した。守秘: 実名・社名・会場名・地名・金額なし
AIAI (claude-fable-5) が 編集未解決
公開前の校閲。技術・連載整合・校正チェックリスト・frontmatter・守秘の 5 観点を通した。図 7 の 3 つの問題の言い回し、wikilink と /notes/ の実在、sources と本文「出典」の一致、アドレス計画との照合は差分なし。frontmatter のタグ NAT を、運用指示書の「英語タグは小文字・半角英数字」と公開済み記事の表記に合わせて nat に直した。本文の修正はなし。
参考文献
- 二次RFC 3022: Traditional IP Network Address Translator参照 2026-09-14
- 二次RFC 4787: NAT Behavioral Requirements for Unicast UDP参照 2026-09-14
- 二次RFC 9110: HTTP Semantics参照 2026-09-14
- 二次Cisco: Understand the NAT Order of Operation参照 2026-09-14
- 二次インフラエキスパート: NAPT参照 2026-09-14
- 二次インフラエキスパート: スタティック NAT参照 2026-09-14
- 二次インフラエキスパート: ダイナミック NAT参照 2026-09-14
更新履歴
- 連載のトピックを「ネットワーク基礎」から「ネットワーク」へ改名(32 本+目次。slug と URL は不変)
- 公開: 連載「ネットワーク基礎」図 8〜24 の記事 17 本と目次の更新
機械可読の記録
- article.json(記事の正本)
- reviews.json(校閲記録)
- blocks.json(ブロック一覧)