Cisco機器のNAT設定 | 動的NAT(ダイナミックNAT – Dynamic NAT)

Cisco機器のNAT設定 | 動的NAT(ダイナミックNAT - Dynamic NAT)

Cisco機器での動的NAT(ダイナミックNAT)の概要と設定方法について説明します。

NATの概要については、下記を参照してください。

目次

動的NAT(ダイナミックNAT – Dynamic NAT)とは

動的NAT(ダイナミックNAT)とは、送信元アドレスを特定の範囲内のアドレスに自動的にNATする技術です。

例)
内部PC(192.168.1.1〜3)から通信を行う際に、プール内のアドレス(100.100.1.1〜2)に送信元をNATすることができます。

ダイナミックNATの概要

範囲内のアドレスが全て利用されているときは、NATすることができません。

動的NATの設定方法

上述のネットワーク構成を例に、設定方法を説明します。

ネットワーク構成

Cisco機器で動的NATを利用する場合、以下の手順で設定します。

STEP
インターフェースの設定

IPアドレスの設定、NATのゾーン(inside/outside)の設定を行います。

interface GigabitEthernet0/0
 ip address 192.168.1.254 255.255.255.0
 ip nat inside
 # NAT内部ゾーンとして設定

interface GigabitEthernet0/1
 ip address 200.200.1.254 255.255.255.0
 ip nat outside
 # NAT外部ゾーンとして設定
STEP
アクセスリストの設定(送信元の特定)

NAT変換対象とする送信元IPアドレスを特定するために、アクセスリストを設定します。

access-list 1 permit 192.168.1.0 0.0.0.255
# 送信元:192.168.1.0/24を対象とするアクセスリスト
STEP
NATプールの設定(NAT変換用アドレス範囲の指定)

NAT変換用のアドレス範囲を指定します。

ip nat pool [プール名] [開始アドレス] [終了アドレス] netmask [サブネットマスク]
ip nat pool NAT 100.100.1.1 100.100.1.2 netmask 255.255.255.252
STEP
NATの設定(送信元とNATプールの紐付け)

アクセスリストとNATプールを指定したNATの設定を行います。

ip nat inside source list [アクセスリスト番号] pool [プール名]
ip nat inside source list 1 pool NAT

最終的なコンフィグ は下記の通りです。

interface GigabitEthernet0/0
 ip address 192.168.1.254 255.255.255.0
 ip nat inside

interface GigabitEthernet0/1
 ip address 200.200.1.254 255.255.255.0
 ip nat outside

ip nat pool NAT 100.100.1.1 100.100.1.2 netmask 255.255.255.252
ip nat inside source list 1 pool NAT

access-list 1 permit 192.168.1.0 0.0.0.255

通信確認

PCからサーバーへ通信を行い、NATルーターのステータスやデバッグログ、パケットキャプチャを確認します。

機器ステータス

「show ip nat translations」コマンドで、NATのステータスを確認します。

通信前

Router#show ip nat translations

静的NAT(スタティックNAT)と異なり、通信前は何も表示されません。

PC1からの通信発生時

PC1:~$ ping 200.200.1.1
PING 200.200.1.1 (200.200.1.1): 56 data bytes
64 bytes from 200.200.1.1: seq=0 ttl=63 time=16.161 ms
Router#show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
icmp 100.100.1.1:1264  192.168.1.1:1264   200.200.1.1:1264   200.200.1.1:1264
--- 100.100.1.1        192.168.1.1        ---                ---

PC1のアドレス(192.168.1.1)が、100.100.1.1にNATされていることが確認できます。

PC2からの通信発生時

PC2:~$ ping -c 1 200.200.1.1
PING 200.200.1.1 (200.200.1.1): 56 data bytes
64 bytes from 200.200.1.1: seq=0 ttl=63 time=11.553 ms
Router#show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
icmp 100.100.1.1:1276  192.168.1.1:1276   200.200.1.1:1276   200.200.1.1:1276
--- 100.100.1.1        192.168.1.1        ---                ---
icmp 100.100.1.2:1289  192.168.1.2:1289   200.200.1.1:1289   200.200.1.1:1289
--- 100.100.1.2        192.168.1.2        ---                ---

