ネットワークスペシャリスト - SE娘の剣 -

ネットワークスペシャリストの試験対策サイトです。ネットワークスペシャリスト試験の合格体験談、合格のコツ、過去問解説、
基礎知識などの情報を掲載します。試験対策セミナー・研修も行っております。 ネットワークスペシャリスト試験対策なら
左門至峰の最も詳しい過去問解説「ネスペ」シリーズ(技術評論社)で!!

カテゴリ:8.ネットワーク層(L3) > 8.2 NAT

NAT(Network Address Translation)とは、そのスペルが意味するように、ネットワークアドレスの変換です。

2 

NATなんて使うときあるのですか?
例えば、2つの部署をくっつけて、一つのネットワークにしたとします。どちらも192.168.1.0/24のネットワークです。IPアドレスの重複は正常な通信ができません。かといって、プリンタやらサーバやらで、いまさらIPアドレスを変更するのは大がかりとします。そのときに、アドレスを変換して通信すればいいのです。
nat1
そこで、R1とR1を接続して一つのネットワークのする際に、お互い相手からは、違うアドレスに見せます。
 ネットワーク,172.16.1.0/24
 ネットワーク△172.16.2.0/24
そのために、ルータR1では、172.16.1.0/24を192.168.1.0/24にNATし、ルータR2でも172.16.2.0/24を192.168.1.0/24のネットワークにNATします。
nat2

■NATを設定してみた!
【構成】
インターネットPC ⇒ ルータ  ⇒ PC(やサーバなど)が複数
203.0.113.2     203.0.113.1    192.168.1.2
            192.168.1.1
【NATテーブル】
192.168.1.2⇔10.1.1.2
192.168.1.3⇔10.1.1.3

こうすることで、192.168.1.0のネットワークを、外部からは10.1.1.0/24のネットワークに見せることができる。公開サーバのときは、10.1.1.0の部分が割り当てられたグローバルになるのであろう。

■Config@1841
ポイントとなるConfigを記載します。

interface FastEthernet0/0
 ip address 192.168.1.1 255.255.255.0
 ip nat inside

interface FastEthernet0/1
 ip address 203.0.113.1 255.255.255.0
 ip nat outside

ip nat inside source static 192.168.1.2 10.1.1.2
ip nat inside source static 192.168.1.3 10.1.1.3

■NATテーブル
NATはIPだけの情報を持つはずなので、以下になることを期待

Router#show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
--- 10.1.1.2           192.168.1.2        ---                ---
--- 10.1.1.3           192.168.1.3        ---                ---

しかし、実際にはポート番号も保持していた。別に、ポート番号を変換しているわけではないのだが、NATとNAPTの違いが分かりずらいなあと。

Router#show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
tcp 10.1.1.2:50663     192.168.1.2:50663  203.0.113.2:443    203.0.113.2:443
tcp 10.1.1.2:50664     192.168.1.2:50664  203.0.113.2:443    203.0.113.2:443
--- 10.1.1.2           192.168.1.2        ---                ---
tcp 10.1.1.3:52602     192.168.1.3:52602  203.0.113.2:443    203.0.113.2:443
tcp 10.1.1.3:52603     192.168.1.3:52603  203.0.113.2:443    203.0.113.2:443
tcp 10.1.1.3:52604     192.168.1.3:52604  203.0.113.2:443    203.0.113.2:443
tcp 10.1.1.3:52605     192.168.1.3:52605  203.0.113.2:443    203.0.113.2:443
tcp 10.1.1.3:52606     192.168.1.3:52606  203.0.113.2:443    203.0.113.2:443

NATの事例をもう一つ紹介します。これはよくある事例かと思います。 DMZの公開サーバですが、公開しているので、当然グローバルIPアドレスが必要です。しかし、サーバ自体にはプライベートIPアドレスを割り当て、NATすることがよくあります。
4 
  
そんなことをする意味はあるのですか?
そのままグローバルIPアドレスを使えばいいと思います。
DMZには予備サーバや試験環境など複数の機器が接続されている場合があります。グローバルIPアドレスは有限なので、それらすべてにグローバルIPアドレスを割り当てることは難しいケースがあります。また、サーバをDCに移設した場合に、グローバルIPアドレスが変わった場合にも便利です。サーバの設定変更は必要がなく、NAT変換だけですみます。

ここでは、以下のシンプルな仮想環境でNATの様子を確認ください。
3
(仮想)インターネットからは1.1.1.1のグローバルIPアドレスに通信をしているつもりですが、実際にはFWでNATされて、172.16.1.1に通信をしています。 NAT前のパケットと、NAT後のパケットを以下に記載します。同じシーケンスNOですが、宛先IPアドレスだけが変換されています。

NAT変換前
before


NAT変換後
after

・IPマスカレードと同じこと。正しくはNAPT。製品によっては、NAT+と表現するものもあるようだ。
・情報処理試験ではこれまで、IPマスカレードという表現が多かったが、ここ最近ではNAPTに変化している。答案に書くときは、「IPマスカレード」という表現を使わず、必ずNAPTと書くべきである。

