概要
このドキュメントでは、Cisco IOS®ルータでTCPトラフィックをロードバランシングするネットワークアドレス変換(NAT)サーバを設定する方法について説明します。
前提条件
要件
このドキュメントに特有の要件はありません。
使用するコンポーネント
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。このドキュメントでは、Cisco IOSが稼働するスイッチとシスコ ルータに適用されます。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。対象のネットワークが実稼働中である場合には、どのようなコマンドについても、その潜在的な影響について確実に理解しておく必要があります。
背景説明
目的
外部インターネットからローカルサーバにアクセスするユーザは、単一のURLまたはIPアドレスを使用してサーバにアクセスしますが、NATデバイスを使用して、ミラーリングされたコンテンツを持つ複数の同一サーバにユーザトラフィックをロードシェアリングします。
説明
外部ユーザAと外部ユーザBは、外部から見えるIPアドレス172.16.2.3(サーバの仮想IPアドレス)でWebサーバのコンテンツにアクセスします。 NATルータは、172.16.1.3宛てのトラフィックをラウンドロビン方式で内部IPアドレス10.1.1.1、10.1.1.2、および10.1.1.3に変換し、それぞれのサーバに転送します。外部ユーザから開始された新しい各セッションは、次の物理サーバのIPアドレスに変換されます。
設定
ネットワーク図
手順
- ユーザAが仮想サーバIPアドレス172.16.2.3とのTCP接続を開始します。
- NATルータは、接続要求を受信すると、次に使用可能な実サーバのIPアドレス(10.1.1.1など)を割り当てるNAT変換エントリを作成します。
- NATルータは、宛先IPアドレスを割り当てられた実際のIPアドレスに置き換え、パケットを転送します。
- サーバはパケットを受信し、送信元に返信します。
- NATルータは、サーバから返されたパケットを受信し、NATテーブルルックアップを実行します。次に、ルータは送信元アドレスを仮想サーバのIPアドレス(172.16.2.3)に変換し、パケットを転送します。
- ユーザBがサーバ仮想IPアドレス172.16.2.3を使用してTCPセッションを開始します。接続要求を受信すると、NATルータはこれを次に使用可能な実サーバIPアドレス(10.1.1.2など)に変換し、パケットをサーバに転送します。
スタティックNATは双方向であるため、パケットの宛先が変換されます。この形式のNATを実行すると、TCPパケットの送信によってトリガーされます。インターネット制御メッセージプロトコル(ICMP)の送信は、NAT変換をトリガーしない可能性があります。
TCP以外のトラフィックは、プール内の最初のアドレスに送信されます。
スタティック内部ソースNATやスタティック内部ソースPATとは異なり、ルータはグローバルアドレスに関するARP問い合わせに応答しません。したがって、アドレスをセカンダリのようなインターフェイスに追加する必要があります。この変換方式(80や1087)。 ポートは一致している必要があります。
注:NATプールのIPアドレスは、外部インターフェイスのIPアドレスと同じである必要はありません。この例を示すために、実際のインターフェイスIPサブネット172.16.1.xとは異なるブロック172.16.2.xのIPアドレスを使用しています。
- 実サーバのアドレスを含むアドレスプールを定義します。
ip nat pool NATPOOL 10.1.1.1 10.1.1.3 prefix-length 24 type rotary
- 仮想サーバのアドレスを許可するアクセスリストを定義します。
access-list 1 permit host 172.16.2.3
- 内部宛先アドレスのダイナミック変換を有効にします。
ip nat inside destination list
pool
ip nat inside destination list 1 pool NATPOOL
- NAT の Inside インターフェイスと Outside インターフェイスを定義します。
Interface gig0/0
ip address 10.1.1.4 255.255.255.0
Ip nat inside
Interface gig0/1
ip address 172.16.1.1 255.255.255.248
Ip nat outside
IPアドレス10.1.1.1、10.1.1.2、および10.1.1.3は、誰かがIPアドレス172.16.2.3にアクセスしようとすると、ロータリー方式で送信されます
確認
これを確認するには、外部ホストから仮想IPアドレスへの複数のTCPセッションを開始します。IP NATのデバッグ t検証には、ranslation/show ip nat translationの出力を使用できます。
Router#
Router#
*Jul 24 13:27:41.193: NAT*: s=192.168.1.1, d=172.16.2.3->10.1.1.3 [22864]
*Jul 24 13:27:41.196: NAT*: s=10.1.1.3->172.16.2.3, d=192.168.1.1 [18226]
Router#
*Jul 24 13:27:44.329: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35533]
*Jul 24 13:27:44.331: NAT*: s=10.1.1.1->172.16.2.3, d=192.168.2.1 [14573]
*Jul 24 13:27:44.332: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35534]
*Jul 24 13:27:44.332: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35535]
*Jul 24 13:27:44.332: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35536]
*Jul 24 13:27:44.333: NAT*: s=10.1.1.1->172.16.2.3, d=192.168.2.1 [14574]
*Jul 24 13:27:44.365: NAT*: s=10.1.1.1->172.16.2.3, d=192.168.2.1 [14575]
*Jul 24 13:27:44.365: NAT*: s=10.1.1.1->172.16.2.3, d=192.168.2.1 [14576]
*Jul 24 13:27:44.368: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35537]
Router#
*Jul 24 13:27:44.369: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35538]
*Jul 24 13:27:44.369: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35539]
*Jul 24 13:27:44.369: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35540]
*Jul 24 13:27:44.371: NAT*: s=10.1.1.1->172.16.2.3, d=192.168.2.1 [14577]
*Jul 24 13:27:44.574: NAT*: s=10.1.1.1->172.16.2.3, d=192.168.2.1 [14578]
Router#
*Jul 24 13:27:46.474: NAT*: s=10.1.1.1->172.16.2.3, d=192.168.2.1 [14579]
*Jul 24 13:27:46.478: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35541]
*Jul 24 13:27:46.478: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35542]
*Jul 24 13:27:46.479: NAT*: s=10.1.1.1->172.16.2.3, d=192.168.2.1 [14580]
Router#sh ip nat tr
Pro Inside global Inside local Outside local Outside global
tcp 172.16.2.3:23 10.1.1.1:23 192.168.2.1:49703 192.168.2.1:49703
tcp 172.16.2.3:23 10.1.1.2:23 192.168.2.1:50421 192.168.2.1:50421
tcp 172.16.2.3:80 10.1.1.3:80 192.168.1.1:26621 192.168.1.1:26621
Router#
トラブルシュート
現在、この設定に関する特定のトラブルシューティング情報はありません。
制限
- グループ内の内部サーバに障害が発生しているかどうかを検出できません。つまり、Cisco IOSは、動作ステータスに関係なく、常にグループ内のサーバにトラフィックを転送します。
- 内部サーバの実際の負荷を判別できないため、ロードバランシングを効率的に実行できません。