ADC

高度なポリシー式:IP アドレスと MAC アドレス、スループット、VLAN ID

IPv4 および IPv6 アドレス、MAC アドレス、IP サブネット、有用なクライアントおよびサーバデータ(インターフェイスポート(Rx、Tx、および RxTx)のスループットレート、およびパケットの受信に使用される VLAN の ID を返す高度なポリシー式プレフィクスを使用できます。その後、さまざまな演算子を使用して、これらの式プレフィックスによって返されるデータを評価できます。

IP アドレスと IP サブネットの式

高度なポリシー式を使用して、インターネットプロトコルバージョン 4 (IPv4) またはインターネットプロトコルバージョン 6 (IPv6) 形式のアドレスとサブネットを評価できます。IPv6 アドレスおよびサブネットの式プレフィックスには、プレフィックスに IPv6 が含まれます。IPv4 アドレスおよびサブネットの式プレフィックスには、プレフィックスに IP が含まれます。次に、要求が特定の IPv4 サブネットから発信されたかどうかを識別する式の例を示します。

client.ip.src.in_subnet(147.1.0.0/16)
<!--NeedCopy-->

次に、パケットの受信元のサブネットを調べ、ホストヘッダーで書き換えアクションを実行する書き換えポリシーの例を 2 つ示します。これら 2 つのポリシーが設定されている場合、実行される書き換えアクションは要求のサブネットによって異なります。これら 2 つのポリシーは、IPv4 アドレス形式の IP アドレスを評価します。

- add rewrite action URL1-rewrite-action replace "http.req.header("Host")" ""www.mycompany1.com""
- add rewrite policy URL1-rewrite-policy "http.req.header("Host").contains("www.test1.com") && client.ip.src.in_subnet(147.1.0.0/16)" URL1-rewrite-action
- add rewrite action URL2-rewrite-action replace "http.req.header("Host")" ""www.mycompany2.com""
- add rewrite policy URL2-rewrite-policy "http.req.header("Host").contains("www.test2.com") && client.ip.src.in_subnet(10.202.0.0/16)" URL2-rewrite-action
<!--NeedCopy-->

上記の例は、Citrix ADCコマンドラインインターフェイス(CLI)で入力するコマンドです。したがって、各引用符の前にバックスラッシュ(\)を付ける必要があります。詳細については、「 ポリシーでの高度なポリシー式の設定」を参照してください。

IPV4 アドレスおよび IP サブネットのプレフィクス

次の表では、IPv4 アドレス、サブネット、および IPv4 アドレスのセグメントを返すプレフィックスについて説明します。IPv4 アドレスに固有の数値演算子と演算子を、これらのプレフィックスとともに使用できます。数値演算の詳細については、「式接頭辞の基本操作」および「数値の複合演算」を参照してください。

表1. IP アドレスと MAC アドレスを評価するプレフィクス

説明
CLIENT.IP.SRC 現在のパケットの送信元 IP を IP アドレスまたは数値で返します。
CLIENT.IP.DST 現在のパケットの宛先 IP を IP アドレスまたは数値で返します。
SERVER.IP.SRC 現在のパケットの送信元 IP を IP アドレスまたは数値で返します。
SERVER.IP.DST 現在のパケットの宛先 IP を IP アドレスまたは数値で返します。

IPV4 アドレスの操作

IPV4 操作のプレフィクス表では、IPv4 アドレスを返すプレフィクスで使用できる演算子について説明します。

IPv6 式について

IPv6 アドレス形式では、古い IPv4 形式よりも柔軟性が高くなります。IPv6 アドレスは 16 進数形式です (RFC 2373)。次の例では、例 1 は IPv6 アドレス、例 2 は IPv6 アドレスを含む URL、例 3 には IPv6 アドレスとポート番号が含まれています。

例1:

9901:0ab1:22a2:88a3:3333:4a4b:5555:6666
<!--NeedCopy-->

例2:

http://[9901:0ab1:22a2:88a3:3333:4a4b:5555:6666]/
<!--NeedCopy-->

例 3:

https://[9901:0ab1:22a2:88a3:3333:4a4b:5555:6666]:8080/
<!--NeedCopy-->

例 3 では、IP アドレスとポート番号(8080)をブラケットで区切っています。

「+」演算子は、IPv6 式を他の式と組み合わせる場合にのみ使用できることに注意してください。出力は、個々の式から返される文字列値の連結です。IPv6 式では、他の算術演算子は使用できません。次の構文は例です。

client.ipv6.src + server.ip.dst
<!--NeedCopy-->

たとえば、クライアントの送信元 IPv6 アドレスがABCD:1234::ABCDで 、サーバの宛先 IPv4 アドレスが10.100.10.100の場合 、前の式は"ABCD:1234::ABCD10.100.10.100"を返します 。

Citrix ADCアプライアンスは、IPv6パケットを受信すると、未使用のIPv4アドレス範囲から一時IPv4アドレスを割り当て、パケットの送信元アドレスをこの一時アドレスに変更します。応答時に、発信パケットの送信元アドレスは元の IPv6 アドレスに置き換えられます。

IPv6 式は、ブール値の結果を生成する式以外の任意の式と組み合わせることができます。

IPv6 アドレスの式プレフィックス

次の表に示す式プレフィックスによって返される IPv6 アドレスは、テキストデータとして扱うことができます。たとえば、client.ipv6.dst というプレフィックスは、宛先 IPv6 アドレスをテキストとして評価できる文字列として返します。

次の表に、IPv6 アドレスを返す式プレフィクスを示します。

表3. テキストを返す IPv6 式プレフィックス

説明
CLIENT.IPV6 現在のパケットでの IPv6 アドレスで動作します。
CLIENT.IPV6.DST IP ヘッダーの宛先フィールドの IPv6 アドレスを返します。
CLIENT.IPV6.SRC IP ヘッダーの送信元フィールドの IPv6 アドレスを返します。以下に例を示します。 client.ipv6.src.in_subnet(2007::2008/64) client.ipv6.src.get1.le(2008)
SERVER.IPV6 現在のパケットでの IPv6 アドレスで動作します。
SERVER.IPV6.DST IP ヘッダーの宛先フィールドの IPv6 アドレスを返します。
SERVER.IPV6.SRC IP ヘッダーの送信元フィールドの IPv6 アドレスを返します。以下に例を示します。 server.ipv6.src.in_subnet(2007::2008/64) server.ipv6.src.get1.le(2008)

IPv6 プレフィクスの操作

次の表に、IPv6 アドレスを返すプレフィックスで使用できる演算子を示します。

表4. IPv6 アドレスを評価する操作

IPv6 オペレーション 説明
<ipv6>.EQ(<IPv6_address> IPアドレスの値が<IPv6_address>引数と同じ場合は、ブール型 TRUE を返します。次に例を示します。 client.ipv6.dst.eq(ABCD:1234::ABCD)
<ipv6>.GET1. . .GET8 IPv6 アドレスのセグメントを数値で返します。次の式例では、IPv6 アドレス 1000:1001: CD 10:0000:0000:89 AB: 4567: CDEF: client.ipv6.dst.get5 extracts 0000からセグメントを取得します。これは、アドレスの 5 番目のビットセットです。client.ipv6.dst.get6 extracts 89AB. client.ipv6.dst.get7 extracts 4567.これらのセグメントに対して数値演算を実行できます。IPv6 アドレス全体を取得する場合、数値演算は実行できないことに注意してください。これは、CLIENT.IPV6.SRC など、IPv6 アドレス全体を返す式は、アドレスをテキスト形式で返すためです。
<ipv6>.IN_SUBNET(<subnet>) IPv6アドレス値が<subnet>引数で指定されたサブネットにある場合、ブール型 TRUE を返します。次に例を示します。 client.ipv6.dst.eq(1000:1001:CD10:0000:0000:89AB:4567:CDEF/60)
<ipv6>.IS_IPV4 これが IPv4 クライアントである場合はブール値 TRUE を返し、そうでない場合はブール値 FALSE を返します。
<ipv6>.SUBNET(<n>) 引数として指定されたサブネットマスクを適用した後に IPv6 アドレスを返します。サブネットマスクには 0 ~ 128 の値を指定できます。たとえば、次のようになります:CLIENT.IPV6.SRC.SUBNET(24)

MAC アドレスの式

MAC アドレスは ##: ##: ##: ##: ##: ##: ##: ## の形式でコロンで区切られた 16 進数値で構成されます。各「#」は、0 ~ 9 の数字または A ~ F の文字を表します。DAdvanced ポリシー式のプレフィクスおよび演算子は、送信元および宛先 MAC アドレスを評価する際に使用できます。

MAC アドレスのプレフィックス

次の表に、MAC アドレスを返すプレフィクスを示します。

表5. MAC アドレスを評価するプレフィクス

説明
client.ether.dstmac イーサネットヘッダーの宛先フィールドの MAC アドレスを返します。
client.ether.srcmac イーサネットヘッダーの送信元フィールドの MAC アドレスを返します。

MAC アドレスの操作

次の表に、MAC アドレスを返すプレフィックスで使用できる演算子を示します。

表 6. MAC アドレスでの操作

説明
<mac address>.EQ(<address>) MACアドレス値が<address>引数と同じ場合は、ブール型 TRUE を返します。
<mac address>.GET1. . .GET4 GET 操作で指定された MAC アドレスのセグメントから抽出された数値を返します。たとえば、MAC アドレスが 12:34:56:78:9 a: bc の場合、次の例は 34 を返します。 client.ether.dstmac.get2

クライアントとサーバーの数値データの式

次の表に、スループット、ポート番号、VLAN ID など、クライアントおよびサーバの数値データを操作するためのプレフィクスを示します。

表7. クライアントとサーバーの数値のデータを評価するプレフィックス

説明
interface.rxthroughput 直前 7 秒間の raw 受信トラフィックスループットを 1 秒あたりのキロバイト数 (KBps) で表す整数を返します。
client.interface.txthroughput 過去 7 秒間の raw 送信トラフィックスループットを Kbps 単位で表す整数を返します。
client.interface.rxtxthroughput 直前 7 秒間の生の送受信トラフィックスループットを Kbps 単位で表す整数を返します。
server.interface.rxthroughput 過去 7 秒間の raw 受信トラフィックスループットを Kbps 単位で表す整数を返します。
server.interface.txthroughput 過去 7 秒間の raw 送信トラフィックスループットを Kbps 単位で表す整数を返します。
server.interface.rxtxthroughput 直前 7 秒間の生の送受信トラフィックスループットを Kbps 単位で表す整数を返します。
server.vlan.id 現在のパケットがCitrix ADCに入ったVLANの数値IDを返します。
client.vlan.id 現在のパケットがCitrix ADCに入ったVLANの数値IDを返します。
高度なポリシー式:IP アドレスと MAC アドレス、スループット、VLAN ID