はじめに
このドキュメントでは、Cisco ルータでネットワークアドレス変換(NAT)を設定する方法について説明します。
前提条件
要件
このドキュメントを読むには、Network Address Translation(NAT; ネットワーク アドレス変換)との接続で使用される用語についての基本的な知識が必要です。
使用するコンポーネント
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
表記法
表記法の詳細については、『シスコ テクニカル ティップスの表記法』を参照してください。
NAT を設定および展開するためのクイックスタート手順
注:このドキュメントにおいて、インターネットまたはインターネットデバイスという記述は、外部ネットワーク上のデバイスを意味します。
NAT を設定する場合、特に NAT の初心者にとっては、どこから手をつければよいかわからないことがよくあります。NAT の機能の定義手順と設定方法は、次が参考になります。
-
NAT の内部インターフェイスと外部インターフェイスを定義します。
-
ネットワークアドレス変換(NAT)を使用して何を実現するかを定義します。
-
内部ユーザーにインターネットへのアクセスを許可しますか。
-
インターネットから内部デバイス(メールサーバーや Web サーバーなど)へのアクセスを許可しますか。
-
Transmission Control Protocol(TCP)トラフィックを別の TCP ポートまたはアドレスにリダイレクトしますか?
-
ネットワークの移行中にNATを使用しますか(たとえば、サーバーのIPアドレスを変更してすべてのクライアントを更新できるまで、更新されないクライアントは元のIPアドレスでサーバーにアクセスでき、更新されたクライアントは新しいアドレスでサーバーにアクセスできるようにしますか)?
-
重複するネットワークが通信できるようにしますか?
-
上記で定義したことを実現するために NAT を設定します。ステップ 2 で定義した内容に基づいて、次の機能のうちのどれを使用するか判断する必要があります。
-
スタティック NAT
-
ダイナミック NAT
-
Overloading
-
これらの機能の任意の組み合わせ。
-
NAT の動作を確認します。
これらの NAT の各例では、前の図のクイックスタート手順のステップ 1 ~ 3 について説明します。これらの例で取り上げられているのはいずれも、NAT の展開が推奨される一般的なシナリオです。
内部インターフェイスと外部インターフェイスの NAT の定義
NAT を展開するための最初のステップは、NAT の内部インターフェイスと外部インターフェイスを定義することです。内部ネットワークを内部として定義し、外部ネットワークを外部として定義するのが最も簡単です。ただし、「内部」と「外部」という用語はどちらも使用目的によって決まります。次の図に、この例を示します。
NAT トポロジ
例
1. 内部ユーザーのインターネットへのアクセスの許可
内部ユーザにインターネットへのアクセスを許可する一方で、すべてのユーザに対応できる有効なアドレスが不足している可能性があります。インターネット上のデバイスとの通信がすべて内部デバイスから開始される場合は、1 つの有効アドレスか、または有効アドレスのプールが必要です。
下図は、内部および外部として定義されたルータインターフェイスを含む単純なネットワーク図を示しています。
使用できる有効なアドレス
この例では、NATを使用して、Insideの特定のデバイス(各サブネットの最初の31)がOutsideのデバイスとの通信を開始できるようにし、それらの無効なアドレスを有効なアドレスまたはアドレスプールに変換します。アドレス プールは、172.16.10.1 ~ 172.16.10.63 の範囲で定義されています。
これで NAT を設定できるようになりました。前の図で定義した内容を実現するには、ダイナミック NAT を使用します。ダイナミックNATでは、ルータの変換テーブルは、最初は空で、ルータ変換されたパススルー必要があるトラフィックを一度設定されます。それに対してスタティック NAT では、変換があらかじめ静的に設定されており、変換が必要なトラフィックがなくても変換テーブル内にエントリが登録されています。
この例では、NAT を設定して、Inside デバイスをそれぞれ異なる有効アドレスに変換できます。また、Inside デバイスすべてを同じ有効アドレスに変換することも可能です。この2番目の方法は overloading
、と呼ばれます。各方法の設定例を次に示します。
内部ユーザーのインターネットへのアクセスを許可するための NAT の設定
NAT ルータ |
interface ethernet 0
ip address 10.10.10.1 255.255.255.0
ip nat inside
!--- Defines Ethernet 0 with an IP address and as a NAT inside interface.
interface ethernet 1
ip address 10.10.20.1 255.255.255.0
ip nat inside
!--- Defines Ethernet 1 with an IP address and as a NAT inside interface.
interface serial 0
ip address 172.16.10.64 255.255.255.0
ip nat outside
!--- Defines serial 0 with an IP address and as a NAT outside interface.
ip nat pool no-overload 172.16.10.1 172.16.10.63 prefix 24
!--- Defines a NAT pool named no-overload with a range of addresses !--- 172.16.10.1 - 172.16.10.63.
ip nat inside source list 7 pool no-overload
!--- Indicates that any packets received on the inside interface that !--- are permitted by access-list 7 has !--- the source address translated to an address out of the !--- NAT pool "no-overload".
access-list 7 permit 10.10.10.0 0.0.0.31
access-list 7 permit 10.10.20.0 0.0.0.31
!--- Access-list 7 permits packets with source addresses ranging from !--- 10.10.10.0 through 10.10.10.31 and 10.10.20.0 through 10.10.20.31.
|
注:シスコは、NAT コマンドで参照されるアクセスリストを、permit any を使用して設定しないことを強く推奨します。 NAT で permit any を使用すると、過剰なルータリソースが消費され、ネットワークに問題が発生する可能性があります。
前述の設定では、サブネット 10.10.10.0 から最初の 32 アドレスと、サブネット 10.10.20.0 から最初の 32 アドレスのみが access-list 7 によって許可されています。したがって、これらの送信元アドレスのみが変換されます。内部ネットワーク上に他のアドレスを持つ他のデバイスが存在する可能性がありますが、これらは変換されません。
内部ユーザーがオーバーロードでインターネットにアクセスできるようにするための NAT の設定
NAT ルータ |
interface ethernet 0
ip address 10.10.10.1 255.255.255.0
ip nat inside
!--- Defines Ethernet 0 with an IP address and as a NAT inside interface.
interface ethernet 1
ip address 10.10.20.1 255.255.255.0
ip nat inside
!--- Defines Ethernet 1 with an IP address and as a NAT inside interface.
interface serial 0
ip address 172.16.10.64 255.255.255.0
ip nat outside
!--- Defines serial 0 with an IP address and as a NAT outside interface.
ip nat pool ovrld 172.16.10.1 172.16.10.1 prefix 24
!--- Defines a NAT pool named ovrld with a range of a single IP !--- address, 172.16.10.1.
ip nat inside source list 7 pool ovrld overload
!--- Indicates that any packets received on the inside interface that !--- are permitted by access-list 7 has the source address !--- translated to an address out of the NAT pool named ovrld. !--- Translations are overloaded, which allows multiple inside !--- devices to be translated to the same valid IP address.
access-list 7 permit 10.10.10.0 0.0.0.31
access-list 7 permit 10.10.20.0 0.0.0.31
!--- Access-list 7 permits packets with source addresses ranging from !--- 10.10.10.0 through 10.10.10.31 and 10.10.20.0 through 10.10.20.31.
|
前述の 2 番目の設定では、NAT プール ovrld には 1 つのアドレスの範囲しかありません。 ovrld
ip nat inside source list 7 pool ovrld overload コマンドのようにキーワード overload を使用すると、複数の内部デバイスがプール内の単一アドレスに変換されます。
このコマンドのもう 1 つのバリエーションは ip nat inside source list 7 interface serial 0 overload で、これはシリアル 0 のインターフェイスに割り当てられたアドレスで NAT がオーバーロードするように設定します。
overloading が設定されている場合、ルータは、より高いレベルのプロトコルから十分な情報(たとえば、TCP または UDP ポート番号)を保持して、グローバルアドレスを正しいローカルアドレスに戻します。overloading
グローバルアドレスとローカルアドレスの定義については、『NAT:グローバルおよびローカルの定義』を参照してください。
2. インターネットから内部デバイスへのアクセスの許可
インターネット上のデバイスから通信が開始される(電子メールなど)場合、インターネット上のデバイスと情報を交換するための内部デバイスが必要になる場合があります。典型的な例として、インターネット上のデバイスが内部ネットワークにあるメール サーバに電子メールを送信するケースが挙げられます。
通信の開始
インターネットから内部デバイスへのアクセスを許可するための NAT の設定
この例では、まず NAT の内部インターフェイスと外部インターフェイスを上記のネットワーク構成図のように定義します。
次に、内部ユーザが外部との通信を開始できるように定義します。外部のデバイスは、内部のメールサーバーとのみ通信を開始できる必要があります。
次のステップは NAT の設定です。上記の目的を達成するには、スタティック NAT とダイナミック NAT をどちらも設定します。この例の設定方法については、『スタティックNATとダイナミックNATの同時設定』を参照してください。
3. 別の TCP ポートまたはアドレスへの TCP トラフィックのリダイレクト
内部ネットワーク上の Web サーバーは、インターネット上のデバイスが内部デバイスとの通信を開始する必要があるもう 1 つの例です。場合によっては、ポート 80 以外の TCP ポートで Web トラフィックをリッスンするように内部 Web サーバーを設定できます。たとえば、内部 Web サーバーは TCP ポート 8080 をリッスンするように設定できます。この場合は、NAT を使用して、TCP ポート 80 宛てのトラフィックを TCP ポート 8080 にリダイレクトできます。
Web トラフィック TCP ポート
上記のネットワーク図に示すようにインターフェイスを定義した後、NAT が 172.16.10.8:80 宛ての外部からのパケットを 172.16.10.8:8080 にリダイレクトするように設定できます。この目的を達成するには、static nat コマンドを使用して TCP ポート番号を変換します。設定例を次に示します。
別の TCP ポートまたはアドレスに TCP トラフィックをリダイレクトするための NAT の設定
NAT ルータ |
interface ethernet 0
ip address 172.16.10.1 255.255.255.0
ip nat inside
!--- Defines Ethernet 0 with an IP address and as a NAT inside interface.
interface serial 0
ip address 10.200.200.5 255.255.255.252
ip nat outside
!--- Defines serial 0 with an IP address and as a NAT outside interface.
ip nat inside source static tcp 172.16.10.8 8080 172.16.10.8 80
!--- Static NAT command that states any packet received in the inside !--- interface with a source IP address of 172.16.10.8:8080 is !--- translated to 172.16.10.8:80.
|
注:スタティック NAT コマンドの設定説明は、送信元アドレスが 172.16.10.8:8080 の内部インターフェイスで受信したパケットはすべて、172.16.10.8:80 に変換されることを示しています。これはまた、内部インターフェイスで受信された、宛先アドレスが 172.16.10.8:80 であるパケットがすべて 172.16.10.8:8080 の宛先に変換されることも意味します。
show ip nat translations
Pro Inside global Inside local Outside local Outside global
tcp 172.16.10.8:80 172.16.10.8:8080 --- ---
4. ネットワーク移行での NAT の使用
NAT は、ネットワーク上のデバイスのアドレスを変更する必要がある場合や、あるデバイスを別のデバイスに置き換える場合に役立ちます。たとえば、ネットワーク内のすべてのデバイスが使用している特定のサーバを、新しい IP アドレスを持つ新しいデバイスに置き換える場合、すべてのネットワーク デバイスの設定を新しいサーバ アドレスに変更するには相当時間がかかります。その間に、古いアドレスを使用しているデバイスのパケットを変換するよう NAT を設定すれば、それらのデバイスと新しいサーバが通信可能になります。
NAT ネットワークの移行
上記の図に示すように NAT インターフェイスを定義したら、NAT が古いサーバーアドレス(172.16.10.8)宛ての外部からのパケットを変換して新しいサーバーアドレスに送信することを許可するように設定できます。新しいサーバは別のLAN上にあり、このLAN上のデバイス、またはこのLANを介して到達可能なデバイス(ネットワークの内側部分にあるデバイス)は、可能であれば新しいサーバIPアドレスを使用するように設定する必要があることに注意してください。
上記の目的を達成するには、スタティック NAT を使用します。次に設定例を示します。
ネットワーク移行を通じて使用するための NAT の設定
NAT ルータ |
interface ethernet 0
ip address 172.16.10.1 255.255.255.0
ip nat outside
!--- Defines Ethernet 0 with an IP address and as a NAT outside interface.
interface ethernet 1
ip address 172.16.50.1 255.255.255.0
ip nat inside
!--- Defines Ethernet 1 with an IP address and as a NAT inside interface.
interface serial 0
ip address 10.200.200.5 255.255.255.252
!--- Defines serial 0 with an IP address. This interface is not !--- participating in NAT.
ip nat inside source static 172.16.50.8 172.16.10.8
!--- States that any packet received on the inside interface with a !--- source IP address of 172.16.50.8 is translated to 172.16.10.8.
|
注:この例の内部送信元の NAT コマンドは、外部インターフェイスで受信した宛先アドレスが 172.16.10.8 のパケットの宛先アドレスが 172.16.50.8 に変換されることも意味します。
5. 重複するネットワークでの NAT の使用
重複するネットワークは、インターネット内の他のデバイスによってすでに使用されている内部デバイスに IP アドレスを割り当てると発生します。また、ネットワークでRFC 1918 IP アドレスを使用する 2 つの企業がマージした場合にも発生します。その 2 つのネットワークは、できればすべてのデバイスのアドレスを変更せずに通信できる必要があります。
1 対 1 マッピングと多対多マッピングの違い
スタティック NAT 設定では、1 対 1 のマッピングが作成され、特定のアドレスが別のアドレスに変換されます。このタイプの設定では、設定が存在する限り、NAT テーブルに恒久的なエントリが作成され、内部ホストと外部ホストの両方から接続を開始できます。これは、主にメール、Web、FTP などのアプリケーション サービスを提供するホストで便利な設定です。例:
Router(config)#ip nat inside source static 10.3.2.11 10.41.10.12
Router(config)#ip nat inside source static 10.3.2.12 10.41.10.13
ダイナミック NAT は、変換されるホストの実際の数より使用できるアドレスが少ない場合に便利です。ホストが接続を開始すると NAT テーブルにエントリが作成され、アドレス間に 1 対 1 のマッピングが確立されます。ただし、マッピングは変化する場合があり、通信の時点でのプール内の使用可能な登録済みアドレスに依存します。ダイナミック NAT では、NAT が設定されている Inside または Outside のネットワークからのみ、セッションを開始できます。一定の時間ホストが通信を行わないと、ダイナミック NAT のエントリは変換テーブルから削除されます。この時間は設定可能です。次に、アドレスはプールに戻されて、別のホストが使用できるようになります。
たとえば、詳細設定で次の手順を実行します。
-
アドレスのプールを作成します。
Router(config)#ip nat pool MYPOOLEXAMPLE 10.41.10.1 10.41.10.41 netmask 255.255.255.0
-
マッピングする必要のある Inside ネットワークの access-list を作成します。
Router(config)#access-list 100 permit ip 10.3.2.0 0.0.0.255 any
-
NAT する内部ネットワーク 10.3.2.0 0.0.0.255 を選択する access-list 100 をプール MYPOOLEXAMPLE に関連付け、アドレスをオーバーロードします。
Router(config)#ip nat inside source list 100 pool MYPOOLEXAMPLE overload
NAT の動作の確認
NAT を設定したら、想定どおりに動作することを確認します。これは、ネットワークアナライザ、show コマンド、debug コマンドなど、さまざまな方法で実行できます。NATの動作確認例についての詳細は、『NATの動作確認と基本的なNAT』を参照してください。
結論
このドキュメントの例では、NAT の設定と展開に役立つクイックスタート手順を示しています。
クイック スタート手順は、次のステップから構成されています。
-
NAT の内部インターフェイスと外部インターフェイスを定義します。
-
NAT で何を実現するか
-
ステップ 2 で定義した内容を実現するための NAT の設定
-
NAT の動作を確認します。
前述の各例では、ip nat inside コマンドがさまざまな形式で使用されていました。ip nat outside コマンドを使用して同じ目的を達成することもできますが、NAT の処理順序に注意してください。ip nat outsidecommandsを使用する設定例については、『IP NAT Outsideソースリストコマンドの設定』を参照してください。
前の例では、これらのアクションを提供:
コマンド |
アクション |
ip nat inside source
|
- 内部から外部へ移動する IP パケットの発信元を変換します。
- 外部から内部へ移動する IP パケットの宛先を変換します。
|
ip nat outside source
|
- 外部から内部へ移動する IP パケットの発信元を変換します。
- 内部から外部へ移動する IP パケットの宛先を変換します。
|
関連情報