7/20に7回目の記事「OSI参照モデルを紐解いていこう ー第3層(ネットワーク層) ②ルーティング」が掲載されました。
thinkit.co.jp
それ以前の記事です。上から順に1回目~5回目です。
thinkit.co.jp
thinkit.co.jp
thinkit.co.jp
thinkit.co.jp
thinkit.co.jp
thinkit.co.jp
7/20に7回目の記事「OSI参照モデルを紐解いていこう ー第3層(ネットワーク層) ②ルーティング」が掲載されました。
thinkit.co.jp
それ以前の記事です。上から順に1回目~5回目です。
thinkit.co.jp
thinkit.co.jp
thinkit.co.jp
thinkit.co.jp
thinkit.co.jp
thinkit.co.jp
NAT(Network Address Translation)とは、そのスペルが意味するように、ネットワークアドレスの変換です。
NATなんて使うときあるのですか?
例えば、2つの部署をくっつけて、一つのネットワークにしたとします。どちらも192.168.1.0/24のネットワークです。IPアドレスの重複は正常な通信ができません。かといって、プリンタやらサーバやらで、いまさらIPアドレスを変更するのは大がかりとします。そのときに、アドレスを変換して通信すればいいのです。
Question:では、この場合、どのようなNATの設定をすればいいでしょうか。 |
↓
↓
↓
↓
↓
Answer. 1つの方法ですが、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します。
送信元NATと宛先NATのどちらかで言うと、
R1のNAT設定において、ネットワーク①からネットワーク②に向かう通信においては送信元NAT、ネットワーク②からネットワーク①に向かう通信においては宛先NATを実施します。
上記とIPアドレスが変わってしまっていますが、設定例を紹介します。
❶構成とNATテーブル
インターネットPC ⇒ ルータ ⇒ PC(やサーバなど)が複数
203.0.113.2 203.0.113.1 192.168.1.2
192.168.1.1
【NATテーブル】
変換前IPアドレス | 変換後IPアドレス |
---|---|
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
・パケットのヘッダには送信元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の事例をもう一つ紹介します。これはよくある事例かと思います。 DMZの公開サーバですが、公開しているので、当然グローバルIPアドレスが必要です。しかし、サーバ自体にはプライベートIPアドレスを割り当て、NATすることがよくあります。
そんなことをする意味はあるのですか?
そのままグローバルIPアドレスを使えばいいと思います。
DMZには予備サーバや試験環境など複数の機器が接続されている場合があります。グローバルIPアドレスは有限なので、それらすべてにグローバルIPアドレスを割り当てることは難しいケースがあります。また、サーバをDCに移設した場合に、グローバルIPアドレスが変わった場合にも便利です。サーバの設定変更は必要がなく、NAT変換だけですみます。
ここでは、以下のシンプルな仮想環境でNATの様子を確認ください。
(仮想)インターネットからは1.1.1.1のグローバルIPアドレスに通信をしているつもりですが、実際にはFWでNATされて、172.16.1.1に通信をしています。
NATテーブルとしては、単純ですが、以下のようになっています。
【NATテーブル】
変換前IPアドレス | 変換後IPアドレス |
---|---|
1.1.1.1 | 172.16.1.1 |
また、NAT前のパケットと、NAT後のパケットを以下に記載します。同じシーケンスNOですが、宛先IPアドレスだけが変換されています。
▼NAT変換前
▼NAT変換後
・IPマスカレードと同じこと。正しくはNAPT。製品によっては、NAT+と表現するものもあるようだ。
・情報処理試験では、古くはIPマスカレードという表現を用いていたが、ここ最近ではNAPTである。答案に書くときは、「IPマスカレード」という表現を使わず、必ずNAPTと書くべきである。
・ネットワークスペシャリスト試験の過去問(H19NW午前 問36)では、NAPTに関して次の記述がある。
TCP、UDPのポート番号を識別し、プライベートIPアドレスとグローバルIPアドレスとの対応関係を管理することによって、プライベートIPアドレスを使用するLANの複数の端末が、一つのグローバルIPアドレスを共有してインターネットにアクセスする仕組み。 |
・NAPTは、セキュリティ面の効果もある。H21春AP問9では、NAPTに関して、「グローバルIPアドレス数の不足を解消するとともに、社内LAN上にある機器のアドレス情報を隠ぺいするという効果も実現している。」と述べられている。
・製品の実装次第ではあるが、ポート番号は重複が無い限り、ポート番号の変換(Port Translation)はしません。
たとえば、以下
■複数の送信元IPアドレスから、異なる送信元ポートで通信した場合(一般的にはこっちになる) ※宛先IPアドレスと宛先ポート番号は恐らく重複する
変換前 | 変換後 | ||
---|---|---|---|
送信元IPアドレス | 送信元ポート番号 | 変換後IPアドレス | 変換後ポート番号 |
192.168.1.101 | 10001 | 203.0.113.1 | 10001 |
192.168.1.102 | 25002 | 203.0.113.1 | 25002 |
■複数の送信元IPアドレスから、(偶然にも)同じポートで通信した場合
変換前 | 変換後 | ||
---|---|---|---|
送信元IPアドレス | 送信元ポート番号 | 変換後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
※設定はもう少し簡略化できるはず。
見てみましょう。
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対多)。また、ポート番号は保持していますが、実際には変わっていませんね。
NATとNAPTの違いですが、一般的には次のように言われることでしょう。
NATは1対1のアドレス変換。NAPTは1対多のアドレス変換。
具体的には、NAPTの場合、複数のプライベートIPアドレスを1つのグローバルIPアドレスに変換します。
NATとNAPTの違いですが,何となく理解できません。
NATとNAPTの違いは,NATテーブルとNAPTテーブルを書いてみるとよくわかる。
①NATテーブル
変換前 | 変換後 |
---|---|
200.1.1.1 | 192.168.1.100 |
②NAPTテーブル
変換前 | 変換後 | ||
---|---|---|---|
200.1.1.1 | 2000 | 192.168.1.100 | 1001 |
200.1.1.1 | 2001 | 192.168.1.200 | 1002 |
このように,NATテーブルはIPアドレスのみの変換テーブルを持ちます。NAT(Network Address Translation)という言葉の通りです。一方,NAPTテーブルは、NAPT(Network Address Port Translation)として名前に「Port」が入っているように、IPアドレスとポート番号の変換テーブルを持ちます。※ただ、実際のNATテーブルはどちらも同じだ。
では、ネットワークスペシャリスト試験の過去問を見てみよう。
ダイヤルアップルータやブロードバンドルータが、IPマスカレード機能を実現するために管理している情報はどれか。 ア IPアドレスと、ネットワークインターフェースカード固有のMACアドレスの対応 イ 一定時間内にアクセスしたURLとそのページの内容 ウ プライベートIPアドレス及びそのポート番号と、グローバルIPアドレス及びそのポート番号の対応 エ ホスト名とISPへ接続するたびに変わるグローバルIPアドレスの対応 (H16NW午前問25 IPマスカレード) |
↓
↓
↓
↓
↓
正解はウ