NAT・NAPTとは?IPアドレス・ポート変換の仕組みを図解

  • URLをコピーしました!

前の記事までで、 ルーターがルーティングテーブルを利用して 異なるIPネットワークへパケットを転送する仕組み を学びました。

では、社内PCからInternet上のWebサーバーへ通信するケースを考えてみましょう。

INTERNAL 💻 PC-A 192.168.10.10
📡 Router
🌐 Internet Web Server

PC-Aが利用している 192.168.10.10は、 Private IP Addressです。

Private IP Addressを利用するPCは、
どうやってInternet上のサーバーと通信しているのでしょうか?

そこで利用される代表的な仕組みが NATNAPTです。

🌐 NETWORK INTERMEDIATE

この記事はネットワーク中級講座の一部です。 学習順を確認したい場合は講座一覧から確認できます。

ネットワーク中級講座を見る →
LESSON GOAL この記事のゴール

NATという単語を覚えるだけではなく、 「Private IPをGlobal IPへ変換し、 NAPTではさらにPort番号を利用して複数端末の通信を識別する」 仕組みを説明できる状態を目指します。

目次

まずPrivate IPとGlobal IPを整理しよう

NATを理解するためには、 まずPrivate IP AddressとGlobal IP Addressの違いを整理する必要があります。

PRIVATE IP 組織・家庭内などで利用 192.168.10.10

Internet上でそのままグローバルに ルーティングされるためのアドレスではありません。

GLOBAL IP Internet上で利用 203.0.113.10

Internet側との通信で 外部から識別されるIPアドレスです。

代表的なPrivate IPv4アドレス範囲には、 次のものがあります。

10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
Private IP Addressは内部Networkで再利用できる

たとえば多くの家庭や企業で 192.168.1.10のような同じPrivate IPを利用できます。 Internetとの境界ではNATなどを利用して Global IPとの対応付けを行います。

NATとは?

NATは Network Address Translation の略です。

名前の通り、 IPアドレスを別のIPアドレスへ変換する仕組み です。

INSIDE 192.168.10.10 Private IP
NAT Address Translation
OUTSIDE 203.0.113.10 Global IP

たとえば、 内部PCの送信元IPアドレス 192.168.10.10 を、 Internet側では 203.0.113.10 として扱うように変換できます。

NAT前後でIPヘッダーはどう変わる?

PC-AからInternet上のWebサーバー 198.51.100.20 へ通信するとします。

BEFORE NAT
SOURCE IP 192.168.10.10
DESTINATION IP 198.51.100.20
NAT
AFTER NAT
SOURCE IP 203.0.113.10
DESTINATION IP 198.51.100.20

この例では、 送信元IPアドレス が変換されています。

RoutingとNATは別の処理

Routingは 「どこへ転送するか」 を決める仕組みです。 NATは 「IPアドレスをどう変換するか」 を扱います。

1つのGlobal IPを複数PCで使いたい場合は?

ここで次のような家庭や企業Networkを考えます。

💻 PC-A
192.168.10.10
💻 PC-B
192.168.10.20
💻 PC-C
192.168.10.30
NAT Router Global IP
203.0.113.10
Internet

Global IP Addressが1つしかない場合、 3台すべてを単純な 「1 Private IP ↔ 1 Global IP」 として対応させることはできません。

では、1つのGlobal IP Addressを
複数の内部端末で共有するにはどうするのでしょうか?

そこで登場するのが NAPTです。

NAPTとは?

NAPTは Network Address Port Translation の略です。

IPアドレスだけでなく Port番号も利用して通信を識別・変換 します。

PC-A 192.168.10.10:50001
PC-B 192.168.10.20:50001
PC-C 192.168.10.30:50001
↓ NAPT
203.0.113.10 40001 / 40002 / 40003

たとえば、 次のような変換を行えます。

