ダイナミックNAT
・ダイナミックNATの設定をする
・RouterAで,10.1.1.1〜3のアドレスが192.168.1.1〜3に変換されていることを確認する
ネットワーク構成(画像を別ウインドウで表示)
RouterAのコンフィグ
!
version 12.2
no service single-slot-reload-enable
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname RouterA
!
interface Ethernet0
ip address 10.1.1.1 255.255.255.0 secondary ←ping送出用のセカンダリ・アドレスを作る
ip address 10.1.1.2 255.255.255.0 secondary ←同上
ip address 10.1.1.3 255.255.255.0 secondary ←同上

ip address 10.1.1.4 255.255.255.0
ip nat inside ←NATの内側インタフェースに指定する
!
interface Serial0
ip address 192.168.1.4 255.255.255.0
ip nat outside ←NATの外側インタフェースに指定する
clockrate 500000
!
ip nat pool globalpool 192.168.1.1 192.168.1.3 netmask 255.255.255.0 ←アドレス変換用のアドレスをglobalpoolという名前でプールする
ip nat inside source list 1 pool globalpool ←内側(LAN側)の送信元アドレスがアクセス・リスト1番(10.1.1.1〜3)だったら,globalpool(192.168.1.1〜3)に変換
ip classless
ip route 192.168.2.0 255.255.255.0 192.168.1.5
ip http server
!
access-list 1 permit 10.1.1.1 ←変換対象となるアドレスをアクセス・リスト1番として指定
access-list 1 permit 10.1.1.2 ←同上
access-list 1 permit 10.1.1.3 ←同上
!
line con 0
transport input none
line aux 0
line vty 0 4
login
!
end
RouterBのコンフィグ
!
version 12.2
no service single-slot-reload-enable
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname RouterB
!
interface Ethernet0
ip address 192.168.2.2 255.255.255.0
!
interface Serial0
ip address 192.168.1.5 255.255.255.0
no fair-queue
!
line con 0
transport input none
line aux 0
line vty 0 4
login
!
end
確認
変換するIPアドレスを手動で対応付ける「静的アドレス変換」に対して,変換するIPアドレスをルーターが自動的に対応付けてくれる「ダイナミック変換」があります
変換用にプールしたIPアドレスの中から,利用中でないものを自動的に使ってくれます。

今回は,変換用に192.168.1.1〜3の3個のアドレスをプールしました。
変換対象となるアドレスは10.1.1.1〜3で,これは,RouterAのEthernet0に作ったセカンダリ・アドレスを使います。
こうやってセカンダリ・アドレスを使うと,パソコンを何台も用意しなくてもいいので便利です。

また,今回はアドレス変換の対象となるアドレスを,

access-list 1 permit 10.1.1.1
access-list 1 permit 10.1.1.2
access-list 1 permit 10.1.1.3


と指定しましたが,これは,ワイルドカード・マスクを使って

access-list 1 permit 10.1.1.0 0.0.0.255

とやってもできます。

では,ダイナミックNATの検証を始めましょう。
RouterAでNATのデバックをオンにします。

RouterA#debug ip nat
IP NAT debugging is on


オンになりました。
ここで,送信元のIPアドレスを指定してpingを192.168.2.1に打ちます。
pingコマンドを使います。

RouterA#ping ←pingとだけ入力する
Protocol [ip]:
Target IP address: 192.168.2.1←あて先アドレスを入力する
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]: y ←yを入力すると送信元アドレスを指定できるようになる
Source address or interface: 10.1.1.1 ←送信元アドレスを指定する
Type of service [0]:
Set DF bit in IP header? [no]:
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.2.1, timeout is 2 seconds:
!!!!! ←ping成功
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/16/16 ms


これでpingが送信されました。
すると,NATのデバッグがオンになっているので,以下のような表示が出ます。

