Citrix ADC

Expressions de stratégie avancées : adresses IP et MAC, débit, ID VLAN

Vous pouvez utiliser des préfixes d’expression de stratégie avancée qui renvoient des adresses IPv4 et IPv6, des adresses MAC, des sous-réseaux IP, des données client et serveur utiles telles que les débits aux ports d’interface (Rx, Tx et RxTx) et les ID des VLAN via lesquels les paquets sont reçus. Vous pouvez ensuite utiliser différents opérateurs pour évaluer les données renvoyées par ces préfixes d’expression.

Expressions pour adresses IP et sous-réseaux IP

Vous pouvez utiliser des expressions de stratégie avancées pour évaluer les adresses et les sous-réseaux qui sont au format IPv4 (Internet Protocol version 4) ou IPv6 (Internet Protocol version 6). Les préfixes d’expression des adresses et sous-réseaux IPv6 incluent IPv6 dans le préfixe. Les préfixes d’expression des adresses et sous-réseaux IPv4 incluent l’adresse IP dans le préfixe. Voici un exemple d’expression qui identifie si une demande provient d’un sous-réseau IPv4 particulier.

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

Voici deux exemples de stratégies de réécriture qui examinent le sous-réseau à partir duquel le paquet est reçu et effectuent une action de réécriture sur l’en-tête Host. Une fois ces deux stratégies configurées, l’action de réécriture effectuée dépend du sous-réseau de la demande. Ces deux stratégies évaluent les adresses IP au format d’adresse IPv4.

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

Remarque

Les exemples précédents sont des commandes que vous tapez sur l’interface de ligne de commande (CLI) de Citrix ADC et, par conséquent, chaque guillemet doit être précédé d’une barre oblique inverse (\). Pour plus d’informations, voir Configuration d’expressions de stratégie avancées dans une stratégie.”

Préfixes pour les adresses IPV4 et les sous-réseaux IP

Le tableau suivant décrit les préfixes qui renvoient des adresses et des sous-réseaux IPv4, ainsi que des segments d’adresses IPv4. Vous pouvez utiliser des opérateurs numériques et des opérateurs spécifiques aux adresses IPv4 avec ces préfixes. Pour plus d’informations sur les opérations numériques, voir « Opérations debase sur les préfixes d’expression » et « Opérations composées pour les nombres ».

Tableau 1. Préfixes qui évaluent les adresses IP et MAC

Prefix Description
CLIENT.IP.SRC Renvoie l’adresse IP source du paquet actuel sous forme d’adresse IP ou de numéro.
CLIENT.IP.DST Renvoie l’adresse IP de destination du paquet actuel sous forme d’adresse IP ou de numéro.
SERVEUR.IP.SRC Renvoie l’adresse IP source du paquet actuel sous forme d’adresse IP ou de numéro.
SERVEUR.IP.DST Renvoie l’adresse IP de destination du paquet actuel sous forme d’adresse IP ou de numéro.

Opérations pour les adresses IPV4

Le tableau Prefix for IPV4 Operations décrit les opérateurs pouvant être utilisés avec des préfixes renvoyant une adresse IPv4.

A propos des expressions IPv6

Le format d’adresse IPv6 offre plus de flexibilité que l’ancien format IPv4. Les adresses IPv6 sont au format hexadécimal (RFC 2373). Dans les exemples suivants, l’exemple 1 est une adresse IPv6, l’exemple 2 est une URL qui inclut l’adresse IPv6 et l’exemple 3 inclut l’adresse IPv6 et un numéro de port.

Exemple 1 :

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

Exemple 2 :

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

Exemple 3 :

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

Dans l’exemple 3, les crochets séparent l’adresse IP du numéro de port (8080).

Notez que vous ne pouvez utiliser l’opérateur « + » que pour combiner des expressions IPv6 avec d’autres expressions. La sortie est une concaténation des valeurs de chaîne renvoyées par les expressions individuelles. Vous ne pouvez pas utiliser d’autres opérateurs arithmétiques avec une expression IPv6. La syntaxe suivante est un exemple :

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

Par exemple, si l’adresse IPv6 source du client est ABCD:1234::ABCD, et que l’adresse IPv4 de destination du serveur est 10.100.10.100, l’expression précédente renvoie "ABCD:1234::ABCD10.100.10.100".

Notez que lorsque l’appliance Citrix ADC reçoit un paquet IPv6, elle attribue une adresse IPv4 temporaire à partir d’une plage d’adresses IPv4 inutilisée et remplace l’adresse source du paquet par cette adresse temporaire. Au moment de la réponse, l’adresse source du paquet sortant est remplacée par l’adresse IPv6 d’origine.

Remarque

Vous pouvez combiner une expression IPv6 avec n’importe quelle autre expression, à l’exception d’une expression qui produit un résultat booléen.

Préfixes d’expression pour les adresses IPv6

Les adresses IPv6 renvoyées par les préfixes d’expression du tableau suivant peuvent être traitées comme des données textuelles. Par exemple, le préfixe client.ipv6.dst renvoie l’adresse IPv6 de destination sous la forme d’une chaîne pouvant être évaluée en tant que texte.

Le tableau suivant décrit les préfixes d’expression qui renvoient une adresse IPv6.

Tableau 3. Préfixes d’expression IPv6 qui renvoient du texte

