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és 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 des 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 les adresses IP et les sous-réseaux IP
Vous pouvez utiliser des expressions de stratégie avancées pour évaluer les adresses et les sous-réseaux au format IPv4 (Internet Protocol version 4) ou IPv6 (Internet Protocol version 6). Les préfixes d’expression pour les adresses IPv6 et les sous-réseaux incluent IPv6 dans le préfixe. Les préfixes d’expression pour les adresses IPv4 et les sous-réseaux incluent 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. Avec ces deux stratégies configurées, l’action de réécriture qui est 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 IPv4 et des sous-réseaux, 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 courant sous la forme d’une adresse IP ou d’un nombre. |
CLIENT.IP.DST | Renvoie l’adresse IP de destination du paquet courant sous forme d’adresse IP ou de nombre. |
SERVER.IP.SRC | Renvoie l’adresse IP source du paquet courant sous la forme d’une adresse IP ou d’un nombre. |
SERVER.IP.DST | Renvoie l’adresse IP de destination du paquet courant sous forme d’adresse IP ou de nombre. |
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 parenthèses 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 qui sont renvoyées à partir des expressions individuelles. Vous ne pouvez pas utiliser d’autre opérateur arithmétique 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 si 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 affecte une adresse IPv4 temporaire à partir d’une plage d’adresses IPv4 inutilisée et modifie l’adresse source du paquet à 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 dans le 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 forme de chaîne pouvant être évaluée sous forme de texte.
Le tableau suivant décrit les préfixes d’expression qui renvoient une adresse IPv6.
Tableau 3. Préfixes d’expression IPv6 renvoyant du texte
Prefix | Description |
---|---|
CLIENT.IPV6 | Fonctionne sur l’adresse IPv6 dans avec le paquet courant. |
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)
|
SERVER.IPV6 | Fonctionne sur l’adresse IPv6 dans avec le paquet courant. |
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 pouvant être utilisés avec des préfixes renvoyant une adresse IPv6 :
Tableau 4. Opérations qui évaluent les adresses IPv6
Opération IPv6 | Description |
---|---|
<ipv6>.EQ(<IPv6_address> |
Renvoie une valeur booléenne TRUE si la valeur de l’adresse IP est identique à l’argument <IPv6_address> . Voici un exemple : client.ipv6.dst.eq(ABCD:1234::ABCD)
|
<ipv6>.GET1. . .GET8 |
Renvoie un segment d’une adresse IPv6 sous forme de 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 entière. En effet, les expressions qui renvoient une adresse IPv6 entière, telle que CLIENT.IPV6.SRC, renvoient l’adresse au format texte. |
<ipv6>.IN_SUBNET(<subnet>) |
Renvoie une valeur booléenne TRUE si la valeur d’adresse IPv6 se trouve dans le sous-réseau spécifié par l’argument <subnet> . Voici un exemple : client.ipv6.dst.eq(1000:1001:CD10:0000:0000:89AB:4567:CDEF/60)
|
<ipv6>.IS_IPV4 |
Renvoie 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 se compose de valeurs hexadécimales délimitées par des deux-points au format ## : ## : ## : ## : ##, où chaque « # » représente soit un nombre compris entre 0 et 9, soit une lettre de A à F. Les préfixes d’expression syntaxique par défaut et les opérateurs sont disponibles pour évaluer les adresses MAC source et destination.
Préfixes pour les 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 adresses MAC
Le tableau suivant décrit les opérateurs qui peuvent être utilisés avec des préfixes renvoyant 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 à l’argument <address> . |
<mac address>.GET1. . .GET4 |
Renvoie une valeur numérique extraite du segment de l’adresse MAC spécifiée 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 client et serveur
Le tableau suivant décrit les préfixes permettant d’utiliser des données numériques client et serveur, y compris 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 |
---|---|
client.interface.rxdébit | Renvoie un entier représentant le débit de trafic reçu brut en kilo-octets par seconde (Kbit/s) pendant les sept secondes précédentes. |
client.interface.txdébit | Renvoie un entier représentant le débit de trafic transmis brut en Kbit/s pendant les sept secondes précédentes. |
client.interface.rxtxdébit | Renvoie un entier représentant le débit brut de trafic reçu et transmis en Kbit/s pendant les sept secondes précédentes. |
server.interface.rxdébit | Renvoie un entier représentant le débit de trafic reçu brut en Kbit/s pendant les sept secondes précédentes. |
server.interface.txdébit | Renvoie un entier représentant le débit de trafic transmis brut en Kbit/s pendant les sept secondes précédentes. |
server.interface.rxtxdébit | Renvoie un entier représentant le débit brut de trafic reçu et transmis en Kbit/s pendant les sept secondes précédentes. |
serveur.vlan.id | Renvoie un ID numérique du VLAN via lequel le paquet courant est entré dans le Citrix ADC. |
client.vlan.id | Renvoie un ID numérique pour le VLAN via lequel le paquet courant est entré dans le Citrix ADC. |