過去問では、NAPTに関して次の記述がある。
TCP、UDPのポート番号を識別し、プライベートIPアドレスとグローバルIPアドレスとの対応関係を管理することによって、プライベートIPアドレスを使用するLANの複数の端末が、一つのグローバルIPアドレスを共有してインターネットにアクセスする仕組み。
(H19NW午前 問36より)

・NAPTテーブルを書いてみると理解が深まると思う。

2011.10.30追記
NAPTは、セキュリティ面の効果もある。H21春AP問9では、NAPTに関して、「グローバルIPアドレス数の不足を解消するとともに、社内LAN上にある機器のアドレス情報を隠ぺいするという効果も実現している。」と述べられている。

実際には、ポート番号は重複が無い限り、ポート番号の変換はしません。
たとえば、以下

■複数の送信元IPアドレスから、異なる送信元ポートで通信した場合(一般的にはこっちになる) ※宛先IPアドレスと宛先ポート番号は恐らく重複する
192.168.1.101:10001 ⇒203.0.113.1:10001
192.168.1.102:25002 ⇒203.0.113.1:25002

■複数の送信元IPアドレスから、(偶然にも)同じポートで通信した場合
192.168.1.101:10001 ⇒203.0.113.1:10001
192.168.1.102:10001 ⇒203.0.113.1:10002

-----------
では、CiscoルータでNAPTの設定をやってみましょう。

interface FastEthernet1
 ip address 203.0.113.1 255.255.255.0
 ip nat outside

interface GigabitEthernet0
 ip address 192.168.1.1 255.255.255.0
 ip nat inside

ip nat pool patpool 203.0.113.1 203.0.113.1 netmask 255.255.255.0
ip nat inside source list 10 pool patpool overload
access-list 10 permit 192.168.1.0 0.0.0.255
※設定はもう少し簡略化できるはず。

また、NAPTテーブルを見てみましょう。
Router#show  ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
tcp 203.0.113.1:50024  192.168.1.2:50024  203.0.113.2:443    203.0.113.2:443
tcp 203.0.113.1:50025  192.168.1.2:50025  203.0.113.2:443    203.0.113.2:443
・・・
tcp 203.0.113.1:50986  192.168.1.4:50986  203.0.113.2:443    203.0.113.2:443
tcp 203.0.113.1:50991  192.168.1.4:50991  203.0.113.2:443    203.0.113.2:443
・・・

※203.0.113.1という1つのIPアドレスに、192.168.1.2と192.168.1.4の複数のポートが対応していることが分かります(=1対多)。また、ポート番号は保持していますが、実際には変わっていませんね。

・パケットのヘッダには送信元IPアドレスと宛先IPアドレスの2つがあることにともない、NATには、送信元 (Source) NATと宛先 (Destination) NATがある。
過去問(H21NW午後1問3)では、送信元NATを「ソースNAT」という表現で記載している。

・Ciscoのコマンドでの送信元NAT
送信元IPアドレス192.168.1.1を200.1.1.1に変換
(config)#ip nat inside source static 192.168.1.1 200.1.1.1
※insideはIFのどちら側かを差しているので、あまり気にしないでください。

・Ciscoのコマンドでの宛先NAT
(config)#ip nat outside destination static 192.168.1.1 1.1.1.1
※outsideはIFのどちら側かを差しているので、あまり気にしないでください。

NATとNAPTの違いですが、一般的には次のように言われることでしょう。
NATは1対1のアドレス変換。NAPTは1対多のアドレス変換。
具体的には、NAPTの場合、複数のプライベートIPアドレスを1つのグローバルIPアドレスに変換します。
5

NATとNAPTの違いですが,何となく理解できません。
NATとNAPTの違いは,NATテーブルとNAPTテーブルを書いてみるとよくわかる。
NATテーブル
変換前変換後
200.1.1.1192.168.1.100
NAPTテーブル
変換前変換後
200.1.1.12000192.168.1.1001001
200.1.1.12001192.168.1.2001002
このように,NATテーブルはIPアドレスのみの変換テーブルを持ちます。NAT(Network Address Translation)という言葉の通りです。一方,NAPTテーブルは、NAPT(Network Address Port Translation)として名前に「Port」が入っているように、IPアドレスとポート番号の変換テーブルを持ちます。

では、過去問を見てみよう。
ダイヤルアップルータやブロードバンドルータが、IPマスカレード機能を実現するために管理している情報はどれか。

ア IPアドレスと、ネットワークインターフェースカード固有のMACアドレスの対応
イ 一定時間内にアクセスしたURLとそのページの内容
ウ プライベートIPアドレス及びそのポート番号と、グローバルIPアドレス及びそのポート番号の対応
エ ホスト名とISPへ接続するたびに変わるグローバルIPアドレスの対応
(H16NW午前問25 IPマスカレード)
正解はウ

↑このページのトップヘ