00:25:57: NAT: s=10.1.1.1->192.168.1.1, d=192.168.2.1 [25]
00:25:57: NAT*: s=192.168.2.1, d=192.168.1.1->10.1.1.1 [608]
00:25:57: NAT: s=10.1.1.1->192.168.1.1, d=192.168.2.1 [26]
00:25:57: NAT*: s=192.168.2.1, d=192.168.1.1->10.1.1.1 [609]
00:25:57: NAT: s=10.1.1.1->192.168.1.1, d=192.168.2.1 [27]
00:25:58: NAT*: s=192.168.2.1, d=192.168.1.1->10.1.1.1 [610]
00:25:58: NAT: s=10.1.1.1->192.168.1.1, d=192.168.2.1 [28]
00:25:58: NAT*: s=192.168.2.1, d=192.168.1.1->10.1.1.1 [611]
00:25:58: NAT: s=10.1.1.1->192.168.1.1, d=192.168.2.1 [29]
00:25:58: NAT*: s=192.168.2.1, d=192.168.1.1->10.1.1.1 [612]

pingの送受信を5回ずつやっています。
送信元アドレス(S=x.x.x.xの部分)が,10.1.1.1から192.168.1.1に変換されているのがわかります。

同じように,10.1.1.2と10.1.1.3を送信元にして,192.168.2.1にpingを送信してみます。
10.1.1.2から送信すると,

00:27:03: NAT: s=10.1.1.2->192.168.1.2, d=192.168.2.1 [30]
00:27:03: NAT*: s=192.168.2.1, d=192.168.1.2->10.1.1.2 [613]


と表示されます。
送信元アドレスが,10.1.1.2から192.168.1.2に変換されました。

10.1.1.3から送信すると,

00:27:52: NAT: s=10.1.1.3->192.168.1.3, d=192.168.2.1 [35]
00:27:52: NAT*: s=192.168.2.1, d=192.168.1.3->10.1.1.3 [619]


と表示されます。
送信元アドレスが,10.1.1.3から192.168.1.3に変換されました。

ここで,RouterAのNATテーブルを見てみましょう。

RouterA#show ip nat translations
Pro Inside global Inside local Outside local Outside global
--- 192.168.1.1 10.1.1.1   ---        ---
--- 192.168.1.2 10.1.1.2   ---        ---
--- 192.168.1.3 10.1.1.3   ---        ---


10.1.1.1が192.168.1.1に,10.1.1.2が192.168.1.2に,10.1.1.3が192.168.1.3に対応付けられているのがわかります。

show ip nat translationsコマンドにverboseオプションをつけると,エントリの作成時間,経過時間,消去までの残り時間などがわかります。

RouterA#show ip nat translations verbose
Pro Inside global Inside local Outside local Outside global
--- 192.168.1.1 10.1.1.1    ---       ---
create 00:01:41, use 00:01:41, left 23:58:18,
flags:
none, use_count: 0
--- 192.168.1.2 10.1.1.2    ---       ---
create 00:01:17, use 00:01:17, left 23:58:42,
flags:
none, use_count: 0
--- 192.168.1.3 10.1.1.3    ---       ---
create 00:00:06, use 00:00:06, left 23:59:53,
flags:
none, use_count: 0


left(赤字の部分)がエントリが消えるまでの時間です。
ダイナミックNATでは,デフォルトでエントリの保持時間が24時間と,とても長くなっています。
エントリが消えるまでの時間を1分(60秒)に変更するには,

RouterA(config)#ip nat translation timeout 60

と入力します。
NATテーブルのエントリを消去するには,以下のコマンドを入力します。

RouterA#clear ip nat translation *

再び10.1.1.1から192.168.2.1へpingを送信した後に,NATテーブルを見てみましょう。

RouterA#show ip nat translations verbose
Pro Inside global Inside local Outside local Outside global
--- 192.168.1.1 10.1.1.1    ---       ---
create 00:00:08, use 00:00:08, left 00:00:51,
flags:
none, use_count: 0

このエントリは,残り51秒で消去されると表示されました。
LAN上にユーザーが多いときは,この方がプールした3個のアドレスを有効に使い回せるので,よさそうです。


NATラボ
スタティックNAT
ダイナミックNAT
PAT(IPマスカレード)
重複アドレスの変換
あて先アドレスの分散変換