RNAT
リバースネットワークアドレス変換(RNAT)では、Citrix ADCアプライアンスは、サーバーによって生成されたパケットの送信元IPアドレスをパブリックNAT IPアドレスに置き換えます。デフォルトでは、アプライアンスは SNIP アドレスを NAT IP アドレスとして使用します。サブネットごとに一意の NAT IP アドレスを使用するようにアプライアンスを設定することもできます。アクセスコントロールリスト(ACL)を使用して RNAT を設定することもできます。[送信元 IP (USIP) を使用]、[サブネット IP (USNIP) を使用]、および [リンクロードバランシング (LLB)] の各モードは、RNAT の動作に影響します。統計情報を表示して、RNAT を監視できます。
注: Citrix ADCアプライアンスでのRNATのエフェメラルポート範囲は、1024~65535です。
RNAT エントリの条件として、ネットワークアドレスまたは拡張 ACL のいずれかを使用できます。
-
ネットワークアドレスを使用する。ネットワークアドレスを使用すると、指定されたネットワークから着信するすべてのパケットに対して RNAT 処理が実行されます。
-
拡張 ACL の使用。ACL を使用すると、ACL に一致するすべてのパケットに対して RNAT 処理が実行されます。ACL に一致するトラフィックに一意の IP アドレスを使用するようにCitrix ADC アプライアンスを設定するには、次の 3 つのタスクを実行する必要があります。
- ACL を設定します。
- 送信元 IP アドレスと宛先ポートを変更するように RNAT を設定します。
- ACL を適用します。
次の図は、ACL が設定された RNAT を示しています。
図1:ACL を使用した RNAT
NAT IP アドレスのタイプには、次の基本的な選択肢があります。
-
SNIP を NAT IP アドレスとして使用する。SNIPをNAT IPアドレスとして使用する場合、Citrix ADCアプライアンスはサーバー生成パケットの送信元IPアドレスをSNIPに置き換えます。したがって、SNIP アドレスはパブリック IP アドレスである必要があります。サブネットIP(USNIP)モードが有効になっている場合、Citrix ADCはサブネットIPアドレス(SNIP)をNAT IPアドレスとして使用できます。
-
一意の IP アドレスを NAT IP アドレスとして使用する。一意のIPアドレスをNAT IPアドレスとして使用する場合、Citrix ADCアプライアンスは、サーバーによって生成されたパケットの送信元IPアドレスを、指定された一意のIPアドレスに置き換えます。一意のIPアドレスは、Citrix ADCが所有するパブリックIPアドレスである必要があります。サブネットに対して複数の NAT IP アドレスが設定されている場合、NAT IP 選択ではラウンドロビンアルゴリズムが使用されます。
この構成を次の図に示します。
図2:一意の IP アドレスを NAT IP アドレスとして使用する
はじめに
RNAT ルールを設定する前に、次の点を考慮してください。
-
Citrix ADCアプライアンスでRNATとUSIP(ソースIPを使用)の両方が構成されている場合、RNATが優先されます。つまり、RNAT ルールに一致するパケットの送信元 IP アドレスは、RNAT ルールの設定に従って置き換えられます。
-
Citrix ADCアプライアンスがサーバーからのトラフィックに対してリンク負荷分散(LLB)とRNATの両方を実行するトポロジでは、アプライアンスはルーターに基づいて送信元IPアドレスを選択します。LLB 設定によって、ルータの選択が決まります。LLB の詳細については、 リンクロードバランシングを参照してください。
RNAT の設定
次の手順では、異なる条件および異なるタイプの NAT IP アドレスを使用する RNAT エントリを作成するための個別のコマンドライン手順を示します。GUIでは、すべてのバリエーションを同じダイアログ・ボックスで構成できるため、GUIユーザーには1つの手順しかありません。
CLI のプロシージャ
CLI を使用して RNAT ルールを作成するには、次の手順を実行します。
コマンドプロンプトで、ルールを作成して構成を確認するには、次のように入力します。
add rnat <name> (<network> | (<aclname> [-redirectPort <port>]))
bind rnat <name> <natIP>@ …
show rnat
CLI を使用して RNAT ルールを変更または削除するには、次の手順を実行します。
-
RNAT ルールを変更するには、次の手順に従います。
set rnat <name> (<aclname> [-redirectPort <port>])
-
RNAT ルールを削除するには、コマンドを入力します。
rm rnat <name>
次のコマンドを使用して、設定を確認します。
show rnat
例:
A network address as the condition and a SNIP address as the NAT IP address:
> add rnat RNAT-1 192.168.1.0 255.255.255.0
Done
A network address as the condition and a unique IP address as the NAT IP address:
> add rnat RNAT-2 192.168.1.0 255.255.255.0
Done
> bind rnat RNAT-2 -natip 10.102.29.50
Done
If instead of a single NAT IP address you specify a range, RNAT entries are created with all the Citrix ADC-owned IP addresses, except the NSIP, that fall within the range specified:
> add rnat RNAT-3 192.168.1.0 255.255.255.0
Done
> bind rnat RNAT-3 -natip 10.102.29.[50-110]
Done
An ACL as the condition and a SNIP address as the NAT IP address:
> add rnat RNAT-4 acl1
Done
An ACL as a condition and a unique IP address as the NAT IP address:
> add rnat RNAT-4 acl1
Done
> bind rnat RNAT-4 -natip 10.102.29.50
Done
If instead of a single NAT IP address you specify a range, RNAT entries are created with all the Citrix ADC-owned IP addresses, except the NSIP, that fall within the range specified:
> add rnat RNAT-5 acl1
Done
> bind rnat RNAT-5 -natip 10.102.29.[50-70]
Done
<!--NeedCopy-->
GUIのプロシージャ
GUI を使用して RNAT エントリを作成するには、次の手順を実行します。
[システム] > [ネットワーク] > [NAT] に移動し、[RNAT] タブをクリックして新しい RNAT ルールを追加するか、既存のルールを編集します。
RNAT の監視
RNAT 統計情報を表示して、IP アドレス変換に関連する問題をトラブルシューティングできます。
次の表に、RNAT および RNAT IP に関連する統計情報を示します。
統計情報 | 説明 |
---|---|
受信バイト数 | RNAT セッション中に受信したバイト数 |
送信されたバイト数 | RNAT セッション中に送信されたバイト数 |
受信したパケット | RNAT セッション中に受信されたパケット |
送信されたパケット | RNAT セッション中に送信されるパケット |
送信されたSyn | RNAT セッション中に送信される接続の要求 |
現在のセッション | 現在アクティブな RNAT セッション |
CLI を使用して RNAT 統計情報を表示するには、次の手順を実行します。
コマンドプロンプトで入力します。
- stat rnat
例:
> stat rnat
RNAT summary
Rate (/s) Total
Bytes Received 0 0
Bytes Sent 0 0
Packets Received 0 0
Packets Sent 0 0
Syn Sent 0 0
Current RNAT sessions -- 0
Done
>
<!--NeedCopy-->
GUI を使用して RNAT を監視するには、次の手順を実行します。
[システム] > [ネットワーク] > [NAT] に移動し、 [RNAT] タブをクリックし、[統計] をクリックします。
RNAT6 の構成
IPv6 パケットのリバースネットワークアドレス変換 (RNAT) ルールは、RNAT6 と呼ばれます。サーバーによって生成されたIPv6パケットがRNAT6ルールで指定された条件に一致すると、アプライアンスはIPv6パケットの送信元IPv6アドレスを構成済みのNAT IPv6アドレスに置き換えてから、宛先に転送します。NAT IPv6アドレスは、Citrix ADCが所有するSNIP6またはVIP6アドレスのいずれかです。
RNAT6 ルールを設定する場合、条件として IPv6 プレフィクスまたは ACL6 を指定できます。
- IPv6 ネットワークアドレスを使用する。IPv6プレフィックスを使用する場合、アプライアンスはIPv6アドレスがプレフィックスと一致するIPv6パケットに対してRNAT処理を実行します。
- ACL6を使用します。ACL6 を使用する場合、アプライアンスは ACL6 で指定された条件に一致する IPv6 パケットに対して RNAT 処理を実行します。
NAT IP アドレスを設定するには、次のいずれかのオプションがあります。
-
RNAT6ルールに対して、Citrix ADCが所有するSNIP6アドレスとVIP6アドレスのセットを指定します。Citrix ADCアプライアンスは、このセットのIPv6アドレスのいずれかを、各セッションのNAT IPアドレスとして使用します。選択はラウンドロビンアルゴリズムに基づいて行われ、セッションごとに行われます。
-
RNAT6ルールには、Citrix ADCが所有するSNIP6アドレスまたはVIP6アドレスを指定しないでください。Citrix ADCアプライアンスは、Citrix ADCが所有するSNIP6アドレスまたはVIP6アドレスのいずれかをNAT IPアドレスとして使用します。選択は、RNAT ルールに一致する IPv6 パケットの宛先となるネクストホップネットワークに基づいて行われます。
CLI のプロシージャ
CLI を使用して RNAT6 ルールを作成するには、次の手順を実行します。
コマンドプロンプトで、ルールを作成して構成を確認するには、次のように入力します。
- add rnat6 <name> (<network> | (<acl6name> [-redirectPort <port>]))
- bind rnat6 <name> <natIP6>@ …
- rnat6
CLI を使用して RNAT6 ルールを変更または削除するには、次の手順を実行します。
- 条件が ACL6 である RNAT6 ルールを変更するには、 set rnat6 <name> コマンドを入力し、続いて redirectPort パラメータの新しい値を入力します。
- RNAT6 ルールを削除するには、 clear rnat6 <name> コマンドを入力します。
GUIのプロシージャ
GUI を使用して RNAT6 ルールを設定するには、次の手順を実行します。
[システム] > [ネットワーク] > [NAT] に移動し、[RNAT6] タブをクリックして新しい RNAT6 ルールを追加するか、既存のルールを編集します。
モニター RNAT6
RNAT6 機能に関連する統計情報を表示して、パフォーマンスを監視したり、RNAT6 機能に関連する問題をトラブルシューティングしたりできます。RNAT6 ルールまたは特定の RNAT6 ルールの統計情報のサマリーを表示できます。統計カウンタには、Citrix ADCアプライアンスが最後に再起動されてからのイベントが反映されます。Citrix ADCアプライアンスが再起動されると、これらのカウンタはすべて0にリセットされます。
次に、RNAT6 機能に関連する統計カウンタの一部 を示します。
- 受信バイト 数-RNAT6 セッション中に受信した合計バイト数。
- 送信バイト 数-RNAT6 セッション中に送信された合計バイト数。
- 受信パケット -RNAT6 セッション中に受信されたパケットの総数。
- 送信されたパケット -RNAT6 セッション中に送信されたパケットの総数。
- 送信されたSyn -RNAT6 セッション中に送信された接続要求の合計数
- 現在のセッション -現在アクティブな RNAT6 セッション
CLI を使用してすべての RNAT6 ルールの要約統計情報を表示するには、次の手順を実行します。
コマンドプロンプトで入力します。
- stat rnat6
CLI を使用して、指定された RNAT6 ルールの統計情報を表示するには、次の手順を実行します。
コマンドプロンプトで入力します。
- stat rnat6 [<rnat6 rule name>]
GUI を使用して RNAT6 統計情報を表示するには、次の手順を実行します。
[システム] > [ネットワーク] > [NAT] に移動し、 [RNAT6] タブをクリックし、[統計] をクリックします。
> stat rnat6
RNAT6 summary
Rate (/s) Total
Bytes Received 178 20644
Bytes Sent 178 20644
Packets Received 5 401
Packets Sent 5 401
Syn Sent 0 2
Current RNAT6 sessions -- 1
Done
<!--NeedCopy-->
RNAT ログエントリのログ開始時刻と接続終了の理由をログに記録する
RNATに関連する問題の診断またはトラブルシューティングのために、Citrix ADCアプライアンスはRNATセッションを閉じるたびにログを記録します。
RNAT セッションのログメッセージは、次の情報で構成されます。
- ログメッセージの送信元であるCitrix ADCが所有するIPアドレス(NSIPアドレスまたはSNIPアドレス)
- ログ作成のタイムスタンプ
- RNAT セッションのプロトコル
- 送信元 IP アドレス
- RNAT IPアドレス
- 宛先 IP アドレス
- RNAT セッションの開始時刻
- RNAT セッションの終了時刻
- このRNATセッションでCitrix ADCアプライアンスによって送信された合計バイト数
- このRNATセッションでCitrix ADCアプライアンスが受信した合計バイト数
- RNAT セッションが終了する理由。Citrix ADCアプライアンスは、アプライアンスのTCPプロキシ(TCPプロキシ無効)を使用しないTCP RNATセッションの終了理由を記録します。TCP RNAT セッションで記録される終了理由のタイプを次に示します。
- TCP FIN。送信元デバイスまたは宛先デバイスから TCP FIN が送信されたため、RNAT セッションが閉じられました。
- TCP RST。RNAT セッションは、送信元デバイスまたは宛先デバイスによって送信された TCP リセットが原因で閉じられました。
- TIMEOUT。RNAT セッションがタイムアウトしました。
次の表に、RNAT セッションのログエントリの例を示します。
エントリのタイプ | サンプルログエントリ |
---|---|
UDP RNAT セッションのサンプルログエントリ | Dec 1 15:28:12 |
TCP RNAT セッションのサンプルログエントリ。ログエントリは、TCPリセットのためにセッションが閉じていることを示している | Dec 1 15:29:59 |
TCP RNAT セッションのサンプルログエントリ。ログエントリは、セッションがタイムアウトしたことを示しています。 | Dec 1 15:30:12 |
RNAT のステートフル接続フェールオーバー
接続フェイルオーバーは、分散環境にデプロイされたアプリケーションへのアクセスが中断されるのを防ぐのに役立ちます。Citrix ADCアプライアンスは、Citrix ADC高可用性(HA)セットアップのRNATルールに関連する接続のステートフル接続フェイルオーバーをサポートするようになりました。HA セットアップでは、接続フェールオーバー(または接続ミラーリング)とは、フェールオーバーが発生したときに、確立された TCP または UDP 接続をアクティブに保つプロセスを指します。
プライマリアプライアンスは、セカンダリアプライアンスにメッセージを送信して、RNAT 接続に関する現在の情報を同期します。セカンダリアプライアンスは、フェールオーバーの場合にのみこの接続情報を使用します。フェイルオーバーが発生すると、新しいプライマリCitrix ADCアプライアンスは、フェイルオーバー前に確立された接続に関する情報を保持するため、フェイルオーバー後もそれらの接続を処理し続けます。クライアントの観点からは、このフェイルオーバーは透過的です。移行期間中、クライアントとサーバーは短時間の中断や再送信が発生することがあります。
接続フェイルオーバーは、RNAT ルールごとに有効にできます。RNAT ルールで接続フェイルオーバーを有効にするには、CLI または GUI を使用して、特定の RNAT ルールの connFailover(接続フェイルオーバー)パラメータを有効にします。
CLI を使用して RNAT ルールの接続フェイルオーバーを有効にするには、次の手順を実行します。
コマンドプロンプトで入力します。
set rnat <name> -connfailover (ENABLED | DISABLED)
show rnat
GUI を使用して RNAT ルールの接続フェイルオーバーを有効にするには、次の手順を実行します。
- [ システム ] > [ ネットワーク ] > [ NAT] に移動し、[ RNAT ] タブをクリックします。
- 新しい RNAT 規則の追加中、または既存の規則の編集中に [接続フェールオーバー] を選択します。
サーバーへの RNAT 接続用の送信元ポートを予約する
1つ以上のRNAT IPアドレスとプロキシポートの使用パラメータが無効になっているRNAT構成にヒットするリクエストの場合、Citrix ADCアプライアンスはRNAT IPアドレスとRNAT要求のソースポートのいずれかを使用してサーバーに接続します。13.0 47.x ビルドより前のバージョンでは、同じソースポートが他の接続で既に使用されている場合、サーバーへの RNAT 接続 (RNAT クライアントのソースポートを使用) は失敗します。
-
送信元ポートが 1024 未満です。デフォルトでは、Citrix ADCアプライアンスはCitrix ADC所有のIPアドレス(RNAT IPアドレスを含む)の最初の1024ポートを予約します。13.0 47.x ビルドより前のバージョンでは、RNAT 要求の送信元ポートが 1024 以下の場合、サーバーへの RNAT 接続 (RNAT クライアントのソースポートを使用) は失敗します。13.0 47.x ビルドでは、RNAT 要求の送信元ポートが 1024 以下であっても、サーバーへの RNAT 接続 (RNAT クライアントのソースポートを使用) は成功します。
-
1024 より大きい送信元ポート。13.0 47.x ビルドより前のバージョンでは、同じソースポートが他の接続で既に使用されている場合、サーバーへの RNAT 接続 (RNAT クライアントのソースポートを使用) は失敗します。13.0 47.x ビルドでは、RNAT 設定の一部として、
Retain Source Port range
(retainsourceportrange
) パラメータで RNAT クライアントソースポートの範囲を指定できます。Citrix ADCアプライアンスは、サーバーへのRNAT接続にのみ使用されるように、RNAT IPアドレス上のこれらのRNATクライアントソースポートを予約します。
RNAT セッションの削除
不要なRNATセッションや非効率的なRNATセッションをCitrix ADCアプライアンスから削除できます。アプライアンスは、これらのセッションに割り当てられたリソース(NAT IP アドレスのポートやメモリなど)をただちに解放し、リソースを新しいセッションで使用できるようにします。アプライアンスは、これらの削除されたセッションに関連する後続のパケットもすべてドロップします。Citrix ADCアプライアンスからすべてのRNATセッションまたは選択したRNATセッションを削除できます。
CLI を使用してすべての RNAT セッションをクリアするには、次の手順を実行します。
コマンドプロンプトで入力します。
- flush rnatsession
CLI を使用して選択的 RNAT セッションをクリアするには、次の手順を実行します。
コマンドプロンプトで入力します。
- flush rnatsession ((-network <ip_addr> -netmask <netmask>) | -natIP <ip_addr> | -aclname <string>)
GUI を使用してすべての RNAT セッションまたは選択的 RNAT セッションをクリアするには、次の手順を実行します。
- システムに移動 > 通信網 > NAT、 をクリックし、[ RNAT ]タブをクリックします。
- [Actions] メニューで [Flush RNAT Sessions] をクリックして、すべての RNAT セッションまたは選択的な RNAT セッションを削除します(たとえば、特定の RNAT IP を持つ RNAT セッションの削除、または特定のネットワークまたは ACL ベースの RNAT ルールに属する RNAT セッションの削除)。
構成例:
Clear all RNAT sessions existing on a Citrix ADC appliance
> flush rnatsession
Done
Clear all RNAT sessions belonging to network based RNAT rules that has 203.0.113.0/24 network as the matching condition.
> flush rnatsession -network 203.0.113.0 -netmask 255.255.255.0
Done
Clear all RNAT sessions with RNAT IP 192.0.2.90.
> flush rnatsession -natIP 192.0.2.90
Done
Clear all RNAT sessions belonging to ACL based RNAT rules that has ACL-RNAT-1 as the matching condition.
> flush rnatsession -aclname ACL-RNAT-1
Done
<!--NeedCopy-->