はじめに
このドキュメントでは、ip nat outside source static コマンドを使用する設定と、NATプロセスの結果としてのIPパケットについて説明します。
前提条件
要件
次の項目に関する専門知識があることが推奨されます。
使用するコンポーネント
このドキュメントの情報は、Cisco IOS®ソフトウェアリリースを実行しているシスコルータに基づくものです。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
背景説明
このドキュメントには、ip nat outside source static コマンドを使用した設定例が記載されています。また、NAT プロセスにおいて IP パケットがどのように処理されるかについても簡単に説明しています。例として、このドキュメントのネットワークトポロジを取り上げます。
設定
ネットワーク図
このドキュメントでは、次のネットワーク設定を使用します。
ネットワーク図
ルータR1のLoopback1インターフェイスを発信元とし、ルータR2のLoopback0インターフェイスを宛先としてpingを発行すると、次のようになります。
- NAT-Routerの外部インターフェイス(Gi0/0)に、送信元アドレス(SA)が172.16.89.32で宛先アドレス(DA)が172.31.1.1のpingパケットが表示されます。
- NATはSAを外部ローカルアドレス172.31.16.5(NATルータで設定されたip nat outside source staticコマンドに対応)に変換します。
- 次に、NATルータはルーティングテーブルで172.31.1.1へのルートを確認します。
- ルートが存在しない場合、NAT-Routerはパケットをドロップします。ただし、この場合、NATルータにはサブネット172.31.1.0/24への設定済みのスタティックルートを介した172.31.1.1へのルートがあります。パケットは宛先に転送されます。
- ルータR2は着信インターフェイス(Gi0/0)でパケットを受信し、SAは172.31.16.5、DAは172.31.1.1になりました。
- 応答するため、R2はインターネット制御メッセージプロトコル(ICMP)エコー応答を172.31.16.5(NAT変換アドレス)に送信します。
- R2にルートがない場合は、パケットをドロップします。ただし、この例では、NAT-Routerへのデフォルトルートがあります。
- したがって、SAが172.31.1.1でDAが172.31.16.5の応答パケットをNAT-Routerに送信します。
- NATルータはパケットを確認し、172.31.16.5アドレスへのルートを確認します。
- 経路がない場合、ICMP 到達不能応答で応答します。
- この例では、R1を指す172.31.16.0/24サブネットへのスタティックルートが設定されています。
- パケットを172.16.89.32アドレスに逆変換し、外部インターフェイス(Gi0/0)に転送する
コンフィギュレーション
このドキュメントでは、次のコンフィギュレーションを使用します。
ルータ R1 |
hostname R1
!
!--- Output suppressed.
!
interface Loopback1
ip address 172.16.89.32 255.255.255.0
!
interface GigabitEthernet0/0
ip address 172.16.191.254 255.255.255.252
duplex auto
speed auto
!
interface GigabitEthernet0/1
no ip address
shutdown
! !--- 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 command defines GigabitEthernet0/1 as a NAT inside interface and GigabitEthernet0/0 as a NAT outside interface.
!--- Output suppressed.
!
no ip http server
no ip http secure-server
ip nat outside source static 172.16.89.32 172.31.16.5
ip route 172.31.1.0 255.255.255.0 172.31.192.201
ip route 172.31.16.0 255.255.255.0 172.16.191.254
!
!--- Outside local address is defined as 172.31.16.5.
!--- Static routes for reaching the loopback interfaces on R2 and subnet 172.31.16.0 towards R1.
|
注:この特定のシナリオでは、R1のLoopback1を指すスタティックルートは必要ありません。これは、ICMP応答がNATルータに着信するときに、最初にルーティングテーブルで宛先が確認されてから、アドレス変換が実行されるためです。
ルータ 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 ip nat translations コマンドを使用します。
NAT-Router#show ip nat translations
Pro Inside global Inside local Outside local Outside global
--- --- --- 172.31.16.5 172.16.89.32
icmp 172.31.1.1:21 172.31.1.1:21 172.31.16.5:21 172.16.89.32:21
NAT-Router#
トラブルシューティング
この例では、NATプロセスを示すために、NAT変換デバッグとIPパケットデバッグを使用します。
注意:debugコマンドは大量の出力を生成するため、使用するのはIPネットワークのトラフィックが少なく、システムの他の機能が悪影響を受けない場合だけにしてください。
注:これらのデバッグ出力はCisco IOSソフトウェアを実行しているルータから取得したものです。これらのデバッグ出力の収集は、使用するプラットフォームによって異なります。
注:debug コマンドを使用する前に、『debug コマンドの重要な情報』を参照してください。
この出力は、R1 loopback1インターフェイスアドレス(172.16.89.32)からR2 loopback0インターフェイスアドレス(172.31.1.1)にpingを実行しながら、NAT-Routerでdebug ip packetおよびdebug ip natコマンドを同時に使用した結果です。
この出力は、NAT-Routerの外部インターフェイスに到達した最初のパケットを示しています。172.16.89.32 の送信元アドレスは 172.31.16.5 に変換されます。ICMPパケットは、GigabitEthernet0/1インターフェイスから宛先に向けて転送されます。
*Sep 19 15:34:39.925: NAT: s=172.16.89.32->172.31.16.5, d=172.31.1.1 [100]
*Sep 19 15:34:39.925: IP: s=172.31.16.5 (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
*Sep 19 15:34:39.926: IP: s=172.31.16.5 (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
*Sep 19 15:34:39.926: IP: s=172.31.16.5 (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
*Sep 19 15:34:39.927: IP: s=172.31.16.5 (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
*Sep 19 15:34:39.927: IP: s=172.31.16.5 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), g=172.31.192.201, len 100, forward
*Sep 19 15:34:39.928: IP: s=172.31.16.5 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), len 100, sending full packet
この出力では、172.31.1.1 からのリターン パケットの宛先アドレスが 172.31.16.5 から 172.16.89.32 に変換されることが示されています。その結果、ICMPパケットがGigabitEthernet0/0インターフェイス(NAT-Router)から転送されます。
*Sep 19 15:34:39.930: NAT*: i: icmp (172.31.1.1, 20) -> (172.31.16.5, 20) [100]
*Sep 19 15:34:39.930: NAT*: s=172.31.1.1, d=172.31.16.5->172.16.89.32 [100]
ICMP パケットの交換は継続されます。このデバッグ出力の NAT プロセスは、上の出力と同じです。
*Sep 19 15:34:39.932: NAT*: o: icmp (172.16.89.32, 20) -> (172.31.1.1, 20) [101]
*Sep 19 15:34:39.932: NAT*: s=172.16.89.32->172.31.16.5, d=172.31.1.1 [101]
*Sep 19 15:34:39.933: NAT*: i: icmp (172.31.1.1, 20) -> (172.31.16.5, 20) [101]
*Sep 19 15:34:39.933: NAT*: s=172.31.1.1, d=172.31.16.5->172.16.89.32 [101]
*Sep 19 15:34:39.935: NAT*: o: icmp (172.16.89.32, 20) -> (172.31.1.1, 20) [102]
*Sep 19 15:34:39.935: NAT*: s=172.16.89.32->172.31.16.5, d=172.31.1.1 [102]
*Sep 19 15:34:39.936: NAT*: i: icmp (172.31.1.1, 20) -> (172.31.16.5, 20) [102]
*Sep 19 15:34:39.936: NAT*: s=172.31.1.1, d=172.31.16.5->172.16.89.32 [102]
*Sep 19 15:34:39.938: NAT*: o: icmp (172.16.89.32, 20) -> (172.31.1.1, 20) [103]
*Sep 19 15:34:39.938: NAT*: s=172.16.89.32->172.31.16.5, d=172.31.1.1 [103]
*Sep 19 15:34:39.939: NAT*: i: icmp (172.31.1.1, 20) -> (172.31.16.5, 20) [103]
*Sep 19 15:34:39.939: NAT*: s=172.31.1.1, d=172.31.16.5->172.16.89.32 [103]
*Sep 19 15:34:39.940: NAT*: o: icmp (172.16.89.32, 20) -> (172.31.1.1, 20) [104]
*Sep 19 15:34:39.940: NAT*: s=172.16.89.32->172.31.16.5, d=172.31.1.1 [104]
*Sep 19 15:34:39.942: NAT*: i: icmp (172.31.1.1, 20) -> (172.31.16.5, 20) [104]
*Sep 19 15:34:39.942: NAT*: s=172.31.1.1, d=172.31.16.5->172.16.89.32 [104]
要約
パケットが外部から内部に移動する場合は、先に変換が行われてから、ルーティング テーブルで宛先がチェックされます。
パケットが内部から外部へ移動するとき、まず送信先についてルーティング テーブルをチェックしてから次に変換が行われます。
詳細については、『NAT の処理順序』を参照してください。
上記の各コマンドとともに使用した場合に変換されるIPパケットの部分をメモします。次の表にガイドラインを示します。
これらのガイドラインは、パケットの変換方法が複数あることを示しています。特定のニーズに基づいて、NATインターフェイス(内部または外部)の定義方法と、変換前または変換後にルーティングテーブルに含まれるルートを決定します。パケットのどの部分が変換されるかは、パケットの移動方向と NAT の設定によって決定されるということを常に念頭に置いてください。
関連情報