NAT設定

NATには以下の3つの種類があります。

それぞれを順に検証します。
利用する環境は、こちらで紹介したスタティックルート設定が完了しているルータです。
R1にNATを設定し、R1のLoopbackインターフェースのIPを送信元として、R2のIPへPINGを実行。そのNAT変換を確認します。

検証環境について、アクセスリスト検証DHCP検証で変更した場合は、その設定は消しておきます。各リンクの末尾の「設定を元に戻す」を参照してください。

ここで、R1とR2の環境を整理しておきます。
R1とR2は、GigabitEthernet1同士、192.168.1.0/24のネットワークで直接接続されています。
R1のIPは192.168.1.101です。R2のIPは192.168.1.102です。
R1のLoopback0には172.16.1.1も設定されています。

なお、CSR 1000Vでは、NATの詳細動作を確認するdebugコマンド「debug ip nat」等は動きませんでした。それらしきコマンドはありますが、なぜ動作しないかは不明です(どなたか教えてください)。ここでは、NAT変換までを確認します。

送信元IPを指定した拡張PING

以下のように、R1のLoopbackインターフェースのIPを送信元として、R2のIPへPINGを実行できることを確認しておきます。拡張PINGを利用します。

R1#ping 「ENTER」← 宛先IPを指定せず、pingだけを実行すると拡張PINGが利用できます。
Protocol [ip]:「ENTER」← そのままEnterのみ。
Target IP address: 192.168.1.102「ENTER」← 宛先IPを指定します。今回はR2のIPです。
Repeat count [5]:「ENTER」← そのままEnterのみ。
Datagram size [100]:「ENTER」← そのままEnterのみ。
Timeout in seconds [2]:「ENTER」← そのままEnterのみ。
Extended commands [n]: y「ENTER」← yを入力します。これにより送信元IPも指定できます。
Source address or interface: 172.16.1.1「ENTER」← 送信元IPを指定します。今回はR1のLoopbackです。
Type of service [0]:「ENTER」← そのままEnterのみ。
Set DF bit in IP header? [no]:「ENTER」← そのままEnterのみ。
Validate reply data? [no]:「ENTER」← そのままEnterのみ。
Data pattern [0xABCD]:「ENTER」← そのままEnterのみ。
Loose, Strict, Record, Timestamp, Verbose[none]:「ENTER」← そのままEnterのみ。
Sweep range of sizes [n]:「ENTER」← そのままEnterのみ。次からが実行結果です。

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.102, timeout is 2 seconds:
Packet sent with a source address of 172.16.1.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/4 ms

4行目のPING成功を表す「!!!!!」を確認します。

スタティックNAT

R1にスタティックNATを設定します。送信元IPを172.16.1.1から192.168.1.200へ1対1で変換します。
R1# conf t 「ENTER」
R1(config)#ip nat inside source static 172.16.1.1 192.168.1.200「ENTER」← スタティックNAT設定
R1(config)#interface Loopback0「ENTER」
R1(config-if)#ip nat inside「ENTER」← Loopback0インターフェースを内部ローカルに指定。
R1(config-if)#interface GigabitEthernet1「ENTER」
R1(config-if)#ip nat outside「ENTER」← GigabitEthernet1インターフェースを外部ローカルに指定。
R1(config-if)#end「ENTER」
R1#wr「ENTER」← 設定保存。

設定直後に一旦、「show ip nat translations」でNAT変換表を確認します。

R1#show ip nat translations「ENTER」← 次の行から実行結果です。

Pro  Inside global         Inside local          Outside local         Outside global
---  192.168.1.200         172.16.1.1            ---                   ---
Total number of translations: 1

「show ip nat translations」は、罫線のない表のように出力します。
1行目は左から「Pro」「Inside global」「Inside local」「Outside local」「Outside global」の5項目です。
2行目の5項目に対応する出力は左から「—」「192.168.1.200」「172.16.1.1」「—」「—」となります。よって、Inside global(内部グローバル)は192.168.1.200、Inside local(内部ローカル)は172.16.1.1です。1対1のNAT変換が準備されていることがわかります。

