IP トンネル
IPトンネルは、ルーティングパスのない2つのネットワーク間で、カプセル化技術を使用して作成できる通信チャネルです。2 つのネットワーク間で共有されるすべての IP パケットは、別のパケットにカプセル化され、トンネル経由で送信されます。
Citrix ADCアプライアンスは、次の方法でIPトンネリングを実装します。
-
カプセル化ツールとしてのCitrix ADC(DSRモードによる負荷分散):さまざまな国に複数のデータセンターを持つ組織を考えてみましょう。Citrix ADCはある場所にあり、バックエンドサーバーは別の国にあります。基本的に、Citrix ADCとバックエンドサーバーは異なるネットワーク上にあり、ルーターを介して接続されています。
このCitrix ADCでダイレクトサーバーリターン(DSR)を構成すると、ソースサブネットから送信されるパケットはCitrix ADCによってカプセル化され、ルーターとトンネルを介して適切なバックエンドサーバーに送信されます。バックエンドサーバーは、パケットがCitrix ADCを通過することを許可せずに、パケットをカプセル化解除してクライアントに直接応答します。
-
デカプセル化ツールとしてのCitrix ADC: それぞれがCitrix ADCとバックエンドサーバーを備えた複数のデータセンターを持つ組織を考えてみましょう。パケットがデータセンターAからデータセンターBに送信される場合、通常、ルーターや別のCitrix ADCなどの仲介者を介して送信されます。Citrix ADCはパケットを処理し、パケットをバックエンドサーバーに転送します。ただし、カプセル化されたパケットを送信する場合、Citrix ADCはパケットをバックエンドサーバーに送信する前にパケットをカプセル化解除できる必要があります。Citrix ADCをデカプセル化装置として機能させるには、ルーターとCitrix ADCの間にトンネルを追加します。追加のヘッダー情報を含むカプセル化されたパケットがCitrix ADCに到達すると、データパケットはカプセル化解除されます。つまり、追加のヘッダー情報が削除され、パケットは適切なバックエンドサーバーに転送されます。
Citrix ADCは、負荷分散機能のデカプセル化機能としても使用できます。特に、仮想サーバー上の接続数がしきい値を超え、すべての新しい接続がバックアップ仮想サーバーに転送されるシナリオではそうです。
IPトンネル機能は、Citrix ADC プレミアムエディションライセンスで使用できます。Citrix ADC エディションのライセンスとCitrix ADC 機能マトリックスの詳細については、 Citrix ADC エディションのデータシートを参照してください。
IP トンネルの設定
Citrix ADCアプライアンスでのIPトンネルの構成は、IPトンネルエンティティの作成で構成されます。IP トンネルエンティティは、ローカルおよびリモートのトンネルエンドポイント IP アドレスと、IP トンネルに使用するプロトコルを指定します。
注: クラスタ設定で IP トンネルを設定する場合、ローカル IP アドレスはストライプされた SNIP アドレスでなければなりません。
CLI のプロシージャ
CLI を使用して IP トンネルを作成するには:
コマンドプロンプトで次のように入力します。
- add iptunnel <name> <remote> <remoteSubnetMask> <local> -type -protocol (ipoverip | GRE)
- show iptunnel
CLI を使用して IP トンネルを削除するには:
IP トンネルを削除するには、 rm iptunnel コマンドとトンネルの名前を入力します。
CLI を使用して IPv6 トンネルを作成するには:
コマンドプロンプトで次のように入力します。
- add ip6tunnel <name> <remoteIp> <local>
- show ip6tunnel
CLI を使用して IPv6 トンネルを削除するには:
IPv6 トンネルを削除するには、 rm ip6tunnel コマンドとトンネルの名前を入力します。
GUIのプロシージャ
GUI を使用して IP トンネルを作成するには:
[ システム ] > [ ネットワーク ] > [ IP トンネル] に移動し、新しい IP トンネルを追加します。
GUI を使用して IPv6 トンネルを作成するには:
[ システム ] > [ ネットワーク ] > [ IP トンネル ] > [ IPv6 トンネル] に移動し、新しい IPv6 トンネルを追加します。
IP トンネルをグローバルにカスタマイズする
送信元 IP アドレスをグローバルに指定することで、すべてのトンネルに共通の送信元 IP アドレスを割り当てることができます。また、フラグメンテーションはCPUを大量に消費するため、Citrix ADCアプライアンスがフラグメンテーションを必要とするパケットをドロップするようにグローバルに指定できます。また、CPU のしきい値に達していない限りすべてのパケットをフラグメント化したい場合は、CPU しきい値をグローバルに指定できます。
CLI のプロシージャ
CLI を使用して IP トンネルをグローバルにカスタマイズするには:
コマンドプロンプトで入力します。
-
set ipTunnelParam -srcIP <sourceIPAddress> -srcIPRoundRobin ( YES | NO )-dropFrag [**YES** | **NO**] -dropFragCpuThreshold <Positive integer>
-
show ipTunnelParam
例:
> set iptunnelparam –srcIP 12.12.12.22 -dropFrag Yes –dropFragCpuThreshold 50
Done
> set iptunnelparam -srcIPRoundRobin YES -dropFrag Yes –dropFragCpuThreshold 50
Done
<!--NeedCopy-->
CLI を使用して IPv6 トンネルをグローバルにカスタマイズするには:
コマンドプロンプトで入力します。
-
set ip6tunnelparam -srcIP <IPv6Address> -srcIPRoundRobin ( YES | NO )-dropFrag [**YES** | **NO**] -dropFragCpuThreshold <Positive integer>
-
show ip6tunnelparam
GUIのプロシージャ
GUI を使用して IP トンネルをグローバルにカスタマイズするには:
[ システム ] > [ ネットワーク] に移動し、[設定] グループで [ IPv4 トンネルのグローバル設定] をクリックします。
- [ システム ] > [ ネットワーク] に移動し、[ 設定 ] グループで [ IPv6 トンネルのグローバル設定] をクリックします。
- IP トンネルグローバルパラメータの設定ダイアログボックスで 、パラメータを設定します。
GUI を使用して IPv6 トンネルをグローバルにカスタマイズするには:
- [ システム ] > [ ネットワーク] に移動し、[ 設定 ] グループで [ IPv6 トンネルのグローバル設定] をクリックします。
- IP トンネルグローバルパラメータの設定ダイアログボックスで 、パラメータを設定します。
GRE IP トンネルの GRE ペイロードオプション
設定されたGRE IPトンネルの場合、Citrix ADCアプライアンスは、イーサネットヘッダーとVLANヘッダー(dot1q VLANタグ)を含むレイヤー2パケット全体をカプセル化します。Citrix ADCアプライアンスと一部のサードパーティデバイス間のIP GREトンネルは、これらのサードパーティデバイスがレイヤー2パケットヘッダーの一部または一部を処理するようにプログラムされていないため、安定していない可能性があります。Citrix ADCアプライアンスとサードパーティデバイス間の安定したIP GREトンネルを設定するには、GRE IPトンネルコマンドセットのGREペイロードパラメータを使用できます。GRE ペイロード設定は、IPsec トンネルを使用する GRE にも適用できます。
パケットが GRE トンネルを介して送信される前に、次のいずれかを実行するように GRE ペイロードパラメータを設定できます。
-
DOT1Q 搭載のイーサネットイーサネットヘッダーと VLAN ヘッダーを伝送します。これがデフォルトの設定です。ネットブリッジにバインドされたトンネルの場合、内部イーサネットヘッダーとVLANヘッダーには、Citrix ADCアプライアンスのARPとブリッジテーブルからの情報が含まれます。PBR ルールのネクストホップとして設定されたトンネルでは、内部イーサネットの宛先 MAC アドレスは 0 に設定され、VLAN ヘッダーはデフォルト VLAN を指定します。Citrix ADC トンネルエンドポイントから送信されるカプセル化(GRE)パケットの形式は次のとおりです。
-
イーサネット。イーサネットヘッダーは伝送しますが、VLAN ヘッダーはドロップします。パケットはトンネル内でVLAN情報を伝送しないため、この設定でネットブリッジにバインドされているトンネルの場合、適切なVLANをネットブリッジにバインドして、トンネル上でパケットを受信すると、Citrix ADCがこれらのパケットを指定されたVLANに転送できるようにする必要があります。トンネルがPBRルールでネクストホップとして設定されている場合、Citrix ADCはトンネルで受信したパケットをルーティングします。Citrix ADC トンネルエンドポイントから送信されるカプセル化(GRE)パケットの形式は次のとおりです。
-
IP。イーサネットヘッダーと VLAN ヘッダーをドロップします。この設定のトンネルはレイヤ 2 ヘッダーを伝送しないため、これらのトンネルをネットブリッジにバインドすることはできませんが、PBR ルールではネクストホップとして設定できます。パケットを受信したピアトンネルエンドポイントデバイスは、パケットを消費またはルーティングします。Citrix ADC トンネルエンドポイントから送信されるカプセル化(GRE)パケットの形式は次のとおりです。
CLI を使用して GRE IP トンネル内のパケットのレイヤ 2 ヘッダーをドロップするには、次の手順を実行します。
- add ipTunnel <name> <remote> <remoteSubnetMask> <local> [-**protocol** \<GRE> [-**vlan** \<positive_integer>]] [-**grepayload** \<grepayload>] [-**ipsecProfileName** \<string>]
- show iptunnel <tunnelname>
例:
> add iptunnel IPTUNNEL-1 203.0.113.133 255.255.255.0 198.51.100.15 –protocol GRE –grepayload Ethernet -ipsecProfileName IPTUNNEL-IPSEC-1
Done
<!--NeedCopy-->
GRE IPV4 トンネル経由の IPv6 トラフィック
Citrix ADCアプライアンスは、IPV4 GREトンネルを介したIPv6トラフィックの転送をサポートしています。この機能を使用すると、隔離された IPv6 ネットワーク間の IPv4 インフラストラクチャをアップグレードしなくても、隔離された IPv6 ネットワーク間の通信が可能になります。
この機能を設定するには、PBR6ルールを、Citrix ADCがIPv6トラフィックを送受信できるようにする構成済みのIPv4 GREトンネルに関連付けます。PBR6 ルールの送信元 IPv6 アドレスと宛先 IPv6 アドレスのパラメータは、トラフィックが IPv4 GRE トンネルを通過する IPv6 ネットワークを指定します。
注: IPsec プロトコルは、IPv6 パケットを転送するように設定された GRE IPv4 トンネルではサポートされていません。
CLI を使用して GRE IPv4 トンネルを作成するには:
コマンドプロンプトで入力します。
- add ipTunnel <name> <remote> <remoteSubnetMask> <local> -protocol GRE
- show ipTunnel <name>
CLI を使用して PBR6 ルールを GRE IPv4 トンネルに関連付けるには:
- add ns pbr6 <pbrName> ALLOW -srcIPv6 <network-range> -dstIPv6 <network-range> -ipTunnel <tunnelName>
- show pbr
設定例
次の設定例では、リモートトンネルエンドポイント IP アドレス 10.10.6.30 とローカルトンネルエンドポイント IP アドレス 10.10.5.30 で GRE IP トンネル V6onv4 が作成されています。その後、トンネルは pbr6 PBR6-v6onv4 にバインドされます。SRCIPv6 はローカルエンドポイントに接続された IPv6 ネットワークを指定し、DestIPv6 はリモートエンドポイントに接続された IPv6 ネットワークを指定します。これらの Ipv6 ネットワークからのトラフィックは、GRE IPv4 トンネルを通過できます。
> add ipTunnel TUNNEL-V6onV4 10.10.6.30 255.255.255.255 10.10.5.30 -protocol GRE
-ipsecProfileName None
Done
> add ns pbr6 PBR6-V6onV4 ALLOW -srcIPv6 = 2001:0db8:1::1-2001:0db8:1::255 -destIPv6 =
1-2001:0db8:4::255 -ipTunnel TUNNEL-V6onV4
<!--NeedCopy-->
IP-IP トンネル経由の応答トラフィックの送信
Citrix ADCアプライアンスは、応答トラフィックを送信元に戻すのではなく、IP-IPトンネルを介して送信するように構成できます。デフォルトでは、アプライアンスはIP-IPトンネルを介して別のCitrix ADCまたはサードパーティデバイスからの要求を受信すると、応答トラフィックをトンネル経由で送信する代わりにルーティングします。ポリシーベースルート (PBR) を使用するか、MAC ベース転送 (MBF) を有効にして、トンネル経由で応答を送信できます。
PBR ルールでは、トラフィックがトンネルを通過する両方のエンドポイントのサブネットを指定します。また、ネクストホップをトンネル名として設定します。応答トラフィックがPBRルールと一致すると、Citrix ADCアプライアンスはトラフィックをトンネル経由で送信します。
または、MBFを有効にしてこの要件を満たすこともできますが、機能はCitrix ADCアプライアンスがセッション情報を保存するトラフィック(負荷分散やRNAT 構成に関連するトラフィックなど)に限定されます。アプライアンスはセッション情報を使用して、トンネルを介して応答トラフィックを送信します。
CLI のプロシージャ
CLI を使用して PBR ルールを作成し、IP-IP トンネルをそれに関連付けるには:
コマンドプロンプトで入力します。
- add ns pbr <pbr_name> ALLOW -srcIP = <local_subnet_range> -destIP = <remote_subnet_range> -ipTunnel <tunnel_name>
- apply ns pbrs
- show ns pbr <pbr_name>
CLI を使用して MAC ベースの転送を有効にするには:
コマンドプロンプトで入力します。
- enable ns mode MBF
- show ns mode
GUIのプロシージャ
GUI を使用して PBR ルールを作成し、その PBR ルールに IP-IP トンネルを関連付けるには:
- [ システム ] > [ ネットワーク ] > [ PBR] に移動します。 PBR タブで PBR ルールを作成します。
- PBR を作成するときに、 ネクストホップタイプをIP トンネルに、IP トンネル名を設定した IP-IP トンネル名に設定します。
GUI を使用して MAC ベースの転送を有効にするには:
- [ システム ] > [ 設定]に移動し、[ モードと機能] で [ モードの設定] をクリックします。
- 「 モードの設定 」ページで、「 MAC ベースの転送」を選択します。
サンプル構成
NS1-NS2-IPIPというIPIPトンネルの例を考えてみましょう。このトンネルは、2つのCitrix ADCアプライアンスNS1とNS2の間にセットアップされています。
デフォルトでは、NS2がトンネルを介して受信したリクエストでは、応答トラフィックをトンネル経由で(NS1に)送信するのではなく、ソースにルーティングします。
ポリシーベースルート (PBR) を設定するか、NS2 で MAC ベース転送 (MBF) を有効にして、トンネル経由で応答を送信できるようにすることができます。
次の NS2 の設定例では、NS1-NS2-IPIP は IPIP トンネルで、NS1-NS2-IPIP-PBR は PBR ルールです。NS2がトンネル経由で受信した要求(内部送信元IPアドレスが10.102.147.0-10.102.147.255の範囲で、内部宛先IPアドレスが10.102.147.0-10.102.147.255の範囲にある)の場合、NS2は対応する応答を送信元に転送する代わりに、対応する応答をトンネル経由で(NS1に)送信します。この機能は、PBR ルールに一致するトラフィックに限定されます。
> add iptunnel NS1-NS2-IPIP 192.0.2.99 255.255.255.255 203.0.113.99–protocol IPIP
Done
> add pbr NS1-NS2-IPIP-PBR -srcIP 10.102.147.0-10.102.147.255 –destIP 10.20.1.0-10.20.1.255 –ipTunnel NS1-NS2-IPIP
Done
> apply pbrs
Done
<!--NeedCopy-->
または、NS2でMBFを有効にすることもできます。この機能は、NS2がセッション情報を格納するトラフィック(たとえば、ロード・バランシングやRNAT構成に関連するトラフィック)に限定されます。
> enable ns mode MBF
Done
<!--NeedCopy-->