Citrix ADC

Erweiterte Richtlinienausdrücke: IP- und MAC-Adressen, Durchsatz, VLAN-IDs

Sie können Präfixe für erweiterte Richtlinienausdrücke verwenden, die IPv4- und IPv6-Adressen, MAC-Adressen, IP-Subnetze, nützliche Client- und Serverdaten zurückgeben, z. B. die Durchsatzraten an den Schnittstellenports (Rx, Tx und RxTX) und die IDs der VLANs, über die Pakete empfangen werden. Anschließend können Sie verschiedene Operatoren verwenden, um die Daten auszuwerten, die von diesen Ausdruckspräfixen zurückgegeben werden.

Ausdrücke für IP-Adressen und IP-Subnetze

Sie können erweiterte Richtlinienausdrücke verwenden, um Adressen und Subnetze im IPv4-Format (Internet Protocol Version 4) oder IPv6 (Internet Protocol Version 6) auszuwerten. Ausdruckspräfixe für IPv6-Adressen und Subnetze enthalten IPv6 im Präfix. Ausdruckspräfixe für IPv4-Adressen und Subnetze enthalten IP im Präfix. Es folgt ein Beispiel für einen Ausdruck, der angibt, ob eine Anforderung aus einem bestimmten IPv4-Subnetz stammt.

client.ip.src.in_subnet(147.1.0.0/16)

Im Folgenden finden Sie zwei Beispiele für Rewrite-Richtlinien, die das Subnetz untersuchen, aus dem das Paket empfangen wird, und eine Rewrite-Aktion für den Host-Header ausführen. Wenn diese beiden Richtlinien konfiguriert sind, hängt die durchgeführte Umschreibaktion vom Subnetz in der Anforderung ab. Diese beiden Richtlinien bewerten IP-Adressen, die im IPv4-Adressformat sind.

- 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

Hinweis:

Die vorangegangenen Beispiele sind Befehle, die Sie an der Citrix ADC Befehlszeilenschnittstelle (CLI) eingeben. Daher muss jedem Anführungszeichen ein umgekehrter Schrägstrich (\) vorangestellt werden. Weitere Informationen finden Sie unterKonfigurieren erweiterter Richtlinienausdrücke in einer Richtlinie.

Präfixe für IPV4-Adressen und IP-Subnetze

In der folgenden Tabelle werden Präfixe beschrieben, die IPv4-Adressen und Subnetze sowie Segmente von IPv4-Adressen zurückgeben. Sie können numerische Operatoren und Operatoren verwenden, die für IPv4-Adressen spezifisch sind. Weitere Informationen zu numerischen Vorgängen finden Sie unter Grundlegende Vorgänge für Ausdruckspräfixe und Zusammengesetzte Vorgänge für Zahlen.

Tabelle 1. Präfixe, die IP- und MAC-Adressen auswerten

Prefix Beschreibung
CLIENT.IP.SRC Gibt die Quell-IP des aktuellen Pakets als IP-Adresse oder als Zahl zurück.
CLIENT.IP.DST Gibt die Ziel-IP des aktuellen Pakets als IP-Adresse oder als Zahl zurück.
SERVER.IP.SRC Gibt die Quell-IP des aktuellen Pakets als IP-Adresse oder als Zahl zurück.
SERVER.IP.DST Gibt die Ziel-IP des aktuellen Pakets als IP-Adresse oder als Zahl zurück.

Operationen für IPV4-Adressen

In derPräfix für IPV4-VorgängeTabelle werden die Operatoren beschrieben, die mit Präfixen verwendet werden können, die eine IPv4-Adresse zurückgeben.

Informationen zu IPv6-Ausdrücken

Das IPv6-Adressformat ermöglicht mehr Flexibilität als das ältere IPv4-Format. IPv6-Adressen haben das hexadezimale Format (RFC 2373). In den folgenden Beispielen ist Beispiel 1 eine IPv6-Adresse, Beispiel 2 eine URL, die die IPv6-Adresse enthält, und Beispiel 3 enthält die IPv6-Adresse und eine Portnummer.

Beispiel 1:

9901:0ab1:22a2:88a3:3333:4a4b:5555:6666

Beispiel 2:

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

Beispiel 3:

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

In Beispiel 3 trennen die Klammern die IP-Adresse von der Portnummer (8080).

