Expresiones de directivas avanzadas: direcciones IP y MAC, rendimiento, ID de VLAN
Puede utilizar prefijos de expresión de directivas avanzadas que devuelven direcciones IPv4 e IPv6, direcciones MAC, subredes IP, datos útiles del cliente y del servidor, como las velocidades de rendimiento en los puertos de interfaz (Rx, Tx y RxTx) y los ID de las VLAN a través de las que se reciben los paquetes. A continuación, puede utilizar varios operadores para evaluar los datos que devuelven estos prefijos de expresión.
Expresiones para direcciones IP y subredes IP
Puede utilizar expresiones de directivas avanzadas para evaluar direcciones y subredes que tienen el formato Protocolo de Internet versión 4 (IPv4) o Protocolo de Internet versión 6 (IPv6). Los prefijos de expresión para direcciones y subredes IPv6 incluyen IPv6 en el prefijo. Los prefijos de expresión para direcciones y subredes IPv4 incluyen IP en el prefijo. A continuación se muestra un ejemplo de expresión que identifica si una solicitud se ha originado en una subred IPv4 concreta.
client.ip.src.in_subnet(147.1.0.0/16)
<!--NeedCopy-->
A continuación se presentan dos ejemplos de directivas de reescritura que examinan la subred desde la que se recibe el paquete y realizan una acción de reescritura en el encabezado Host. Con estas dos directivas configuradas, la acción de reescritura que se realiza depende de la subred de la solicitud. Estas dos directivas evalúan las direcciones IP que tienen el formato de dirección 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-->
Nota
Los ejemplos anteriores son comandos que se escriben en la interfaz de línea de comandos (CLI) de NetScaler y, por lo tanto, cada comilla debe ir precedida de una barra invertida (\). Para obtener más información, consulte Configuración de expresiones de directivas avanzadas en una directiva. “
Prefijos para direcciones IPv4 y subredes IP
En la tabla siguiente se describen los prefijos que devuelven direcciones y subredes IPv4 y segmentos de direcciones IPv4. Puede utilizar operadores numéricos y operadores específicos de direcciones IPv4 con estos prefijos. Para obtener más información sobre las operaciones numéricas, consulte “Operaciones básicas con prefijos de expresión” y “Operaciones compuestas para números. “
Tabla 1. Prefijos que evalúan direcciones IP y MAC
Prefijo | Descripción |
---|---|
CLIENT.IP.SRC | Devuelve la IP de origen del paquete actual como dirección IP o como número. |
CLIENT.IP.DST | Devuelve la IP de destino del paquete actual como dirección IP o como número. |
SERVER.IP.SRC | Devuelve la IP de origen del paquete actual como dirección IP o como número. |
SERVER.IP.DST | Devuelve la IP de destino del paquete actual como dirección IP o como número. |
Operaciones para direcciones IPv4
La tabla Prefijo para operaciones IPV4 describe los operadores que se pueden utilizar con prefijos que devuelven una dirección IPv4.
Acerca de las expresiones IPv6
El formato de dirección IPv6 ofrece más flexibilidad que el formato IPv4 anterior. Las direcciones IPv6 están en formato hexadecimal (RFC 2373). En los ejemplos siguientes, el ejemplo 1 es una dirección IPv6, el ejemplo 2 es una dirección URL que incluye la dirección IPv6 y el ejemplo 3 incluye la dirección IPv6 y un número de puerto.
Ejemplo 1:
9901:0ab1:22a2:88a3:3333:4a4b:5555:6666
<!--NeedCopy-->
Ejemplo 2:
http://[9901:0ab1:22a2:88a3:3333:4a4b:5555:6666]/
<!--NeedCopy-->
Ejemplo 3:
https://[9901:0ab1:22a2:88a3:3333:4a4b:5555:6666]:8080/
<!--NeedCopy-->
En el ejemplo 3, los corchetes separan la dirección IP del número de puerto (8080).
Tenga en cuenta que solo puede usar el operador ‘+’ para combinar expresiones IPv6 con otras expresiones. El resultado es una concatenación de los valores de cadena devueltos por las expresiones individuales. No se puede utilizar ningún otro operador aritmético con una expresión IPv6. La sintaxis siguiente es un ejemplo:
client.ipv6.src + server.ip.dst
<!--NeedCopy-->
Por ejemplo, si la dirección IPv6 de origen del cliente es ABCD:1234::ABCD
y la dirección IPv4 de destino del servidor es 10.100.10.100
, se devuelve la expresión anterior "ABCD:1234::ABCD10.100.10.100"
.
Tenga en cuenta que cuando el dispositivo NetScaler recibe un paquete IPv6, asigna una dirección IPv4 temporal de un intervalo de direcciones IPv4 no utilizado y cambia la dirección de origen del paquete por esta dirección temporal. En el momento de respuesta, la dirección de origen del paquete saliente se sustituye por la dirección IPv6 original.
Nota
Puede combinar una expresión IPv6 con cualquier otra expresión, excepto una expresión que produce un resultado booleano.
Prefijos de expresión para direcciones IPv6
Las direcciones IPv6 devueltas por los prefijos de expresión de la tabla siguiente se pueden tratar como datos de texto. Por ejemplo, el prefijo client.ipv6.dst devuelve la dirección IPv6 de destino en forma de cadena que se puede evaluar como texto.
En la tabla siguiente se describen los prefijos de expresión que devuelven una dirección IPv6.
Tabla 3. Prefijos de expresión IPv6 que devuelven texto
Prefijo | Descripción |
---|---|
CLIENT.IPV6 | Funciona en la dirección IPv6 del paquete actual. |
CLIENT.IPV6.DST | Devuelve la dirección IPv6 del campo de destino del encabezado IP. |
CLIENT.IPV6.SRC | Devuelve la dirección IPv6 del campo de origen del encabezado IP. A continuación se muestran algunos ejemplos: client.ipv6.src.in_subnet(2007::2008/64) client.ipv6.src.get1.le(2008)
|
SERVER.IPV6 | Funciona en la dirección IPv6 del paquete actual. |
SERVER.IPV6.DST | Devuelve la dirección IPv6 del campo de destino del encabezado IP. |
SERVER.IPV6.SRC | Devuelve la dirección IPv6 del campo de origen del encabezado IP. A continuación se muestran algunos ejemplos: server.ipv6.src.in_subnet(2007::2008/64) server.ipv6.src.get1.le(2008)
|
Operaciones para prefijos IPv6
En la tabla siguiente se describen los operadores que se pueden utilizar con prefijos que devuelven una dirección IPv6:
Tabla 4. Operaciones que evalúan direcciones IPv6
Funcionamiento IPv6 | Descripción |
---|---|
<ipv6>.EQ(<IPv6_address> |
Devuelve un valor booleano TRUE si el valor de la dirección IP es el mismo que el argumento <IPv6_address> . A continuación se muestra un ejemplo: client.ipv6.dst.eq(ABCD:1234::ABCD)
|
<ipv6>.GET1. . .GET8 |
Devuelve un segmento de una dirección IPv6 en forma de número. Las expresiones de ejemplo siguientes recuperan segmentos de la dirección ipv6 1000:1001:CD10:0000:0000:89AB:4567:CDEF: client.ipv6.dst.get5 extracts 0000 , que es el quinto conjunto de bits de la dirección. client.ipv6.dst.get6 extracts 89AB. client.ipv6.dst.get7 extracts 4567. Puede realizar operaciones numéricas en estos segmentos. Tenga en cuenta que no puede realizar operaciones numéricas cuando recupera una dirección IPv6 completa. Esto se debe a que las expresiones que devuelven una dirección IPv6 completa, como CLIENT.IPV6.SRC, devuelven la dirección en formato de texto. |
<ipv6>.IN_SUBNET(<subnet>) |
Devuelve un valor booleano TRUE si el valor de la dirección IPv6 se encuentra en la subred especificada por el argumento <subnet> . A continuación se muestra un ejemplo: client.ipv6.dst.eq(1000:1001:CD10:0000:0000:89AB:4567:CDEF/60)
|
<ipv6>.IS_IPV4 |
Devuelve un valor booleano TRUE si se trata de un cliente IPv4 y devuelve un valor booleano FALSE si no lo es. |
<ipv6>.SUBNET(<n>) |
Devuelve la dirección IPv6 tras aplicar la máscara de subred especificada como argumento. La máscara de subred puede tomar valores entre 0 y 128. Por ejemplo: CLIENT.IPV6.SRC.SUBNET(24)
|
Expresiones para direcciones MAC
Una dirección MAC consta de valores hexadecimales delimitados por dos puntos en el formato ##:##:##:##:##:##, donde cada “#” representa un número del 0 al 9 o una letra de la A a la F. Los prefijos y operadores de expresión de directivas avanzadas están disponibles para evaluar las direcciones MAC de origen y destino.
Prefijos para direcciones MAC
En la tabla siguiente se describen los prefijos que devuelven direcciones MAC.
Tabla 5. Prefijos que evalúan direcciones MAC
Prefijo | Descripción |
---|---|
client.ether.dstmac |
Devuelve la dirección MAC en el campo de destino del encabezado Ethernet. |
client.ether.srcmac |
Devuelve la dirección MAC del campo de origen del encabezado Ethernet. |
Operaciones para direcciones MAC
En la tabla siguiente se describen los operadores que se pueden utilizar con prefijos que devuelven una dirección MAC.
Tabla 6. Operaciones en direcciones MAC
Prefijo | Descripción |
---|---|
<mac address>.EQ(<address>) |
Devuelve un valor booleano TRUE si el valor de la dirección MAC es el mismo que el argumento <address> . |
<mac address>.GET1. . .GET4 |
Devuelve un valor numérico extraído del segmento de la dirección MAC especificada en la operación GET. Por ejemplo, si la dirección MAC es 12:34:56:78:9 a:bc, lo siguiente devuelve 34: client.ether.dstmac.get2
|
Expresiones para datos numéricos de clientes y servidores
En la tabla siguiente se describen los prefijos para trabajar con datos numéricos de cliente y servidor, incluidos el rendimiento, los números de puerto y los ID de VLAN.
Tabla 7. Prefijos que evalúan datos numéricos de clientes y servidores
Prefijo | Descripción |
---|---|
rendimiento client.interface.rx | Devuelve un entero que representa el rendimiento del tráfico recibido sin procesar en kilobytes por segundo (KBps) durante los siete segundos anteriores. |
rendimiento client.interface.tx | Devuelve un entero que representa el rendimiento del tráfico transmitido sin procesar en KBps durante los siete segundos anteriores. |
rendimiento client.interface.rxtx | Devuelve un entero que representa el rendimiento del tráfico recibido y transmitido sin procesar en KBps durante los siete segundos anteriores. |
rendimiento server.interface.rx | Devuelve un entero que representa el rendimiento del tráfico recibido sin procesar en KBps durante los siete segundos anteriores. |
rendimiento server.interface.tx | Devuelve un entero que representa el rendimiento del tráfico transmitido sin procesar en KBps durante los siete segundos anteriores. |
rendimiento server.interface.rxtx | Devuelve un entero que representa el rendimiento del tráfico recibido y transmitido sin procesar en KBps durante los siete segundos anteriores. |
server.vlan.id | Devuelve un identificador numérico de la VLAN a través de la cual el paquete actual ingresó al NetScaler. |
client.vlan.id | Devuelve un identificador numérico de la VLAN a través de la cual el paquete actual ingresó al NetScaler. |