前の記事までで、 ルーターがルーティングテーブルを利用して 異なるIPネットワークへパケットを転送する仕組み を学びました。
では、社内PCからInternet上のWebサーバーへ通信するケースを考えてみましょう。
PC-Aが利用している
192.168.10.10は、
Private IP Addressです。
どうやってInternet上のサーバーと通信しているのでしょうか?
そこで利用される代表的な仕組みが NATと NAPTです。
NATという単語を覚えるだけではなく、 「Private IPをGlobal IPへ変換し、 NAPTではさらにPort番号を利用して複数端末の通信を識別する」 仕組みを説明できる状態を目指します。
まずPrivate IPとGlobal IPを整理しよう
NATを理解するためには、 まずPrivate IP AddressとGlobal IP Addressの違いを整理する必要があります。
192.168.10.10
Internet上でそのままグローバルに ルーティングされるためのアドレスではありません。
203.0.113.10
Internet側との通信で 外部から識別されるIPアドレスです。
代表的なPrivate IPv4アドレス範囲には、 次のものがあります。
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
たとえば多くの家庭や企業で
192.168.1.10のような同じPrivate IPを利用できます。
Internetとの境界ではNATなどを利用して
Global IPとの対応付けを行います。
NATとは?
NATは Network Address Translation の略です。
名前の通り、 IPアドレスを別のIPアドレスへ変換する仕組み です。
たとえば、
内部PCの送信元IPアドレス
192.168.10.10
を、
Internet側では
203.0.113.10
として扱うように変換できます。
NAT前後でIPヘッダーはどう変わる?
PC-AからInternet上のWebサーバー
198.51.100.20
へ通信するとします。
この例では、 送信元IPアドレス が変換されています。
Routingは 「どこへ転送するか」 を決める仕組みです。 NATは 「IPアドレスをどう変換するか」 を扱います。
1つのGlobal IPを複数PCで使いたい場合は?
ここで次のような家庭や企業Networkを考えます。
192.168.10.10
192.168.10.20
192.168.10.30
203.0.113.10
Global IP Addressが1つしかない場合、 3台すべてを単純な 「1 Private IP ↔ 1 Global IP」 として対応させることはできません。
複数の内部端末で共有するにはどうするのでしょうか?
そこで登場するのが NAPTです。
NAPTとは?
NAPTは Network Address Port Translation の略です。
IPアドレスだけでなく Port番号も利用して通信を識別・変換 します。
192.168.10.10:50001
192.168.10.20:50001
192.168.10.30:50001
40001 / 40002 / 40003
たとえば、 次のような変換を行えます。
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は どの内部端末の通信なのか区別 できます。
PATという言葉もある
NAPTとほぼ同じ文脈で、 PAT(Port Address Translation) という言葉を見ることもあります。
Ciscoなどでは、 複数の内部端末を1つまたは少数のGlobal IPへ Port番号を利用して変換する方式を PAT / NAT Overload と呼ぶことがあります。
NAT・NAPT・PATは教材やベンダーによって 表現が少し異なることがあります。 重要なのは Port番号を使うことで1つのGlobal IPを複数通信で共有できる という仕組みです。
NATテーブルは何を記録している?
NAPTを行うRouterは、 変換内容を覚えておく必要があります。
その対応関係を保持する情報を、 ここでは分かりやすく NATテーブル として考えます。
192.168.10.10:50001
203.0.113.10:40001
198.51.100.20:443
192.168.10.20:51000
203.0.113.10:40002
198.51.100.30:443
これにより、 Internetから戻ってきた通信を どの内部端末へ戻すべきか判断できます。
戻り通信はどうやって元のPCへ届く?
PC-Aの通信が、 次のように変換されたとします。
Webサーバーからの応答は、
としてRouterへ戻ってきます。
RouterはNATテーブルを確認します。
203.0.113.10:40001
192.168.10.10:50001
こうして、 応答を元のPC-Aへ戻すことができます。
NAPT通信を最初から整理しよう
Static NATとは?
NATには、 内部IPと外部IPを 固定的に1対1で対応付ける 方法もあります。
このような固定的な対応付けを Static NAT として利用する場合があります。
外部から内部サーバーへアクセスさせる構成などで、 固定的な変換が必要な場合に使われます。
ポートフォワーディングとの関係
家庭用Routerなどでは、 ポートフォワーディング という設定を見ることがあります。
たとえば、
203.0.113.10:443
192.168.10.100:443
のように、 特定の外部Portへの通信を 内部サーバーへ転送する設定です。
これもNAT/NAPTと関連する代表的な機能です。
NATを使えば通信制御もできる?
ここで注意したいのが、 NATと通信制御は別の役割 という点です。
IPアドレスやPort番号を 変換・対応付けする。
条件に応じて 通信を許可・拒否する。
NATを利用した結果として外部から直接通信しにくくなる場合はありますが、 通信を条件によって明示的に許可・拒否する仕組みとは別 に考えることが重要です。
ここで実際に試してみよう:NAPT変換シミュレーター
PC-A・PC-B・PC-CからInternetへアクセスし、 NATテーブルがどのように増えていくか確認してみましょう。
NAPT Translation Simulator
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から次の通信が返ってきました。
Routerはどの端末へ戻すでしょうか?
Global側のPort番号とNATテーブルを照合してみましょう。
NAT・NAPTのトラブルシューティングでは何を見る?
内部通信に対する変換エントリが 正しく作成されているか確認します。
NAT対象となる内部側・外部側インターフェースや 条件を確認します。
NATだけでなく、 Internet側・内部側へのRouteが 存在することも重要です。
確認問題:NAT・NAPTを理解できたか確認しよう
NATの代表的な役割として正しいものはどれですか?
NATはNetwork Address Translationの略で、 IPアドレスを変換する仕組みです。
1つのGlobal IP Addressを複数PCで共有する際、 通信を区別するためにNAPTが利用する代表的な情報はどれですか?
NAPTはIPアドレスに加えてPort番号を利用し、 複数の通信を識別して1つのGlobal IPへ多重化できます。
NATとACLの説明として正しいものはどれですか?
NATとACLは役割が異なります。 NATはアドレス変換、 ACLは条件に応じた通信の許可・拒否を行います。
3問に挑戦してみましょう。
IPを変換しただけでは「誰を通すか」は決められない
NAT・NAPTによって、 Private IPを利用する内部端末が Internetと通信する仕組みは理解できました。
しかし実際のネットワークでは、 すべての通信を無条件で通したいわけではありません。
「この宛先への通信は拒否する」
といった制御は、どうやって実現するのでしょうか?
そこで登場するのが、 次の記事で学習する ACL(Access Control List) です。
まとめ
NATは IPアドレスを別のIPアドレスへ変換する仕組み
Private IPをGlobal IPへ変換することで、 内部NetworkからInternetへ通信する構成で利用される
NAPTは IPアドレスとPort番号を利用して複数通信を識別 する
NATテーブルに変換情報を保持することで、 戻り通信を元の内部端末へ対応付けられる
NATはアドレス変換であり、 通信のPermit / Denyを行うACLとは役割が異なる
次は「ACLとは?通信を許可・拒否する仕組み」を学びましょう
NAT・NAPTでは、 IP AddressやPort番号を変換して 内部と外部の通信を成立させる仕組みを学びました。
次は、 送信元IP・宛先IP・Protocol・Port番号などを条件にして、 通信をPermitまたはDenyする ACLを学習します。
RouterやL3 Switchで 「どの通信を通し、どの通信を止めるか」 を考えるための重要な仕組みです。
ACLとは?通信を許可・拒否する仕組み →