INSIDE OUTSIDE
192.168.10.10:50001 203.0.113.10:40001
192.168.10.20:50001 203.0.113.10:40002
192.168.10.30:50001 203.0.113.10:40003

外部から見ると、 すべて 203.0.113.10 という同じIPアドレスです。

しかしPort番号が異なるため、 Routerは どの内部端末の通信なのか区別 できます。

NAT IP Addressを変換 NAPT IP Address + Port番号で多重化

PATという言葉もある

NAPTとほぼ同じ文脈で、 PAT(Port Address Translation) という言葉を見ることもあります。

Ciscoなどでは、 複数の内部端末を1つまたは少数のGlobal IPへ Port番号を利用して変換する方式を PAT / NAT Overload と呼ぶことがあります。

初学者は「NAPT=IP+Portで複数通信を識別」と理解すればOK

NAT・NAPT・PATは教材やベンダーによって 表現が少し異なることがあります。 重要なのは Port番号を使うことで1つのGlobal IPを複数通信で共有できる という仕組みです。

NATテーブルは何を記録している?

NAPTを行うRouterは、 変換内容を覚えておく必要があります。

その対応関係を保持する情報を、 ここでは分かりやすく NATテーブル として考えます。

PROTOCOL INSIDE LOCAL INSIDE GLOBAL DESTINATION
TCP 192.168.10.10:50001 203.0.113.10:40001 198.51.100.20:443
TCP 192.168.10.20:51000 203.0.113.10:40002 198.51.100.30:443

これにより、 Internetから戻ってきた通信を どの内部端末へ戻すべきか判断できます。

戻り通信はどうやって元のPCへ届く?

PC-Aの通信が、 次のように変換されたとします。

192.168.10.10:50001 203.0.113.10:40001

Webサーバーからの応答は、

SOURCE 198.51.100.20:443
DESTINATION 203.0.113.10:40001

としてRouterへ戻ってきます。

RouterはNATテーブルを確認します。

RECEIVED 203.0.113.10:40001
NAT TABLE
TRANSLATE BACK 192.168.10.10:50001

こうして、 応答を元のPC-Aへ戻すことができます。

NAPT通信を最初から整理しよう

01 PCが通信開始 192.168.10.10:50001
02 RouterがNAPT 203.0.113.10:40001へ変換
03 Internetへ送信 Global IPとして通信
04 Serverから応答 203.0.113.10:40001宛て
05 NAT Tableを検索 192.168.10.10:50001と判明
06 PC-Aへ戻す 通信成立

Static NATとは?

NATには、 内部IPと外部IPを 固定的に1対1で対応付ける 方法もあります。

PRIVATE 192.168.10.100
GLOBAL 203.0.113.100

このような固定的な対応付けを Static NAT として利用する場合があります。

外部から内部サーバーへアクセスさせる構成などで、 固定的な変換が必要な場合に使われます。

ポートフォワーディングとの関係

家庭用Routerなどでは、 ポートフォワーディング という設定を見ることがあります。

たとえば、

Internet 203.0.113.10:443
Router
Internal Server 192.168.10.100:443

のように、 特定の外部Portへの通信を 内部サーバーへ転送する設定です。

これもNAT/NAPTと関連する代表的な機能です。

NATを使えば通信制御もできる?

ここで注意したいのが、 NATと通信制御は別の役割 という点です。

NAT / NAPT Address Translation

IPアドレスやPort番号を 変換・対応付けする。

ACL Permit / Deny

条件に応じて 通信を許可・拒否する。

NATそのものの目的は「許可・拒否」ではない

NATを利用した結果として外部から直接通信しにくくなる場合はありますが、 通信を条件によって明示的に許可・拒否する仕組みとは別 に考えることが重要です。

ここで実際に試してみよう:NAPT変換シミュレーター

PC-A・PC-B・PC-CからInternetへアクセスし、 NATテーブルがどのように増えていくか確認してみましょう。

INTERACTIVE LAB

NAPT Translation Simulator