Prefix Description
CLIENT.IPV6 Fonctionne sur l’adresse IPv6 avec le paquet actuel.
CLIENT.IPV6.DST Renvoie l’adresse IPv6 dans le champ de destination de l’en-tête IP.
CLIENT.IPV6.SRC Renvoie l’adresse IPv6 dans le champ source de l’en-tête IP. Voici des exemples : client.ipv6.src.in_subnet(2007::2008/64) client.ipv6.src.get1.le(2008)
SERVEUR.IPV6 Fonctionne sur l’adresse IPv6 avec le paquet actuel.
SERVER.IPV6.DST Renvoie l’adresse IPv6 dans le champ de destination de l’en-tête IP.
SERVER.IPV6.SRC Renvoie l’adresse IPv6 dans le champ source de l’en-tête IP. Voici des exemples : server.ipv6.src.in_subnet(2007::2008/64) server.ipv6.src.get1.le(2008)

Opérations pour les préfixes IPv6

Le tableau suivant décrit les opérateurs qui peuvent être utilisés avec des préfixes qui renvoient une adresse IPv6 :

Tableau 4. Opérations qui évaluent les adresses IPv6

Fonctionnement IPv6 Description
<ipv6>.EQ(<IPv6_address> Renvoie une valeur booléenne TRUE si la valeur de l’adresse IP est identique à celle de l’ <IPv6_address> argument. Voici un exemple : client.ipv6.dst.eq(ABCD:1234::ABCD)
<ipv6>.GET1. . .GET8 Renvoie un segment d’une adresse IPv6 sous la forme d’un nombre. Les exemples d’expressions suivants récupèrent des segments à partir de l’adresse ipv6 1000:1001:CD 10:0000:0000:89 AB:4567:CDEF : client.ipv6.dst.get5 extracts 0000, qui est le cinquième ensemble de bits de l’adresse. client.ipv6.dst.get6 extracts 89AB. client.ipv6.dst.get7 extracts 4567. Vous pouvez effectuer des opérations numériques sur ces segments. Notez que vous ne pouvez pas effectuer d’opérations numériques lorsque vous récupérez une adresse IPv6 complète. En effet, les expressions qui renvoient une adresse IPv6 complète, comme CLIENT.IPV6.SRC, renvoient l’adresse au format texte.
<ipv6>.IN_SUBNET(<subnet>) Renvoie une valeur booléenne TRUE si la valeur de l’adresse IPv6 se trouve dans le sous-réseau spécifié par l’ <subnet> argument. Voici un exemple : client.ipv6.dst.eq(1000:1001:CD10:0000:0000:89AB:4567:CDEF/60)
<ipv6>.IS_IPV4 Retourne une valeur booléenne TRUE s’il s’agit d’un client IPv4, et renvoie une valeur booléenne FALSE si ce n’est pas le cas.
<ipv6>.SUBNET(<n>) Renvoie l’adresse IPv6 après avoir appliqué le masque de sous-réseau spécifié comme argument. Le masque de sous-réseau peut prendre des valeurs comprises entre 0 et 128. Pa exemple : CLIENT.IPV6.SRC.SUBNET(24)

Expressions pour adresses MAC

Une adresse MAC est constituée de valeurs hexadécimales délimitées par deux points au format ## : ## : ## : ## : ## : ##, où chaque « # » représente soit un nombre compris entre 0 et 9, soit une lettre de A à F. Des préfixes et opérateurs d’expression de stratégie avancés sont disponibles pour évaluer les adresses MAC source et cible.

Préfixes des adresses MAC

Le tableau suivant décrit les préfixes qui renvoient des adresses MAC.

Tableau 5. Préfixes qui évaluent les adresses MAC

Prefix Description
client.ether.dstmac Renvoie l’adresse MAC dans le champ de destination de l’en-tête Ethernet.
client.ether.srcmac Renvoie l’adresse MAC dans le champ source de l’en-tête Ethernet.

Opérations pour les adresses MAC

Le tableau suivant décrit les opérateurs qui peuvent être utilisés avec des préfixes qui renvoient une adresse MAC.

Tableau 6. Opérations sur les adresses MAC

Prefix Description
<mac address>.EQ(<address>) Renvoie une valeur booléenne TRUE si la valeur de l’adresse MAC est identique à celle de l’ <address> argument.
<mac address>.GET1. . .GET4 Renvoie une valeur numérique extraite du segment de l’adresse MAC spécifié dans l’opération GET. Par exemple, si l’adresse MAC est 12:34:56:78:9 a:bc, la valeur suivante renvoie 34 : client.ether.dstmac.get2

Expressions pour les données numériques du client et du serveur

Le tableau suivant décrit les préfixes pour l’utilisation des données numériques du client et du serveur, notamment le débit, les numéros de port et les ID de VLAN.

Tableau 7. Préfixes qui évaluent les données numériques du client et du serveur

Prefix Description
Débit client.interface.rx Renvoie un entier représentant le débit brut du trafic reçu en kilo-octets par seconde (Kbps) pendant les sept secondes précédentes.
débit client.interface.tx Renvoie un entier représentant le débit brut du trafic transmis en Kbps pendant les sept secondes précédentes.
Débit client.interface.rxtx Renvoie un entier représentant le débit brut du trafic reçu et transmis en Kbps pendant les sept secondes précédentes.
débit server.interface.rx Renvoie un entier représentant le débit brut du trafic reçu en Kbps pendant les sept secondes précédentes.
débit server.interface.tx Renvoie un entier représentant le débit brut du trafic transmis en Kbps pendant les sept secondes précédentes.
débit server.interface.rxtx Renvoie un entier représentant le débit brut du trafic reçu et transmis en Kbps pendant les sept secondes précédentes.
server.vlan.id Renvoie un ID numérique du VLAN via lequel le paquet actuel est entré dans Citrix ADC.
client.vlan.id Renvoie un ID numérique pour le VLAN via lequel le paquet courant est entré dans le Citrix ADC.
Expressions de stratégie avancées : adresses IP et MAC, débit, ID VLAN