RNAT
逆ネットワークアドレス変換(RNAT)では、NetScalerアプライアンスは、サーバーによって生成されたパケット内の送信元IPアドレスをパブリックNAT IPアドレスに置き換えます。デフォルトでは、アプライアンスは NAT IP アドレスとして SNIP アドレスを使用します。サブネットごとに一意の NAT IP アドレスを使用するようにアプライアンスを構成することもできます。アクセスコントロールリスト(ACL)を使用して RNAT を設定することもできます。ソース IP を使用 (USIP)、サブネット IP を使用 (USNIP)、およびリンクロードバランシング (LLB) の各モードは、RNAT の動作に影響します。統計情報を表示して RNAT を監視できます。
注: NetScalerアプライアンスのRNATのエフェメラルポート範囲は1024〜65535です。
ネットワークアドレスまたは拡張 ACL のいずれかを RNAT エントリの条件として使用できます。
-
ネットワークアドレスを使用する。ネットワークアドレスを使用すると、指定されたネットワークから送信されるすべてのパケットで RNAT 処理が実行されます。
-
拡張 ACL を使用する。ACL を使用すると、その ACL と一致するすべてのパケットで RNAT 処理が実行されます。ACLと一致するトラフィックに固有のIPアドレスを使用するようにNetScalerアプライアンスを構成するには、次の3つのタスクを実行する必要があります。
- ACL を設定します。
- 送信元 IP アドレスと宛先ポートを変更するように RNAT を設定します。
- ACL を適用します。
次の図は、ACL で設定された RNAT を示しています。
図1:ACL を使用した RNAT
NAT IP アドレスのタイプには、次の基本的な選択肢があります。
-
SNIP を NAT IP アドレスとして使用します。SNIPをNAT IPアドレスとして使用する場合、NetScalerアプライアンスはサーバーで生成されたパケットの送信元IPアドレスをSNIPに置き換えます。したがって、SNIP アドレスはパブリック IP アドレスでなければなりません。[サブネットIP(USNIP)を使用] モードが有効になっている場合、NetScalerはサブネットIPアドレス(SNIP)をNAT IPアドレスとして使用できます。
-
固有の IP アドレスを NAT IP アドレスとして使用します。NAT IPアドレスとして固有のIPアドレスを使用する場合、NetScalerアプライアンスはサーバーが生成したパケットの送信元IPアドレスを、指定された固有のIPアドレスに置き換えます。固有のIPアドレスは、NetScalerが所有するパブリックIPアドレスである必要があります。サブネットに複数の NAT IP アドレスが設定されている場合、NAT IP 選択はラウンドロビンアルゴリズムを使用します。
この構成を次の図に示します。
図2:固有の IP アドレスを NAT IP アドレスとして使用する
はじめに
RNAT ルールを設定する前に、次の点を考慮してください。
-
NetScalerアプライアンスでRNATとUse Source IP(USIP)の両方が構成されている場合、RNATが優先されます。つまり、RNAT ルールに一致するパケットの送信元 IP アドレスは、RNAT ルールの設定に従って置き換えられます。
-
NetScalerアプライアンスがサーバーからのトラフィックに対してリンク負荷分散(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 NetScaler-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 NetScaler-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 sent | 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アドレスは、NetScaler が所有するSNIP6またはVIP6アドレスの1つです。
RNAT6 ルールを設定する場合、条件として IPv6 プレフィックスまたは ACL6 のいずれかを指定できます。
- IPv6 ネットワークアドレスを使用する。IPv6プレフィックスを使用する場合、アプライアンスはIPv6アドレスがプレフィックスと一致するIPv6パケットに対してRNAT処理を実行します。
- ACL6 を使用する。ACL6 を使用する場合、アプライアンスは ACL6 で指定された条件と一致する IPv6 パケットに対して RNAT 処理を実行します。
NAT IP アドレスを設定するには、次のいずれかのオプションがあります。
-
RNAT6ルールには、NetScalerが所有するSNIP6アドレスとVIP6アドレスのセットを指定します。NetScalerアプライアンスは、このセットのIPv6アドレスのいずれか1つを各セッションのNAT IPアドレスとして使用します。選択はラウンドロビンアルゴリズムに基づいており、セッションごとに行われます。
-
RNAT6ルールには、NetScalerが所有するSNIP6アドレスまたはVIP6アドレスを指定しないでください。NetScalerアプライアンスは、NetScalerが所有するSNIP6またはVIP6アドレスのいずれかをNAT IPアドレスとして使用します。選択は、RNAT ルールに一致する IPv6 パケットの宛先となるネクストホップネットワークに基づいて行われます。
CLI のプロシージャ
CLI を使用して RNAT6 ルールを作成するには:
コマンドプロンプトで、ルールを作成して構成を確認するには、次のように入力します。
- add rnat6 <name> (<network> | (<acl6name> [-**redirectPort** \<port>]))
- bind rnat6 <name> <natIP6>@ …
- show rnat6
CLI を使用して RNAT6 ルールを変更または削除するには:
- 条件が ACL6 である RNAT6 ルールを変更するには、set rnat6コマンドを入力し、続けて RedirectPort パラメータに新しい値を入力します。 <name>
- <name>RNAT6 ルールを削除するには、 clear rnat6 コマンドを入力します。
GUIのプロシージャ
GUI を使用して RNAT6 ルールを設定するには:
[ システム ] > [ ネットワーク ] > [ NAT] に移動し、[ RNAT6 ] タブをクリックして新しい RNAT6 ルールを追加するか、既存のルールを編集します。
RNAT 6 モニター
RNAT6 機能に関連する統計情報を表示して、パフォーマンスを監視したり、RNAT6 機能に関連する問題をトラブルシューティングしたりできます。RNAT6 ルールまたは特定の RNAT6 ルールの統計の概要を表示できます。統計カウンターには、NetScalerアプライアンスが最後に再起動されてからのイベントが反映されます。NetScalerアプライアンスを再起動すると、これらのカウンタはすべて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 ログエントリに開始時刻と接続終了理由を記録
NetScalerアプライアンスは、RNATに関連する問題の診断やトラブルシューティングのために、終了するたびにRNATセッションをログに記録します。
RNAT セッションのログメッセージは、次の情報で構成されます。
- ログメッセージの送信元となるNetScaler所有のIPアドレス(NSIPアドレスまたはSNIPアドレス)
- ログ作成のタイムスタンプ
- RNAT セッションのプロトコル
- 送信元 IP アドレス
- RNAT IP アドレス
- 宛先 IP アドレス
- RNAT セッションの開始時刻
- RNAT セッションの終了時刻
- このRNATセッションでNetScalerアプライアンスによって送信された合計バイト数
- このRNATセッションでNetScalerアプライアンスが受信した合計バイト数
- RNAT セッションの終了の理由。NetScalerアプライアンスは、アプライアンスのTCPプロキシを使用しない(TCPプロキシが無効になっている)TCP RNATセッションの終了理由を記録します。TCP RNAT セッションについてログに記録されるクローズ理由の種類は次のとおりです。
- TCP フィン。送信元または宛先デバイスのいずれかから TCP FIN が送信されたため、RNAT セッションが終了しました。
- TCP RST。送信元デバイスまたは宛先デバイスのいずれかから TCP リセットが送信されたため、RNAT セッションが終了しました。
- タイムアウト。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 のステートフル接続フェイルオーバー
接続フェイルオーバーは、分散環境に展開されているアプリケーションへのアクセスの中断を防ぐのに役立ちます。NetScalerアプライアンスは、NetScaler高可用性(HA)セットアップのRNATルールに関連する接続のステートフル接続フェイルオーバーをサポートするようになりました。HA セットアップでは、接続フェイルオーバー (または接続ミラーリング) とは、フェイルオーバーが発生しても、確立された TCP または UDP 接続をアクティブに保つプロセスを指します。
プライマリアプライアンスはセカンダリアプライアンスにメッセージを送信して、RNAT 接続に関する現在の情報を同期します。セカンダリアプライアンスは、フェイルオーバーが発生した場合にのみこの接続情報を使用します。フェイルオーバーが発生すると、新しいプライマリNetScalerアプライアンスはフェイルオーバー前に確立された接続に関する情報を保持するため、フェイルオーバー後もそれらの接続を引き続き提供します。クライアントから見ると、このフェイルオーバーは透過的です。移行期間中、クライアントとサーバーで短時間の中断と再送信が発生する可能性があります。
接続フェイルオーバーは、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アドレスとUse Proxy portパラメーターが無効になっているRNAT構成にヒットするリクエストの場合、NetScalerアプライアンスはRNAT IPアドレスとRNATリクエストの送信元ポートのいずれかをサーバーに接続します。13.0 47.x ビルドより前のバージョンでは、同じソースポートが他の接続で既に使用されている場合、サーバーへの RNAT 接続 (RNAT クライアントのソースポートを使用) は失敗します。
-
送信元ポートが 1024 未満です。デフォルトでは、NetScalerアプライアンスはNetScalerが所有する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 クライアントソースポートの範囲を指定できます。NetScalerアプライアンスは、RNAT IPアドレス上のこれらのRNATクライアント送信元ポートを、サーバーへのRNAT接続にのみ使用するように予約します。
RNAT セッションの削除
不要または非効率的なRNATセッションをNetScalerアプライアンスから削除できます。アプライアンスは、これらのセッションに割り当てられたリソース(NAT IPアドレスのポート、メモリなど)をすぐに解放し、リソースを新しいセッションで使用できるようにします。アプライアンスは、削除されたセッションに関連する後続のパケットもすべてドロップします。NetScalerアプライアンスからすべてまたは選択したRNATセッションを削除できます。
CLI を使用してすべての RNAT セッションをクリアするには:
コマンドプロンプトで入力します。
- フラッシュランセッション
CLI を使用して選択的な RNAT セッションをクリアするには:
コマンドプロンプトで入力します。
- flush rnatsession ((-network <ip_addr> -netmask <netmask>) | -natIP <ip_addr> | -aclname <string>)
GUI を使用してすべての RNAT セッションまたは選択的な RNAT セッションをクリアするには:
- [ システム ] > [ ネットワーク ] > [ NAT] に移動し、[ RNAT ] タブをクリックします。
- アクションメニューで 、「 Flash RNAT Sessions 」をクリックして、すべてまたは一部のRNAT セッションを削除します(たとえば、特定の RNAT IP、特定のネットワークまたは ACL ベースの RNAT ルールに属する RNAT セッションを削除するなど)。
構成例:
Clear all RNAT sessions existing on a NetScaler 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-->