Beachten Sie, dass Sie den Operator ‘+’ nur verwenden können, um IPv6-Ausdrücke mit anderen Ausdrücken zu kombinieren. Die Ausgabe ist eine Verkettung der Zeichenfolgenwerte, die von den einzelnen Ausdrücken zurückgegeben werden. Sie können keinen anderen arithmetischen Operator mit einem IPv6-Ausdruck verwenden. Die folgende Syntax ist ein Beispiel:

client.ipv6.src + server.ip.dst

Wenn beispielsweise die Clientquell-IPv6-Adresse lautetABCD:1234::ABCDund die Serverzieladresse IPv4 lautet10.100.10.100, wird der vorhergehende Ausdruck zurückgegeben"ABCD:1234::ABCD10.100.10.100".

Beachten Sie, dass die Citrix ADC Appliance ein IPv6-Paket empfängt, eine temporäre IPv4-Adresse aus einem nicht verwendeten IPv4-Adressbereich zuweist und die Quelladresse des Pakets in diese temporäre Adresse ändert. Zur Reaktionszeit wird die Quelladresse des ausgehenden Pakets durch die ursprüngliche IPv6-Adresse ersetzt.

Hinweis:

Sie können einen IPv6-Ausdruck mit einem beliebigen anderen Ausdruck kombinieren, außer einem Ausdruck, der ein boolesches Ergebnis erzeugt.

Ausdruckspräfixe für IPv6-Adressen

Die IPv6-Adressen, die von den Ausdruckspräfixen in der folgenden Tabelle zurückgegeben werden, können als Textdaten behandelt werden. Beispielsweise gibt das Präfix client.ipv6.dst die Ziel-IPv6-Adresse als Zeichenfolge zurück, die als Text ausgewertet werden kann.

In der folgenden Tabelle werden Ausdruckspräfixe beschrieben, die eine IPv6-Adresse zurückgeben.

Tabelle 3. IPv6-Ausdruckspräfixe, die Text zurückgeben

Prefix Beschreibung
CLIENT.IPV6 Arbeitet auf der IPv6-Adresse mit dem aktuellen Paket.
CLIENT.IPV6.DST Gibt die IPv6-Adresse im Zielfeld des IP-Headers zurück.
CLIENT.IPV6.SRC Gibt die IPv6-Adresse im Quellfeld des IP-Headers zurück. Im Folgenden finden Sie Beispiele: client.ipv6.src.in_subnet(2007::2008/64) client.ipv6.src.get1.le(2008)
SERVER.IPV6 Arbeitet auf der IPv6-Adresse mit dem aktuellen Paket.
SERVER.IPV6.DST Gibt die IPv6-Adresse im Zielfeld des IP-Headers zurück.
SERVER.IPV6.SRC Gibt die IPv6-Adresse im Quellfeld des IP-Headers zurück. Im Folgenden finden Sie Beispiele: server.ipv6.src.in_subnet(2007::2008/64) server.ipv6.src.get1.le(2008)

Operationen für IPv6-Präfixe

In der folgenden Tabelle werden die Operatoren beschrieben, die mit Präfixen verwendet werden können, die eine IPv6-Adresse zurückgeben:

Tabelle 4. Vorgänge, die IPv6-Adressen auswerten