送信元をR1のLoopbackのIPにし、R2へPINGします。コマンドは、上の拡張PINGと同じです。
成功を確認後、「show ip nat translations」でNAT変換を確認します。
R1#show ip nat translations「ENTER」← 次の行から実行結果です。

Pro  Inside global         Inside local          Outside local         Outside global
---  192.168.1.200         172.16.1.1            ---                   ---
icmp 192.168.1.200:1       172.16.1.1:1          192.168.1.102:1       192.168.1.102:1
Total number of translations: 2

出力の3行目が増えました。
プロトコルがICMP、172.16.1.1と192.168.1.200がNAT変換し、宛先が192.168.1.102とわかります。

再度、同様に送信元をR1のLoopbackのIPにし、R2へPINGします。1回目のあとすぐに2回目を実行した場合は、NAT変換テーブルが以下のように増えたことを確認できます。
R1#show ip nat translations「ENTER」← 次の行から実行結果です。

Pro  Inside global         Inside local          Outside local         Outside global
---  192.168.1.200         172.16.1.1            ---                   ---
icmp 192.168.1.200:1       172.16.1.1:1          192.168.1.102:1       192.168.1.102:1
icmp 192.168.1.200:2       172.16.1.1:2          192.168.1.102:2       192.168.1.102:2
Total number of translations: 3

次の検証のため、スタティックNATの設定は検証前に戻します。以下のように行頭にnoを追加したコマンドで設定を消すことができます。

R1# conf t 「ENTER」
R1(config)#no ip nat inside source static 172.16.1.1 192.168.1.200「ENTER」← NAT設定を消去。
R1(config)#interface Loopback0「ENTER」
R1(config-if)#no ip nat inside「ENTER」← Loopback0にて、内部ローカル指定を消去。
R1(config-if)#interface GigabitEthernet1「ENTER」
R1(config-if)#no ip nat outside「ENTER」← GigabitEthernet1にて、外部ローカル指定を消去。
R1(config-if)#end「ENTER」
R1#wr「ENTER」← 設定保存。

ダイナミックNAT

R1にダイナミックNATを設定します。172.16.1.0/24のセグメントを送信元とするIPを192.168.1.50から192.168.1.60の範囲へ動的にNAT変換します。
R1# conf t 「ENTER」
R1(config)#ip nat pool TEST 192.168.1.50 192.168.1.60 netmask 255.255.255.0「ENTER」← プールTESTを定義。範囲は、192.168.1.50から192.168.1.60。
R1(config)#access-list 5 permit 172.16.1.0 0.0.0.255「ENTER」← アクセスリスト5を定義。
R1(config)#ip nat inside source list 5 pool TEST「ENTER」← アクセスリスト5を送信元にし、プールTESTへNAT変換。
R1(config)#interface Loopback0「ENTER」
R1(config-if)#ip nat inside「ENTER」← Loopback0インターフェースを内部ローカルに指定。
R1(config-if)#interface GigabitEthernet1「ENTER」
R1(config-if)#ip nat outside「ENTER」← GigabitEthernet1インターフェースを外部ローカルに指定。
R1(config-if)#end「ENTER」
R1#wr「ENTER」← 設定保存。

設定直後に一旦、「show ip nat translations」で実行しておきます。
スタティックNATと異なり、NAT変換表には「Total number of translations: 0」以外、何も出力されないことを確認します。

送信元をR1のLoopbackのIPにし、R2へPINGします。コマンドは、上の拡張PINGと同じです。
成功を確認後、「show ip nat translations」でNAT変換を確認します。
R1#show ip nat translations「ENTER」← 次の行から実行結果です。

