NATとは
NAT(ネットワークアドレス変換)は、ルーター上で動作し、内部ネットワークのプライベートIPアドレスを外部に公開可能なグローバルIPアドレスに変換する技術です。この変換により、外部ネットワークから内部ネットワークを隠すことで、セキュリティを強化する役割も果たします。
NATの主な種類
- 静的NAT:
- 1対1のアドレス変換を行い、特定のローカルIPアドレスとグローバルIPアドレスを固定的にマッピングします。
- 動的NAT:
- ローカルIPアドレスを、登録済みのグローバルIPアドレスのプールから動的に割り当てます。
- オーバーロード(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
静的送信元アドレス変換 設定例

R1(config)#ip nat inside source static 172.16.100.101 192.168.12.101
R1(config)#interface Gi0/0
R1(config-if)#ip nat inside
R1(config-if)#interface Gi0/2
R1(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
動的送信元アドレス変換 設定例

R1(config)#ip nat pool TEST 192.168.12.100 192.168.12.200 netmask 255.255.255.0
R1(config)#access-list 1 permit 172.16.100.0 0.0.0.255
R1(config)#ip nat inside source list 1 pool TEST
R1(config)#interface Gi0/0
R1(config-if)#ip nat inside
R1(config-if)#interface Gi0/2
R1(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 設定例

R1(config)#ip nat pool TEST 192.168.12.254 192.168.12.254 netmask 255.255.255.0
R1(config)#access-list 1 permit 172.16.100.0 0.0.0.255
R1(config)#ip nat inside source list 1 pool TEST overload
R1(config)#interface Gi0/0
R1(config-if)#ip nat inside
R1(config-if)#interface Gi0/2
R1(config-if)#ip nat outside
NATテーブルの確認

NATのオプション設定
拡張変換エントリ
外部ローカル アドレスと外部グローバル アドレスを指定します。
Device(config)#ip nat outside source static outside global-ip outside local-ip
外部グローバル アドレスと内部ローカル アドレス間の静的変換を定義します。
Device(config)#ip nat outside source static {tcp | udp} outside 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 にリダイレクトされます。
R1(config)#ip nat outside source static 172.16.200.100 192.168.23.254
R1(config)#ip nat outside source static tcp 172.16.200.100 10000 192.168.23.254 20000 extendable
タイムアウトの設定
NAT 変換がタイムアウトするまでの時間を変更します。
Device(config)#ip nat translation [ udp-timeout | dns-timeout | tcp-timeout | finrst-timeout | icmp-timeout | syn-timeout ]seconds
| 指定なし | デフォルトの TCP および UDP タイムアウト値を上書きします。 |
| udp-timeout | UDP タイムアウト値を変更します。 |
| dns-timeout | ドメイン ネーム システム (DNS) のタイムアウト値を変更します。 |
| tcp-timeout | TCP タイムアウト値を変更します。 |
| finrst-timeout | 終了およびリセットのタイムアウト値を変更します。 |
| icmp-timeout | ICMP タイムアウト値を変更します。 |
| 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の範囲で順次割り当てを実施して負荷分散することが出来ています。
R1(config)#ip nat pool TEST 172.16.100.101 172.16.100.103 netmask 255.255.255.0 type rotary
R1(config)#access-list 1 permit host 172.16.100.254
R1(config)#ip nat inside destination list 1 pool TEST
ルートマップの使用(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に変換する設定です。
R1(config)#access-list 101 permit ip 172.16.100.0 0.0.0.255 host 172.16.200.100
R1(config)#access-list 102 permit ip 172.16.100.0 0.0.0.255 host 172.16.200.101
R1(config)#route-map TEST1 permit 10
R1(config-route-map)#match ip address 101
R1(config-route-map)#exit
R1(config)#route-map TEST2 permit 10
R1(config-route-map)#match ip address 102
R1(config-route-map)#exit
R1(config)#ip nat inside source static 172.16.100.101 192.168.23.253 route-map TEST1
R1(config)#ip nat inside source static 172.16.100.101 192.168.23.254 route-map TEST2
ルートマップの使用(ダイナミック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設定を定義しています。
R1(config)#access-list 1 permit 172.16.100.0 0.0.0.255
R1(config)#route-map TEST
R1(config-route-map)#match ip address 1
R1(config-route-map)#exit
R1(config)#ip nat pool TEST 192.168.23.100 192.168.23.200 netmask 255.255.255.0
R1(config)#ip nat inside source route-map TEST pool TEST reversible
レート制限NAT変換機能の設定
指定されたソースから許可される NAT エントリの最大数を設定します。
Device(config)#ip nat translation max-entries { number | all-vrf number | host ip-address number | list listname number | vrf name number }