【Cisco】NAT 設定テンプレート【静的/動的,NAT/NAPT(PAT)】

ルータ
スポンサーリンク

作業環境

  • Cisco C891FJ-K9
    • バージョン:15.3(3)M5

送信元 NAT

1 対 1 変換(静的 NAT)

ip nat inside source static "<変換前IP>" "<変換後IP>"

interface "<受信インターフェース>"
 ip nat inside

interface "<送信インターフェース>"
 ip nat outside

1 対 1 変換(静的 NAPT)

ip nat inside source static "<tcp | udp>" "<変換前IP>" "<変換前port>" "<変換後IP>" "<変換後port>"

interface "<受信インターフェース>"
 ip nat inside

interface "<送信インターフェース>"
 ip nat outside

多対多変換(動的 NAT)

ip nat pool "<プール名>" "<先頭IP>" "<末尾IP>" netmask "<サブネットマスク>"
#または
ip nat pool "<プール名>" "<先頭IP>" "<末尾IP>" prefix-length "<プレフィックス長>"

access-list "<ACL番号>" permit "<送信元IP>" "<ワイルドカードマスク>"

ip nat inside source list "<ACL番号>" pool "<プール名>"

interface "<受信インターフェース>"
 ip nat inside

interface "<送信インターフェース>"
 ip nat outside

多対多変換(動的 NAPT)

IP プール使用

動的 NAT との差分は、ip nat inside source 設定に overload オプションを付けること。

ip nat pool "<プール名>" "<先頭IP>" "<末尾IP>" netmask "<サブネットマスク>"
#または
ip nat pool "<プール名>" "<先頭IP>" "<末尾IP>" prefix-length "<プレフィックス長>"

access-list "<ACL番号>" permit "<送信元IP>" "<ワイルドカードマスク>"

ip nat inside source list "<ACL番号>" pool "<プール名>" overload

interface "<受信インターフェース>"
 ip nat inside

interface "<送信インターフェース>"
 ip nat outside

source list として指定する ACL には拡張 ACL を指定することも可能ですが、ACL に一度マッチした後は、送信元変換情報のみがダイナミックエントリとして NAT テーブルに記録されます。これは意図しない動作の原因になるため、拡張 ACL の使用は避けることを推奨します。

拡張 ACL を使用した動的 NAPT については後日検証予定。

送信インターフェースの IP に変換

access-list "<ACL番号>" permit "<送信元IP>" "<ワイルドカードマスク>"

ip nat inside source list "<ACL番号>" interface "<送信インターフェース>" overload

interface "<受信インターフェース>"
 ip nat inside

interface "<送信インターフェース>"
 ip nat outside

宛先 NAT

宛先 NAT をしたい場合は、逆方向の送信元 NAT を設定します。

ip nat inside source static "<変換前IP>" "<変換後IP>"

interface "<受信インターフェース>"
 ip nat inside

interface "<送信インターフェース>"
 ip nat outside

※上の図で言うと

  • 変換前IP → yyy.yyy.yyy.yyy
  • 変換後IP → zzz.zzz.zzz.zzz
  • 受信インターフェース → Gi8
  • 送信インターフェース → Fa0

extendable オプション

以下の図のように、各端末からサーバへ通信時に宛先 NAT を使用したい場合、サーバからの通信に対する送信元 NAT を設定します。

ここで、VLAN 別に変換後 IP を変更したい場合、サーバの IP に対して変換後 IP を 2 つ設定することになりますが、このような場合は ip nat inside 設定で extendable オプションを付ける必要があります。extendable オプションを付けずに ip nat inside 設定を 2 つ設定しようとするとエラーになります。

Router(config)#ip nat inside source static 1.2.3.4 10.10.10.1
Router(config)#ip nat inside source static 1.2.3.4 10.10.10.2
% 1.2.3.4 already mapped (1.2.3.4 -> 10.10.10.1)

—————————–

■設定テンプレート

ip nat inside source static yyy.yyy.yyy.yyy z1.z1.z1.z1 extendable
ip nat inside source static yyy.yyy.yyy.yyy z2.z2.z2.z2 extendable

interface "<受信インターフェース>"
 ip nat inside

interface "<送信インターフェース(1)>"
 ip nat outside

interface "<送信インターフェース(2)>"
 ip nat outside

NAT 確認コマンド

  • show ip nat translations
Router#show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
icmp 192.168.100.20:1  172.16.100.10:1    192.168.100.10:1   192.168.100.10:1
--- 192.168.100.20     172.16.100.10      ---                ---

※動的 NAT を設定している場合は、NAT トラフィックが発生しているときのみレコードが表示されます

  • show ip nat statistics
Router#show ip nat statistics
Total active translations: 2 (0 static, 2 dynamic; 1 extended)
Peak translations: 2, occurred 00:00:08 ago
Outside interfaces:
  GigabitEthernet8
Inside interfaces:
  FastEthernet0
Hits: 10  Misses: 0
CEF Translated packets: 10, CEF Punted packets: 0
Expired translations: 0
Dynamic mappings:
-- Inside Source
[Id: 2] access-list 1 pool pool1 refcount 2
 pool pool1: netmask 255.255.255.0
        start 192.168.100.2 end 192.168.100.9
        type generic, total addresses 8, allocated 1 (12%), misses 0

Total doors: 0
Appl doors: 0
Normal doors: 0
Queued Packets: 0

NAT に関する留意点

  • 今回記載した ip nat inside source コマンドの他に、ip nat outside source コマンドによる NAT 設定もある
    • ip nat outside source では、ip nat outside を設定したインターフェースで受信するパケットの送信元 IP アドレスを変換する
  • ip nat inside と設定したインターフェースで受信したパケットについては NAT 変換をする前の宛先 IP アドレスをもとにルーティングが行われる(NAT より前にルーティングされる)ため、場合によってはスタティックルートの設定が必要
    • この影響を受けるのは、ip nat outside source を設定している場合における ip nat inside と設定したインターフェースで受信したパケットのルーティング
  • 双方向 NAT の設定をする場合は、ip nat inside sourceip nat outside source を組み合わせて設定する
  • HSRP を構成しているルータで、かつそのルータの Connect セグメントから変換後 IP を払い出す場合は、redundancy オプションを設定して HSRP グループ名を指定する必要があります
    • redundancy オプションを設定すると Active ルータのみが NAT IP に対する arp 要求に応答するようになります
  • outside nat に関しては、source list や source route-map で拡張 ACL を使用して通信の宛先を指定した NAT/NAPT をしようとしても正常に動作しない。以下リンク参照
Route-mapを用いたNAT Outsideの動作について
下記のようなNATでNAT OutsideからInsideへ通信を行った際に、 意図しないNATが行われてしまう動作を取り上げます。 ip nat outside source route-map TEST pool POOL add-route access-list 100 deny   ip 10.0.0.0 ...

NAT コンフィグ作成を自動化する

NAT コンフィグの作成を自動化できるツールを以下記事で公開しています。

【Cisco】パラメータシート兼コンフィグ出力ツールを作成しました

参考資料

NATの処理順序について
このドキュメントでは、NATで処理される順序トランザクションが、パケットがネットワークの内部または外部を移動する方向に基づいていることを説明します。

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