Citrix 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)

次に、パケットの受信元のサブネットを調べて、Host ヘッダーで書き換えアクションを実行する、書き換えポリシーの例を示します。これら 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

上記の例は、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

例2:

http://[9901:0ab1:22a2:88a3:3333:4a4b:5555:6666]/

例 3:

https://[9901:0ab1:22a2:88a3:3333:4a4b:5555:6666]:8080/

例 3 では、IP アドレスとポート番号(8080)を括弧で区切ります。

IPv6 式を他の式と組み合わせるには、’+’ 演算子のみを使用できます。出力は、個々の式から返される文字列値の連結です。IPv6 式では、他の算術演算子は使用できません。次の構文は例です。

client.ipv6.src + server.ip.dst

たとえば、クライアントの送信元 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 アドレスのセグメントを数値で返します。次の例では、アドレスの 5 番目のビットセットである ipv6 アドレス 1000:1001:CD 10:0000:89 AB:4567: CDEF:client.ipv6.dst.get5 extracts 0000からセグメントを取得します。client.ipv6.dst.get6 extracts 89AB. client.ipv6.dst.get7 extracts 4567.これらのセグメントに対して数値演算を実行できます。IPv6 アドレス全体を取得する場合は、数値演算を実行できないことに注意してください。これは、CLIENT.IPV6.SRC などの IPv6 アドレス全体を返す式が、アドレスをテキスト形式で返すためです。
<ipv6>.IN_SUBNET(<subnet>) <subnet>引数で指定されたサブネットに IPv6 アドレス値がある場合、ブール型 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 の文字を表します。送信元および宛先 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. 数値クライアントおよびサーバデータを評価するプレフィックス

プレフィックス 説明
client.interface.rxthroughput 過去 7 秒間の raw 受信トラフィックのスループット(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を返します。
クライアント.vlan.id 現在のパケットがCitrix ADCに入ったVLANの数値IDを返します。

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