はじめに
このドキュメントでは、ip nat outside source list
コマンドの設定方法およびNATプロセス中にIPパケットがどうなるかについて説明します。
前提条件
要件
このドキュメントに関する固有の要件はありません。
使用するコンポーネント
このドキュメントの情報は、Cisco IOS®ソフトウェアリリースを実行しているCiscoルータに基づくものです。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
背景説明
このコマンドを使用して、ネットワークの外部からネットワークの内部に送信される IP パケットの送信元アドレスを変換できます。この操作により、ネットワークの内部から外部へ逆方向に移動するIPパケットの宛先アドレスが変換されます。このコマンドは、ネットワークの重複(内部のネットワーク アドレスがネットワークの外部アドレスに重複する)などの状況で役に立ちます。次のネットワーク構成図を例に説明します。
表記法
ドキュメントの表記法の詳細は、「シスコ テクニカル ティップスの表記法」を参照してください。
設定
このセクションでは、このドキュメントで説明する機能を設定するために必要な情報を提供しています。
注:この文書で使用されているコマンドの詳細を調べるには、「Command Lookup ツール」を使用してください(登録ユーザのみ)。
ネットワーク図
このドキュメントでは、次のネットワーク セットアップを使用します。
ネットワーク図
pingがルータR1のLoopback0インターフェイス(172.16.88.1)からルータR2のLoopback0インターフェイス(172.31.1.1)に送信されると、次の一連のイベントが発生します。
- パケット転送:デフォルトルートが設定されているため、ルータR1はパケットをNATルータに転送します。NAT-Routerの外部インターフェイスでは、パケットの送信元アドレス(SA)は172.16.88.1で、宛先アドレス(DA)は172.31.1.1です。
- NAT変換:SAは、ip nat outside source listコマンドで使用されるアクセスリスト1で許可されているため、NATプール「NET」のアドレスに変換されます。この場合、アドレスは172.31.16.10に変換されます。これは、NATプールで最初に使用可能なアドレスです。
- 宛先へのルーティング:変換の後、NAT-Routerはルーティングテーブルで宛先を検索し、パケットをルーティングします。ルータR2は、SAが172.31.16.10、DAが172.31.1.1の着信インターフェイスでパケットを受信します。ルータR2はインターネット制御メッセージプロトコル(ICMP)エコー応答を172.31.16.10に送信して応答します。ルータR2に172.31.16.10へのルートがない場合、パケットをドロップします。
- 応答処理:この場合、ルータR2にはデフォルトルートがあるため、SAの172.31.1.1とDAの172.31.16.10を使用して、応答パケットをNATルータに送信します。NATルータは内部インターフェイスでパケットを受信し、172.31.16.10アドレスへのルートを確認します。ルートがない場合は、ICMP到達不能応答で応答します。
- Translation and Routing Back:この場合、ip nat outside sourceコマンドのadd-routeオプションにより、NAT-Routerには172.31.16.10へのルートがあります。このコマンドは外部グローバルアドレスと外部ローカルアドレス間の変換に基づいてホストルートを追加します。NAT-Routerはパケットを元の送信元アドレス(172.16.88.1)に変換し、パケットを外部インターフェイスからルータR1にルーティングして戻します。
コンフィギュレーション
ルータ R1 |
hostname R1
!
!--- Output suppressed.
!
interface Loopback0
ip address 172.16.88.1 255.255.255.0
!
!--- Output suppressed.
!
interface GigabitEthernet0/0
ip address 172.16.191.254 255.255.255.252
duplex auto
speed auto
!
!--- Output suppressed.
ip route 0.0.0.0 0.0.0.0 172.16.191.253
!--- Default route to forward packets to NAT-Router.
!--- Output suppressed. |
ルータNATルータ |
hostname NAT-Router
!
!--- Output suppressed.
!
interface GigabitEthernet0/0
ip address 172.16.191.253 255.255.255.252
ip nat outside
ip virtual-reassembly in
duplex auto
speed auto
!
interface GigabitEthernet0/1
ip address 172.31.192.202 255.255.255.0
ip nat inside
ip virtual-reassembly in
duplex auto
speed auto
!
ip nat pool NET 172.31.16.10 172.31.16.254 netmask 255.255.255.0
!--- NAT pool defining Outside Local addresses to be used for translation.
!
ip nat outside source list 1 pool NET add-route
!
!--- Configures translation for Outside Global addresses !--- with the NAT pool.
!
ip route 172.16.88.0 255.255.255.0 172.16.191.254
ip route 172.31.1.0 255.255.255.0 172.31.192.201
!
!--- Static routes for reaching the loopback interfaces on R1 and R2.
!
access-list 1 permit 172.16.88.0 0.0.0.255
!
!--- Access-list defining Outside Global addresses to be translated.
!--- Output suppressed. |
ルータ R2 |
hostname R2
!
!--- Output suppressed.
interface Loopback0
ip address 172.31.1.1 255.255.255.0
!
!
interface GigabitEthernet0/0
ip address 172.31.192.201 255.255.255.0
duplex auto
speed auto
!
!--- Output suppressed.
ip route 0.0.0.0 0.0.0.0 172.31.192.202
!--- Default route to forward packets to NAT-Router.
!--- Output suppressed. |
確認
このセクションでは、設定が正常に動作しているかどうかを確認する際に役立つ情報を示しています。
特定のshowコマンドが、アウトプットインタープリタ(登録ユーザ専用)でサポートされています。このツールを使用すると、show
コマンドの出力を分析できます。
show ip nat translationsコマンドを使用すると、次の出力に示すように、変換エントリをチェックできます。
NAT-Router#show ip nat translations
Pro Inside global Inside local Outside local Outside global
--- --- --- 172.31.16.10 172.16.88.1
icmp 172.31.1.1:0 172.31.1.1:0 172.31.16.10:0 172.16.88.1:0
NAT-Router#
出力には、ルータR1のLoopback0インターフェイス上のアドレスである外部グローバルアドレス172.16.88.1が、外部ローカルアドレス172.31.16.10に変換されることが示されています。
次に示されているように、ルーティング テーブル エントリを確認するために show ip route コマンドを使用できます。
NAT-Router#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
a - application route
+ - replicated route, % - next hop override, p - overrides from PfR
Gateway of last resort is not set
172.16.0.0/16 is variably subnetted, 3 subnets, 3 masks
S 172.16.88.0/24 [1/0] via 172.16.191.254
C 172.16.191.252/30 is directly connected, GigabitEthernet0/0
L 172.16.191.253/32 is directly connected, GigabitEthernet0/0
172.31.0.0/16 is variably subnetted, 4 subnets, 2 masks
S 172.31.1.0/24 [1/0] via 172.31.192.201
S 172.31.16.10/32 [1/0] via 172.16.88.1
C 172.31.192.0/24 is directly connected, GigabitEthernet0/1
L 172.31.192.202/32 is directly connected, GigabitEthernet0/1
NAT-Router#
上記の出力には、ip nat outside source コマンドの add-route オプションに従って作成される、外部ローカル アドレス 172.31.16.10 の /32 ルートが示されています。このルートは、ネットワークの内部から外部へ送信されるパケットのルーティングと変換に使用されます。
トラブルシュート
このセクションでは、設定のトラブルシューティングに役立つ情報を紹介します。
次の出力は、ルータR1のloopback0インターフェイスアドレス(172.16.88.1)からルータR2のloopback0インターフェイスアドレス(172.31.1.1)にpingを実行しながら、ルータNAT-Routerでdebug ip packetおよびdebug ip natコマンドを実行した結果です。
!--- The source address in the first packet arriving on the outside interface is first translated.
*Oct 4 20:26:48.839: NAT: s=172.16.88.1->172.31.16.10, d=172.31.1.1 [0]
!--- The ICMP echo request packet with the translated source address is routed and forwarded on the inside interface.
*Oct 4 20:26:48.839: IP: s=172.31.16.10 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), len 100, output feature, NAT Inside(8), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.839: IP: s=172.31.16.10 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), len 100, output feature, Common Flow Table(29), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.839: IP: s=172.31.16.10 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), len 100, output feature, Stateful Inspection(30), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.839: IP: s=172.31.16.10 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), len 100, output feature, NAT ALG proxy(63), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.839: IP: s=172.31.16.10 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), g=172.31.192.201, len 100, forward
*Oct 4 20:26:48.839: IP: s=172.31.16.10 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), len 100, sending full packet
!--- The ICMP echo reply packet arriving on the inside interface, is first routed based on the destination address.
Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.31.16.10, len 100, input feature, Common Flow Table(5), rtype 0, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.31.16.10, len 100, input feature, Stateful Inspection(8), rtype 0, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.31.16.10, len 100, input feature, Virtual Fragment Reassembly(39), rtype 0, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.31.16.10, len 100, input feature, Virtual Fragment Reassembly After IPSec Decryption(57), rtype 0, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.31.16.10, len 100, input feature, MCI Check(109), rtype 0, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
!--- The destination address in the packet is then translated.
*Oct 4 20:26:48.841: NAT: s=172.31.1.1, d=172.31.16.10->172.16.88.1 [0]
!--- The ICMP echo reply packet with the translated destination address is forwarded on the outside interface.
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.16.88.1 (GigabitEthernet0/0), len 100, output feature, Post-routing NAT Outside(26), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.16.88.1 (GigabitEthernet0/0), len 100, output feature, Common Flow Table(29), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.16.88.1 (GigabitEthernet0/0), len 100, output feature, Stateful Inspection(30), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.16.88.1 (GigabitEthernet0/0), len 100, output feature, NAT ALG proxy(63), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.16.88.1 (GigabitEthernet0/0), g=172.16.191.254, len 100, forward
*Oct 4 20:26:48.843: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.16.88.1 (GigabitEthernet0/0), len 100, sending full packet
*Oct 4 20:26:48.845: NAT*: s=172.16.88.1->172.31.16.10, d=172.31.1.1 [1]
*Oct 4 20:26:48.846: NAT*: s=172.31.1.1, d=172.31.16.10->172.16.88.1 [1]
*Oct 4 20:26:48.848: NAT*: s=172.16.88.1->172.31.16.10, d=172.31.1.1 [2]
*Oct 4 20:26:48.849: NAT*: s=172.31.1.1, d=172.31.16.10->172.16.88.1 [2]
*Oct 4 20:26:48.851: NAT*: s=172.16.88.1->172.31.16.10, d=172.31.1.1 [3]
*Oct 4 20:26:48.852: NAT*: s=172.31.1.1, d=172.31.16.10->172.16.88.1 [3]
*Oct 4 20:26:48.854: NAT*: s=172.16.88.1->172.31.16.10, d=172.31.1.1 [4]
*Oct 4 20:26:48.855: NAT*: s=172.31.1.1, d=172.31.16.10->172.16.88.1 [4]
外部インターフェイスで受信されたすべてのパケットに対して、上記の手順が繰り返されます。
要約
ip nat outside source static コマンド(スタティック NAT)の代わりに ip nat outside source list コマンド(ダイナミック NAT)を使用した場合の大きな違いは、(NAT が設定された)ルータによってパケットの変換基準が確認されるまで、変換テーブルにエントリがない点にあります。前記の例では、SAが172.16.88.1(NAT-Routerの外部インターフェイスに着信)のパケットは、ip nat outside source listコマンドで使用される基準であるaccess-list 1を満たします。このため、内部ネットワークからのパケットがルータR1のloopback0インターフェイスと通信するためには、外部ネットワークからパケットが発信される必要があります。
この例では、次の2つの点に注意する必要があります。
1. パケットが外部から内部へ移動するとき、最初に変換が行われ、次にルーティングテーブルで宛先がチェックされます。パケットが内部から外部へ移動するとき、最初にルーティングテーブルで宛先がチェックされ、次に変換が行われます。
2. 上記の各コマンドを使用する際には、IPパケットのどの部分が変換されるかを覚えておくことが重要です。次の表にガイドラインを示します。
コマンド |
アクション |
ip nat outside source list |
- 外部から内部へ送られる IP パケットの送信元が変換される。
- 内部から外部へ送られる IP パケットの宛先が変換される。
|
ip nat inside source list |
- 内部から外部へ送られる IP パケットの送信元が変換される。
- 外部から内部へ送られる IP パケットの宛先が変換される。
|
これらのガイドラインが示しているのは、パケットを変換する方法が複数あるということです。特定のニーズに応じて、NATインターフェイス(内部または外部)の定義方法、および変換前または変換後にルーティングテーブルに含まれるルートを決定できます。パケットの変換される部分は、パケットが移動する方向とNATの設定方法によって異なることに注意してください。
関連情報