NAT TABLE
💻 PC-A 192.168.10.10
💻 PC-B 192.168.10.20
💻 PC-C 192.168.10.30
NAPT ROUTER Global IP:203.0.113.10
CURRENT NAT TABLE
INSIDE LOCAL INSIDE GLOBAL DESTINATION
まだ通信はありません
READY

PCからWebアクセスしてみましょう

同じGlobal IPでもPort番号を変えることで、 複数の内部通信を識別できます。

理解度チェック:この戻り通信はどのPCへ届く?

192.168.10.10:50001 203.0.113.10:40001
192.168.10.20:50002 203.0.113.10:40002
192.168.10.30:50003 203.0.113.10:40003

Internetから次の通信が返ってきました。

DESTINATION 203.0.113.10:40002

Routerはどの端末へ戻すでしょうか?

回答を選択してください

Global側のPort番号とNATテーブルを照合してみましょう。

NAT・NAPTのトラブルシューティングでは何を見る?

CHECK 01 NAT変換が作成されている?

内部通信に対する変換エントリが 正しく作成されているか確認します。

CHECK 02 Inside / Outsideは正しい?

NAT対象となる内部側・外部側インターフェースや 条件を確認します。

CHECK 03 Routingは成立している?

NATだけでなく、 Internet側・内部側へのRouteが 存在することも重要です。

確認問題:NAT・NAPTを理解できたか確認しよう

QUESTION 01

NATの代表的な役割として正しいものはどれですか?

正解:B

NATはNetwork Address Translationの略で、 IPアドレスを変換する仕組みです。

QUESTION 02

1つのGlobal IP Addressを複数PCで共有する際、 通信を区別するためにNAPTが利用する代表的な情報はどれですか?

正解:C

NAPTはIPアドレスに加えてPort番号を利用し、 複数の通信を識別して1つのGlobal IPへ多重化できます。

QUESTION 03

NATとACLの説明として正しいものはどれですか?

正解:A

NATとACLは役割が異なります。 NATはアドレス変換、 ACLは条件に応じた通信の許可・拒否を行います。

YOUR SCORE 0 / 3

3問に挑戦してみましょう。

IPを変換しただけでは「誰を通すか」は決められない

NAT・NAPTによって、 Private IPを利用する内部端末が Internetと通信する仕組みは理解できました。

しかし実際のネットワークでは、 すべての通信を無条件で通したいわけではありません。

PERMIT 192.168.10.0/24 → Web
DENY Guest Network → Server
「この送信元IPは許可する」
「この宛先への通信は拒否する」
といった制御は、どうやって実現するのでしょうか?

そこで登場するのが、 次の記事で学習する ACL(Access Control List) です。

まとめ

01

NATは IPアドレスを別のIPアドレスへ変換する仕組み

02

Private IPをGlobal IPへ変換することで、 内部NetworkからInternetへ通信する構成で利用される

03

NAPTは IPアドレスとPort番号を利用して複数通信を識別 する

04

NATテーブルに変換情報を保持することで、 戻り通信を元の内部端末へ対応付けられる

05

NATはアドレス変換であり、 通信のPermit / Denyを行うACLとは役割が異なる

NEXT LESSON

次は「ACLとは?通信を許可・拒否する仕組み」を学びましょう

NAT・NAPTでは、 IP AddressやPort番号を変換して 内部と外部の通信を成立させる仕組みを学びました。

次は、 送信元IP・宛先IP・Protocol・Port番号などを条件にして、 通信をPermitまたはDenyする ACLを学習します。

RouterやL3 Switchで 「どの通信を通し、どの通信を止めるか」 を考えるための重要な仕組みです。

ACLとは?通信を許可・拒否する仕組み
NETWORK INTERMEDIATE

ネットワーク中級講座の一覧へ戻る

学習順を確認したい場合は、 ネットワーク中級講座の一覧ページへ戻れます。

← ネットワーク中級講座へ戻る
目次