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 wie die Durchsatzraten an den Schnittstellenports (Rx, Tx und RxTx) und die IDs der VLANs, über die Pakete empfangen werden, zurückgeben. Sie können dann 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 auszuwerten, die im Format Internet Protocol Version 4 (IPv4) oder Internet Protocol Version 6 (IPv6) vorliegen. 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 von einem bestimmten IPv4-Subnetz stammt.

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

Im Folgenden finden Sie zwei Beispiele für Rewriterichtlinien, die das Subnetz untersuchen, von 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 Rewrite-Aktion vom Subnetz in der Anforderung ab. Diese beiden Richtlinien werten IP-Adressen aus, die im IPv4-Adressformat vorliegen.

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

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 unter Konfigurieren von erweiterten Richtlinienausdrücken 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 Operationen finden Sie unter “Grundoperationen für Ausdruckspräfixe” und “Zusammengesetzte Operationen 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 der Tabelle Präfix für IPV4-Operationen 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 liegen im Hexadezimalformat vor (RFC 2373). In den folgenden Beispielen ist Beispiel 1 eine IPv6-Adresse, Beispiel 2 ist 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
<!--NeedCopy-->

Beispiel 2:

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

Beispiel 3:

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

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
<!--NeedCopy-->

Wenn beispielsweise die IPv6-Quelladresse des Clients lautet ABCD:1234::ABCDund die IPv4-Adresse des Serverziels lautet 10.100.10.100, wird der vorhergehende Ausdruck zurückgegeben "ABCD:1234::ABCD10.100.10.100".

Beachten Sie, dass die Citrix ADC-Appliance, wenn sie ein IPv6-Paket empfängt, eine temporäre IPv4-Adresse aus einem nicht verwendeten IPv4-Adressbereich zuweist und die Quelladresse des Pakets an 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 jedem 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 mit der IPv6-Adresse in 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 sind Beispiele: client.ipv6.src.in_subnet(2007::2008/64) client.ipv6.src.get1.le(2008)
SERVER.IPV6 Arbeitet mit der IPv6-Adresse in 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 sind 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 ein boolesches TRUE zurück, wenn der IP-Adresswert dem <IPv6_address> Argument entspricht. 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 von der IPv6-Adresse 1000:1001:CD10:0000:0000:89AB:4567:CDEF: client.ipv6.dst.get5 extracts 0000 ab, was der fünfte Bitsatz in der Adresse ist. 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 gesamte IPv6-Adresse zurückgeben, wie CLIENT.IPV6.SRC, die Adresse im Textformat zurückgeben.
<ipv6>.IN_SUBNET(<subnet>) Gibt ein boolesches TRUE zurück, wenn sich der IPv6-Adresswert in dem durch das <subnet> Argument angegebenen Subnetz befindet. Es folgt ein Beispiel: client.ipv6.dst.eq(1000:1001:CD10:0000:0000:89AB:4567:CDEF/60)
<ipv6>.IS_IPV4 Gibt ein boolesches TRUE zurück, wenn dies ein IPv4-Client ist, und gibt ein boolesches 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 Doppelpunkt getrennten Hexadezimalwerten im Format ##:##:##:##:##:##, wobei jedes “#” entweder eine Zahl von 0 bis 9 oder einen Buchstaben von A bis F. darstellt. Erweiterte Richtlinienausdruckspräfixe und -Operatoren stehen für die Auswertung von Quell- und Ziel-MAC-Adressen zur Verfügung.

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. Vorgänge auf MAC-Adressen

Prefix Beschreibung
<mac address>.EQ(<address>) Gibt ein boolesches TRUE zurück, wenn der Wert der MAC-Adresse dem <address> Argument entspricht.
<mac address>.GET1. . .GET4 Gibt einen numerischen Wert zurück, der aus dem Segment der MAC-Adresse extrahiert wurde, das in der GET-Operation angegeben ist. Wenn die MAC-Adresse beispielsweise 12:34:56:78:9 a:bc lautet, 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 Ganzzahl zurück, die den Durchsatz des empfangenen Rohverkehrs in Kilobyte pro Sekunde (KBit/s) für die letzten sieben Sekunden darstellt.
client.interface.txthroughput Gibt eine Ganzzahl zurück, die den Durchsatz des übertragenen Rohverkehrs in KBit/s für die letzten sieben Sekunden darstellt.
client.interface.rxtxthroughput Gibt eine Ganzzahl zurück, die den rohen empfangenen und übertragenen Verkehrsdurchsatz in KBit/s für die letzten sieben Sekunden darstellt.
server.interface.rxthroughput Gibt eine Ganzzahl zurück, die den Durchsatz des empfangenen Rohdatenverkehrs in KBit/s für die letzten sieben Sekunden darstellt.
server.interface.txthroughput Gibt eine Ganzzahl zurück, die den Durchsatz des übertragenen Rohverkehrs in KBit/s für die letzten sieben Sekunden darstellt.
server.interface.rxtxthroughput Gibt eine Ganzzahl zurück, die den rohen empfangenen und übertragenen Verkehrsdurchsatz in KBit/s für die letzten sieben Sekunden darstellt.
server.vlan.id Gibt eine numerische ID des VLAN zurück, über das das aktuelle Paket in den Citrix ADC gelangt ist.
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