CiscoのNAT設定 Route-map

Cisco Systems - NAT

NAT機能はアドレスやポート番号を置き換える機能ですが、常にNATするのではなく通信内容によってNATを行ったり行なわなかったりしたい場合があります。

例えば、本社と支社の間ではNATを行う必要がないけれども、本社と出張所の間ではNATを行いたい場合があったとします。可能であれば本社のルータを支社接続用と出張所接続用に分けるのがわかりやすくて運用も楽だととは思いますが、規模とか予算とかいろんな都合上一台で済ませたい場合もあったりします。

NAT機能に条件付けを行いたいとか都合の良すぎる要件ですが、access-listと併用することで可能になります。

NATとaccess-listとを関連づけるにはroute-mapを使用します。

簡単な例として、10.1.1.10を10.2.2.110へNATしますが、条件として10.1.1.10から10.2.2.30へ通信する時のみNATが必要で、他への通信時にはNATしたくないという要件であったとします。

Nat route map

ip nat inside source static 10.1.1.10 10.2.2.110 route-map map1

route-map map1 permit 10
 match ip address 110

access-lit 110 permit ip 10.1.1.10 10.2.2.30

うん、ちょっと煩雑な感じが拭えませんが、致し方ありません。

NATコマンドはソース スタティックとしましたが、route-mapの指定を追加しています。このroute-mapのオプションをつけることで、NATの動作条件が決まります。

route-mapコマンドでaccess-listを指定してNATが動作する条件を設定しています。route-mapもaccess-listも多くの条件を指定できるコマンドなので多少複雑なNAT要件であっても設定することが可能です。

R1#show ip nat translations 
Pro Inside global      Inside local       Outside local      Outside global
--- 10.2.2.101         10.1.1.10          ---                ---

R1#show ip aliases 
Address Type             IP Address      Port
Interface                10.1.1.1 
Interface                10.2.2.1 
Dynamic                  10.2.2.101 

スタティックNATですので簡易変換エントリができています。

R1でのNATの動作を確認するためdebug ip natを設定しておきます。

R1#debug ip nat
IP NAT debugging is on

R10からR20へpingを実施してみます。

R10#ping 10.2.2.20
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.2.2.20, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 2/3/6 ms

問題無く通信できました。

R1のNATはというと。

R1#show ip nat tra
R1#show ip nat translations 
Pro Inside global      Inside local       Outside local      Outside global
--- 10.2.2.101         10.1.1.10          ---                ---

特に変化はありません。

ではR10からR30へpingしてみます。

R10#ping 10.2.2.30
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.2.2.30, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/5/7 ms

こちらも問題無く成功。

R1の状況はというと。

R1#
*Aug 31 01:57:15.447: NAT*: s=10.1.1.10->10.2.2.101, d=10.2.2.30 [10]
*Aug 31 01:57:15.448: NAT*: s=10.2.2.30, d=10.2.2.101->10.1.1.10 [10]
*Aug 31 01:57:15.450: NAT*: s=10.1.1.10->10.2.2.101, d=10.2.2.30 [11]
*Aug 31 01:57:15.452: NAT*: s=10.2.2.30, d=10.2.2.101->10.1.1.10 [11]
*Aug 31 01:57:15.454: NAT*: s=10.1.1.10->10.2.2.101, d=10.2.2.30 [12]
*Aug 31 01:57:15.455: NAT*: s=10.2.2.30, d=10.2.2.101->10.1.1.10 [12]
*Aug 31 01:57:15.460: NAT*: s=10.1.1.10->10.2.2.101, d=10.2.2.30 [13]
*Aug 31 01:57:15.462: NAT*: s=10.2.2.30, d=10.2.2.101->10.1.1.10 [13]
*Aug 31 01:57:15.464: NAT*: s=10.1.1.10->10.2.2.101, d=10.2.2.30 [14]
*Aug 31 01:57:15.466: NAT*: s=10.2.2.30, d=10.2.2.101->10.1.1.10 [14]

R1#show ip nat translations 
Pro Inside global      Inside local       Outside local      Outside global
icmp 10.2.2.101:2      10.1.1.10:2        10.2.2.30:2        10.2.2.30:2
--- 10.2.2.101         10.1.1.10          ---                ---

NATが行われていることがわかります。

route-mapとaccess-listを使用することで、複雑なNATを設定できることがわかりました。
ただ、NAT機能そのものはいくつかの制限があるので、どんなに複雑でも定義できるというわけではないのですが、ここでは話題がそれるのでまた別の記事にしたいと思います。

コメント

タイトルとURLをコピーしました