Pro  Inside global         Inside local          Outside local         Outside global
---  192.168.1.50          172.16.1.1            ---                   ---
icmp 192.168.1.50:0        172.16.1.1:0          192.168.1.102:0       192.168.1.102:0
Total number of translations: 2

出力の3行目にて、NAT変換の様子がわかります。

次の検証のため、ダイナミックNATの設定は検証前に戻します。以下のように行頭にnoを追加したコマンドで設定を消すことができます。

R1#clear ip nat translation *「ENTER」← 一旦、NAT変換表を消します。
R1# conf t 「ENTER」
R1(config)#no ip nat pool TEST 192.168.1.50 192.168.1.60 netmask 255.255.255.0「ENTER」← NAT設定を消去。
R1(config)#no access-list 5 permit 172.16.1.0 0.0.0.255「ENTER」← アクセスリスト5を消去。
R1(config)#no ip nat inside source list 5 pool TEST「ENTER」← Pool設定を消去。
R1(config)#interface Loopback0「ENTER」
R1(config-if)#no ip nat inside「ENTER」← Loopback0にて、内部ローカル指定を消去。
R1(config-if)#interface GigabitEthernet1「ENTER」
R1(config-if)#no ip nat outside「ENTER」← GigabitEthernet1にて、外部ローカル指定を消去。
R1(config-if)#end「ENTER」
R1#wr「ENTER」← 設定保存。

PAT

PATはポート番号を利用したアドレス変換方式で、NAPTやIPマスカレードなどとも呼ばれます。CiscoではPATと呼ばれることが多いです。
R1にPATを設定します。172.16.1.0/24のセグメントを送信元とするIPをGigabitEthernet1のインターフェースIP(192.168.1.101)にNAT変換します。

R1# conf t 「ENTER」
R1(config)#access-list 7 permit 172.16.1.0 0.0.0.255「ENTER」← アクセスリスト7を定義。
R1(config)#ip nat inside source list 7 interface GigabitEthernet1 overload「ENTER」← アクセスリスト7を送信元にし、GigabitEthernet1 のIPへPAT変換。末尾のoverloadがポイントです。
R1(config)#interface Loopback0「ENTER」
R1(config-if)#ip nat inside「ENTER」← Loopback0インターフェースを内部ローカルに指定。
R1(config-if)#interface GigabitEthernet1「ENTER」
R1(config-if)#ip nat outside「ENTER」← GigabitEthernet1インターフェースを外部ローカルに指定。
R1(config-if)#end「ENTER」
R1#wr「ENTER」← 設定保存。

送信元をR1のLoopbackのIPにし、R2へPINGします。コマンドは、上の拡張PINGと同じです。
成功を確認後、「show ip nat translations」でNAT変換を確認します。
R1#show ip nat translations「ENTER」← 次の行から実行結果です。

Pro  Inside global         Inside local          Outside local         Outside global
icmp 192.168.1.101:1       172.16.1.1:3          192.168.1.102:3       192.168.1.102:1
Total number of translations: 1

出力の2行目にて、PAT変換の様子がわかります。

設定を元に戻す場合は、以下のように行頭にnoを追加したコマンドで設定を消すことができます。

R1# conf t 「ENTER」
R1(config)#no access-list 7 permit 172.16.1.0 0.0.0.255「ENTER」← アクセスリストを消去。
R1(config)#no ip nat inside source list 7 interface GigabitEthernet1 overload「ENTER」← NAT設定を消去。
R1(config)#interface Loopback0「ENTER」
R1(config-if)#no ip nat inside「ENTER」← Loopback0にて、内部ローカル指定を消去。
R1(config-if)#interface GigabitEthernet1「ENTER」
R1(config-if)#no ip nat outside「ENTER」← GigabitEthernet1にて、外部ローカル指定を消去。
R1(config-if)#end「ENTER」
R1#wr「ENTER」← 設定保存。

(ここがページの最後です。更新日:2018年6月13日)