IPv6-Betrieb Beschreibung
<ipv6>.EQ(<IPv6_address> Gibt einen booleschen TRUE zurück, wenn der Wert der IP-Adresse mit dem Argument <IPv6_address> identisch ist. Es folgt ein Beispiel: client.ipv6.dst.eq(ABCD:1234::ABCD)
<ipv6>.GET1. . .GET8 Gibt ein Segment einer IPv6-Adresse als Zahl zurück. Die folgenden Beispielausdrücke rufen Segmente aus der IPv6-Adresse 1000:1001:CD10:0000:0000:89AB:4567:CDEF: client.ipv6.dst.get5 extracts 0000 ab. Dies ist der fünfte Satz von Bits in der Adresse. client.ipv6.dst.get6 extracts 89AB.client.ipv6.dst.get7 extracts 4567. Sie können numerische Operationen für diese Segmente ausführen. Beachten Sie, dass Sie beim Abrufen einer vollständigen IPv6-Adresse keine numerischen Vorgänge ausführen können. Dies liegt daran, dass Ausdrücke, die eine vollständige IPv6-Adresse zurückgeben, z. B. CLIENT.IPV6.SRC, die Adresse im Textformat zurückgeben.
<ipv6>.IN_SUBNET(<subnet>) Gibt einen booleschen TRUE zurück, wenn sich der IPv6-Adresswert im durch das Argument <subnet> angegebenen Subnetz befindet. Es folgt ein Beispiel: client.ipv6.dst.eq(1000:1001:CD10:0000:0000:89AB:4567:CDEF/60)
<ipv6>.IS_IPV4 Gibt einen booleschen TRUE zurück, wenn dies ein IPv4-Client ist, und gibt einen booleschen FALSE zurück, wenn dies nicht der Fall ist.
<ipv6>.SUBNET(<n>) Gibt die IPv6-Adresse zurück, nachdem die als Argument angegebene Subnetzmaske angewendet wurde. Die Subnetzmaske kann Werte zwischen 0 und 128 annehmen. Beispiel: CLIENT.IPV6.SRC.SUBNET(24)

Ausdrücke für MAC-Adressen

Eine MAC-Adresse besteht aus durch Doppelpunkte getrennten Hexadezimalwerten im Format ##: ##: ##: ##: ##, wobei jedes # entweder eine Zahl von 0 bis 9 oder einen Buchstaben von A bis F darstellt. Standard-Syntaxausdruckpräfixe und -operatoren sind für die Auswertung von Quell- und Ziel-MAC-Adressen verfügbar.

Präfixe für MAC-Adressen

In der folgenden Tabelle werden Präfixe beschrieben, die MAC-Adressen zurückgeben.

Tabelle 5. Präfixe, die MAC-Adressen auswerten

Prefix Beschreibung
client.ether.dstmac Gibt die MAC-Adresse im Zielfeld des Ethernet-Headers zurück.
client.ether.srcmac Gibt die MAC-Adresse im Quellfeld des Ethernet-Headers zurück.

Operationen für MAC-Adressen

In der folgenden Tabelle werden die Operatoren beschrieben, die mit Präfixen verwendet werden können, die eine MAC-Adresse zurückgeben.

Tabelle 6. Operationen auf MAC-Adressen

Prefix Beschreibung
<mac address>.EQ(<address>) Gibt einen booleschen TRUE zurück, wenn der MAC-Adresswert mit dem Argument <address> übereinstimmt.
<mac address>.GET1. . .GET4 Gibt einen numerischen Wert zurück, der aus dem Segment der MAC-Adresse extrahiert wird, die in der GET-Operation angegeben ist. Wenn die MAC-Adresse beispielsweise 12:34:56:78:9a:bc ist, gibt Folgendes 34 zurück: client.ether.dstmac.get2

Ausdrücke für numerische Client- und Serverdaten

In der folgenden Tabelle werden Präfixe für die Arbeit mit numerischen Client- und Serverdaten beschrieben, einschließlich Durchsatz, Portnummern und VLAN-IDs.

Tabelle 7. Präfixe, die numerische Client- und Serverdaten auswerten

Prefix Beschreibung
client.interface.rxthroughput Gibt eine ganze Zahl zurück, die den rohen empfangenen Datenverkehrsdurchsatz in Kilobyte pro Sekunde (KBps) für die letzten sieben Sekunden darstellt.
client.interface.txthroughput Gibt eine ganze Zahl zurück, die den rohen übertragenen Datenverkehr Durchsatz in KBps für die letzten sieben Sekunden darstellt.
client.interface.rxtxthroughput Gibt eine ganze Zahl zurück, die den rohen empfangenen und übertragenen Datenverkehr in KBps für die letzten sieben Sekunden darstellt.
server.interface.rxthroughput Gibt eine Ganzzahl zurück, die den rohen empfangenen Datenverkehr in KBps für die letzten sieben Sekunden darstellt.
server.interface.txthroughput Gibt eine ganze Zahl zurück, die den rohen übertragenen Datenverkehr Durchsatz in KBps für die letzten sieben Sekunden darstellt.
server.interface.rxtxthroughput Gibt eine ganze Zahl zurück, die den rohen empfangenen und übertragenen Datenverkehr in KBps für die letzten sieben Sekunden darstellt.
server.vlan.id Gibt eine numerische ID des VLAN zurück, über das das aktuelle Paket den Citrix ADC eingegeben hat.
client.vlan.id Gibt eine numerische ID für das VLAN zurück, über das das aktuelle Paket den Citrix ADC eingegeben hat.

Erweiterte Richtlinienausdrücke: IP- und MAC-Adressen, Durchsatz, VLAN-IDs