PC2のアドレス(192.168.1.2)が、100.100.1.2にNATされていることが確認できます。

PC3からの通信発生時

cisco@PC3:~$ ping -c 1 200.200.1.1
PING 200.200.1.1 (200.200.1.1): 56 data bytes

1 packets transmitted, 0 packets received, 100% packet loss
Router#show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
icmp 100.100.1.1:1276  192.168.1.1:1276   200.200.1.1:1276   200.200.1.1:1276
--- 100.100.1.1        192.168.1.1        ---                ---
icmp 100.100.1.2:1289  192.168.1.2:1289   200.200.1.1:1289   200.200.1.1:1289
--- 100.100.1.2        192.168.1.2        ---                ---

PC3のアドレス(192.168.1.3)はNATされず、通信がタイムアウトしていることがわかります。

デバッグログ

「debug ip nat detailed」コマンドで、NATの詳細デバッグを有効にしてログを確認します。

PC1からの通信発生時

11:51:20.436:  NAT: Setting IP alias only flag
11:51:20.436:  mapping pointer available mapping:0
11:51:20.436: NAT*: i: icmp (192.168.1.1, 1291) -> (200.200.1.1, 1291) [9279]
11:51:20.436: NAT*: s=192.168.1.1->100.100.1.1, d=200.200.1.1 [9279]
11:51:20.438: NAT*: o: icmp (200.200.1.1, 1291) -> (100.100.1.1, 1291) [57310]
11:51:20.438: NAT*: s=200.200.1.1, d=100.100.1.1->192.168.1.1 [57310]
11:51:20.443: NAT: add address 100.100.1.1 to ipalias_hash[0]
11:51:20.446: NAT: Inserted alias only entry tableid=0 100.100.1.1

PC2からの通信発生時

11:51:41.835:  NAT: Setting IP alias only flag
11:51:41.835:  mapping pointer available mapping:0
11:51:41.835: NAT*: i: icmp (192.168.1.2, 1305) -> (200.200.1.1, 1305) [33580]
11:51:41.835: NAT*: s=192.168.1.2->100.100.1.2, d=200.200.1.1 [33580]
11:51:41.837: NAT: add address 100.100.1.2 to ipalias_hash[3]
11:51:41.838: NAT: Inserted alias only entry tableid=0 100.100.1.2
11:51:41.839: NAT*: o: icmp (200.200.1.1, 1305) -> (100.100.1.2, 1305) [29824]
11:51:41.839: NAT*: s=200.200.1.1, d=100.100.1.2->192.168.1.2 [29824]

適切にNATされていることが確認できます。

PC3からの通信発生時

11:51:51.130: NAT: failed to allocate address for 192.168.1.3, list/map 1
11:51:51.130:  mapping pointer available mapping:0
11:51:51.130: NAT*: Can't create new inside entry - forced_punt_flags: 0
11:51:51.132: NAT: failed to allocate address for 192.168.1.3, list/map 1
11:51:51.132:  mapping pointer available mapping:0
11:51:51.132: NAT: translation failed (A), dropping packet s=192.168.1.3 d=200.200.1.1

NATエントリーが作成できず、NAT変換が失敗しているため、パケットを破棄(drop)していることが確認できます。

パケットキャプチャ

各PC→サーバーへの通信時

PC1側のキャプチャ

PC1側のキャプチャ

PC2側のキャプチャ

PC2側のキャプチャ

PC3側のキャプチャ

PC3側のキャプチャ

サーバー側のキャプチャ

サーバー側のキャプチャ
  • PC1とPC2のキャプチャでは、サーバーから応答があることが確認できます。
  • PC3のキャプチャでは、サーバーからの応答は無く、NATルーターから「Destination unreachable」が返されていることが確認できます。
  • サーバーのキャプチャでは、PC1とPC2からの通信は適切にNATされていますが、PC3からの通信は届いていないことが確認できます。

以上で、「Cisco機器のNAT設定 | 動的NAT(ダイナミックNAT – Dynamic NAT)」の説明は完了です!

  • URLをコピーしました!
  • URLをコピーしました!
目次