スタティックNAT、PAT、ダイナミックNAT、PAT、Policy-based NAT, PAT

NATとは

NAT(ネットワークアドレス変換)は、ルーター上で動作し、内部ネットワークのプライベートIPアドレスを外部に公開可能なグローバルIPアドレスに変換する技術です。この変換により、外部ネットワークから内部ネットワークを隠すことで、セキュリティを強化する役割も果たします。

NATの主な種類

  1. 静的NAT:
    • 1対1のアドレス変換を行い、特定のローカルIPアドレスとグローバルIPアドレスを固定的にマッピングします。
  2. 動的NAT:
    • ローカルIPアドレスを、登録済みのグローバルIPアドレスのプールから動的に割り当てます。
  3. オーバーロード(PAT: ポートアドレス変換):
    • 複数のローカルIPアドレスを、異なるポート番号を利用して1つのグローバルIPアドレスにマッピングします。これにより、1つのグローバルIPアドレスで多くのデバイスをインターネットに接続可能です。

内部アドレスと外部アドレス

  • 内部ローカルアドレス: 内部ネットワーク内のデバイスに割り当てられるIPアドレス。
  • 内部グローバルアドレス: 外部ネットワークに対して公開される正当なIPアドレス。
  • 外部ローカルアドレス: 外部ネットワークのホストが内部ネットワーク内で表示される際のアドレス。
  • 外部グローバルアドレス: 外部ネットワークのホストに割り当てられる、グローバルにルーティング可能なIPアドレス。

Policy-Based NAT(ポリシーベースNAT)

ポリシーベースNATは、トラフィックの特定の条件(例:送信元IPアドレス、宛先IPアドレス、プロトコル、ポート番号など)に基づいて、どのNAT変換を適用するかを決定するNATの形式です。これにより、異なるタイプのトラフィックに対して異なるNATルールを適用できるため、ネットワーク管理者はNAT変換をより柔軟に制御できます。

主要な特徴:

  • 条件に基づくNAT: ルートマップやアクセスリストを使用して、特定の条件を満たすトラフィックにのみNATを適用します。
  • 柔軟なルーティング: 異なるポリシーを設定することで、特定のトラフィックが異なるインターフェースや外部IPアドレスを通じてルーティングされるように制御できます。

NATの基本設定

静的送信元アドレス変換(Static NAT)

内部ローカル アドレスと内部グローバル アドレスを指定します。
Device(config)#ip nat inside source static local-ip global-ip

内部ネットワークを指定します。
Device(config)#interface type number
Device(config-if)#ip nat inside

外部ネットワークを指定します。
Device(config)#interface type number
Device(config-if)#ip nat outside

静的送信元アドレス変換 設定例

動的送信元アドレス変換(Dynamic NAT)

内部グローバルIPアドレスのプールを定義します。
Device(config)#ip nat pool name start-ip end-ip {netmask netmask | prefix-length prefix-length }

変換されるアドレスのACLを定義します。
Device(config)#access-list access-list-number permit source [source-wildcard ]

動的アドレス変換を確立します。
Device(config)#ip nat inside source list access-list-number pool name

内部ネットワークを指定します。
Device(config)#interface type number
Device(config-if)#ip nat inside

外部ネットワークを指定します。
Device(config)#interface type number
Device(config-if)#ip nat outside

動的送信元アドレス変換 設定例

PAT設定

割り当てられるグローバル アドレスのプールを定義します。
Device(config)#ip nat pool name start-ip end-ip {netmask netmask | prefix-length prefix-length }

変換されるアドレスを許可する標準アクセス リストを定義します。
Device(config)#access-list access-list-number permit source [source-wildcard ]

オーバーロードによる動的ソース変換を確立します。
Device(config)#ip nat inside source list access-list-number pool name overload

内部ネットワークを指定します。
Device(config)#interface type number
Device(config-if)#ip nat inside

外部ネットワークを指定します。
Device(config)#interface type number
Device(config-if)#ip nat outside

PAT 設定例

NATテーブルの確認

NATのオプション設定

拡張変換エント

外部ローカル アドレスと外部グローバル アドレスを指定します。
Device(config)#ip nat outside source static outside global-ip outside local-ip

外部グローバル アドレスと内部ローカル アドレス間の静的変換を定義します。
Device(config)#ip nat outside source static {tcp | udpoutside global-ip global-port outside local-ip local-port extendable

設定例

外部アドレス 172.16.200.100 に送信されたすべてのトラフィックは、内部の 192.168.23.254 に変換されます。外部のTCPポート 10000 で受信されたトラフィックは、内部アドレス 192.168.23.254 のTCPポート 20000 にリダイレクトされます。

タイムアウトの設定

NAT 変換がタイムアウトするまでの時間を変更します。
Device(config)#ip nat translation [ udp-timeout | dns-timeout | tcp-timeout | finrst-timeout | icmp-timeout | syn-timeout ]seconds

指定なしデフォルトの TCP および UDP タイムアウト値を上書きします。
udp-timeoutUDP タイムアウト値を変更します。
dns-timeoutドメイン ネーム システム (DNS) のタイムアウト値を変更します。
tcp-timeoutTCP タイムアウト値を変更します。
finrst-timeout終了およびリセットのタイムアウト値を変更します。
icmp-timeoutICMP タイムアウト値を変更します。
syn-timeout同期 (SYN) タイムアウト値を変更します。

TCP負荷分散の構成

アドレス プールを定義します
Device(config)#ip nat pool name start-ip end-ip {netmask netmask | prefix-length prefix-length } type rotary

許可するアクセス リストを定義します。
Device(config)#access-list access-list-number permit source [source-wildcard ]

動的な内部宛先変換を確立します。
Device(config)#ip nat inside destination-list access-list-number pool name

設定例

以下の設定例では、R1で宛先172.16.100.254のパケットを受信したとき、172.16.100.101-103の範囲で順次割り当てを実施して負荷分散することが出来ています。

ルートマップの使用(Policy-based NAT, PAT)

静的 NAT によるルート マッピングを有効にします。
Device(config)#ip nat inside source {list {access-list-number | access-list-name } pool pool-name [overload ]| static local-ip global-ip [route-map map-name ]}

設定例

以下の設定例は送信元172.16.100.101からの通信に対して宛先が172.16.200.100なら送信元を192.168.23.253に変換、宛先が172.16.200.101なら送信元を192.168.23.254に変換する設定です。

ルートマップの使用(ダイナミックNAT)

NAT のネットワーク アドレス プールを定義します。
Device(config)#ip nat pool name start-ip end-ip netmask netmask

宛先ベースの NAT のルート マップの設定
Device(config)#ip nat inside source route-map name pool name [reversible ]

reversible外部から内部へのトラフィックに対してもNAT変換が適用され、セッションを双方向で確立できるようになります。

設定例

以下の設定例では送信元172.16.100.0/24を192.167.23.100-200に変換するNAT設定を定義しています。

レート制限NAT変換機能の設定

指定されたソースから許可される NAT エントリの最大数を設定します。
Device(config)#ip nat translation max-entries { number | all-vrf number | host ip-address number | list listname number | vrf name number }

設定例

参考文献

Configuring NAT for IP Address Conservation