IP トンネル
IP トンネルは、ルーティングパスを持たない 2 つのネットワーク間で、カプセル化技術を使用して作成できる通信チャネルです。2 つのネットワーク間で共有されるすべての IP パケットは、別のパケット内にカプセル化され、トンネル経由で送信されます。
Citrix ADCアプライアンスは、次の方法でIPトンネリングを実装します。
-
カプセル化機能としてのCitrix ADC(DSRモードによる負荷分散):異なる国にまたがる複数のデータセンターを持つ組織を考えてみましょう。Citrix ADCは1つの場所にあり、バックエンドサーバーは別の国にあります。本質的に、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は、負荷分散機能のカプセル解除機能として使用することもできます。特に、vserver上の接続数がしきい値を超え、すべての新しい接続がバックアップ仮想サーバーに迂回される場合に使用します。
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
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 アドレスはゼロに設定され、VLAN ヘッダーはデフォルト VLAN を指定します。Citrix ADCトンネルのエンドポイントから送信されるカプセル化(GRE)パケットの形式は次のとおりです。
-
イーサネット。イーサネットヘッダーを伝送しますが、VLAN ヘッダーをドロップします。パケットはトンネル内のVLAN情報を伝送しないため、この設定でネットブリッジにバインドされたトンネルでは、適切なVLANをネットブリッジにバインドする必要があります。これにより、トンネル上のパケットを受信すると、Citrix ADCはこれらのパケットを指定されたVLANに転送できます。トンネルがPBRルールでネクストホップとして設定されている場合、Citrix ADCはトンネルで受信したパケットをルーティングします。Citrix ADCトンネルのエンドポイントから送信されるカプセル化(GRE)パケットの形式は次のとおりです。
-
知的財産権です。イーサネットヘッダーと 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
GRE IPV4 トンネルを介した IPv6 トラフィック
Citrix ADCアプライアンスは、IPV4 GRE トンネルを介したIPv6トラフィックの転送をサポートします。この機能は、分離された IPv6 ネットワーク間の IPv4 インフラストラクチャをアップグレードすることなく、それらのネットワーク間の通信を有効にするために使用できます。
この機能を設定するには、Citrix ADCがIPv6トラフィックの送受信に使用する構成済みのIPv4 GREトンネルにPBR6ルールを関連付けます。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 トンネル TUNNEL-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
IP-IP トンネルを介した応答トラフィックの送信
Citrix ADCアプライアンスは、応答トラフィックを送信元にルーティングするのではなく、IP-IPトンネルを介して送信するように構成できます。デフォルトでは、アプライアンスが別のCitrix ADCまたはサードパーティ製デバイスからIP-IPトンネルを介して要求を受信すると、その応答トラフィックをトンネル経由で送信するのではなく、ルーティングします。ポリシーベースルート(PBR)を使用するか、MAC ベースフォワーディング(MBF)を有効にして、トンネル経由で応答を送信できます。
PBR ルールでは、トラフィックがトンネルを通過する両方のエンドポイントのサブネットを指定します。また、ネクストホップをトンネル名として設定します。応答トラフィックがPBRルールと一致すると、Citrix ADCアプライアンスはトンネルを介してトラフィックを送信します。
または、MBFを有効にしてこの要件を満たすこともできますが、この機能は、Citrix ADCアプライアンスがセッション情報を格納するトラフィック(負荷分散やRNAT構成に関連するトラフィックなど)に制限されます。アプライアンスは、セッション情報を使用して、トンネルを介して応答トラフィックを送信します。
CLI のプロシージャ
CLI を使用して PBR ルールを作成し、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 トンネルを関連付けるには、次の手順を実行します。
- System > Network > PBRsに移動します。[PBR] タブで、 PBR ルールを作成します。
- PBR の作成中に、 ネクストホップタイプ を IP トンネル に、 IP トンネル名 を設定した IP-IP トンネル名に設定します。
GUI を使用して MAC ベースの転送を有効にするには、次の手順を実行します。
- [システム] > [設定] に移動し、[モードと機能] で [モードの構成] をクリックします。
- [モードの設定] ページで、[MAC ベースの転送] を選択します。
設定例
たとえば、2つのCitrix ADCアプライアンス NS1とNS2の間にセットアップされるIPIPトンネルであるNS1-NS2-IPの例を考えてみましょう。
デフォルトでは、NS2 がトンネルを介して受信する要求に対して、NS2 はトンネルを介して(NS1 に)送信するのではなく、応答トラフィックを送信元にルーティングします。
NS2 でポリシーベースルート(PBR)を設定するか、または MAC-Based Forwarding(MBF; MAC ベースフォワーディング)を有効にして、トンネル経由で応答を送信できます。
次の NS2 での構成例では、NS1-NS2-IPIP は IPIP トンネルで、NS1-NS2-IP-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
完了
> 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
完了
> apply pbrs
完了
または、NS2でMBFを有効にすることもできます。この機能は、NS2がセッション情報を格納するトラフィック(たとえば、ロード・バランシングやRNAT構成に関連するトラフィック)に限定されます。
> enable ns mode MBF
完了