Reescritura
Advertencia:
Las funciones de filtro que utilizan directivas clásicas están obsoletas y, como alternativa, Citrix recomienda utilizar las funciones de reescritura y respuesta con una infraestructura de directivas avanzada.
Rewrite se refiere a la reescritura de cierta información en las solicitudes o respuestas manejadas por el dispositivo NetScaler. La reescritura puede ayudar a proporcionar acceso al contenido solicitado sin exponer detalles innecesarios sobre la configuración real del sitio web. Algunas situaciones en las que la función de reescritura resulta útil son las siguientes:
-
Para mejorar la seguridad, NetScaler puede reescribir todos los
http://links
comohttps://
en el cuerpo de respuesta. -
En la implementación de descarga de SSL, los enlaces inseguros de la respuesta deben convertirse en enlaces seguros. Con la opción de reescritura, puede reescribir todo
http://links
https://
para asegurarse de que las respuestas salientes de NetScaler al cliente tengan los enlaces seguros. -
Si un sitio web tiene que mostrar una página de error, puede mostrar una página de error personalizada en lugar de la página de error 404 predeterminada. Por ejemplo, si muestra la página principal o el mapa del sitio web en lugar de una página de error, el visitante permanece en el sitio en lugar de alejarse del sitio web.
-
Si quieres lanzar un nuevo sitio web, pero usas la URL anterior, puede usar la opción Reescribir.
-
Cuando un tema de un sitio tiene una URL complicada, puede reescribirlo con una URL sencilla y fácil de recordar (también conocida como “URL interesante”).
-
Puede agregar el nombre de página predeterminado a la URL de un sitio web. Por ejemplo, si la página predeterminada del sitio web de una empresa es
http://www.abc.com/index.php
, cuando el usuario escribe “abc.com” en la barra de direcciones del explorador, puede volver a escribir la URL en “abc.com/index.php”.
Al habilitar la función de reescritura, NetScaler puede modificar los encabezados y el cuerpo de las solicitudes y respuestas HTTP.
Para reescribir solicitudes y respuestas HTTP, puede utilizar expresiones de directivas NetScaler con reconocimiento de protocolo en las directivas de reescritura que configure. Los servidores virtuales que administran las solicitudes y respuestas HTTP deben ser de tipo HTTP o SSL. En el tráfico HTTP, puede realizar las siguientes acciones:
- Modificar la URL de una solicitud
- Agregar, modificar o eliminar encabezados
- Agrega, reemplaza o elimina cualquier cadena específica del cuerpo o de los encabezados.
Para reescribir las cargas útiles TCP, considere la carga útil como un flujo de bytes sin procesar. Cada uno de los servidores virtuales que administran las conexiones TCP debe ser de tipo TCP o SSL_TCP. El término reescritura TCP se utiliza para referirse a la reescritura de cargas útiles TCP que no son datos HTTP. En el tráfico TCP, puede agregar, modificar o eliminar cualquier parte de la carga útil TCP.
Para ver ejemplos para utilizar la función de reescritura, consulte Ejemplos de directivas y acciones de reescritura.
Comparación entre las opciones de Reescritura y Responder
La principal diferencia entre la función de reescritura y la función de respuesta es la siguiente:
Responder no se puede utilizar para expresiones de respuesta o basadas en servidor. Responder solo se puede utilizar en los siguientes casos según los parámetros del cliente:
- Redirigir una solicitud HTTP a nuevos sitios web o páginas web
- Responder con alguna respuesta personalizada
- Dejar o restablecer una conexión en el nivel de solicitud
Si hay una directiva de respuesta, NetScaler examina la solicitud del cliente, actúa de acuerdo con las directivas aplicables, envía la respuesta al cliente y cierra la conexión con el cliente.
Si hay una directiva de reescritura, NetScaler examina la solicitud del cliente o la respuesta del servidor, actúa de acuerdo con las directivas aplicables y reenvía el tráfico al cliente o al servidor.
En general, se recomienda utilizar un respondedor si quiere que NetScaler restablezca o interrumpe una conexión en función de un cliente o un parámetro basado en solicitudes. Usa el respondedor para redirigir el tráfico o responder con mensajes personalizados. Utilice la reescritura para manipular datos en solicitudes y respuestas HTTP.
Cómo funciona la reescritura
Una directiva de reescritura consiste en una regla y una acción. La regla determina el tráfico al que se aplica la reescritura y la acción determina la acción que debe realizar NetScaler. Puede definir varias directivas de reescritura. Para cada directiva, especifique el punto de enlace y la prioridad.
Un punto de enlace hace referencia a un punto del flujo de tráfico en el que NetScaler examina el tráfico para comprobar si se le puede aplicar alguna directiva de reescritura. Puede enlazar una directiva a un servidor virtual de equilibrio de carga o conmutación de contenido específico, o hacer que la directiva sea global si quiere que la directiva se aplique a todo el tráfico que gestiona NetScaler. Estas directivas se denominan directivas globales.
Además de las directivas definidas por el usuario, NetScaler tiene algunas directivas predeterminadas. No se puede modificar ni eliminar una directiva predeterminada.
Para evaluar las directivas, NetScaler sigue el siguiente orden:
- Directivas globales
- Directivas vinculadas a servidores virtuales específicos
- Directivas predeterminadas
Nota:
NetScaler solo puede aplicar una directiva de reescritura cuando está vinculada a un punto.
NetScaler implementa la función de reescritura en los siguientes pasos:
-
El dispositivo NetScaler comprueba si hay directivas globales y, a continuación, busca directivas en puntos de enlace individuales.
-
Si hay varias directivas enlazadas a un punto de enlace, NetScaler evalúa las directivas en el orden de prioridad. La directiva con mayor prioridad se evalúa en primer lugar. Después de evaluar cada directiva, si la directiva se evalúa como TRUE, agrega la acción asociada a la directiva en la que se realiza la acción asociada. Se produce una coincidencia cuando las funciones especificadas en la regla de directiva coinciden con las funciones de la solicitud o respuesta que se está evaluando.
-
Para cualquier directiva, además de la acción, puede especificar la directiva que debe evaluarse después de evaluar la directiva actual. Esta directiva se conoce como “Ir a la expresión”. Para cualquier directiva, si se especifica Ir a expresión (GoToPriorityExtr), NetScaler evalúa la directiva Ir a expresión. Ignora la directiva con la siguiente prioridad máxima.
Puede especificar la prioridad de la directiva para indicar la directiva Ir a expresión; no puede usar el nombre de la directiva. Si quiere que NetScaler deje de evaluar otras directivas después de evaluar una directiva concreta, puede establecer la expresión Ir a la expresión en “FIN”.
-
Una vez evaluadas todas las directivas o cuando una directiva tiene la opción Ir a expresión establecida como END, NetScaler comienza a realizar las acciones de acuerdo con la lista de acciones.
Para obtener más información sobre la configuración de directivas de reescritura, consulte Configuración de una directiva de reescritura y acerca de las directivas de reescritura vinculantes, consulte Vinculación de una directiva de reescritura.
La siguiente figura ilustra cómo NetScaler procesa una solicitud o respuesta cuando se utiliza la función de reescritura.
Figura 1. El proceso de reescritura
Evaluación de directivas
La directiva con mayor prioridad se evalúa en primer lugar. NetScaler no detiene la evaluación de las directivas de reescritura cuando encuentra una coincidencia. Evalúa todas las directivas de reescritura configuradas en NetScaler.
- Si una directiva se evalúa como TRUE, NetScaler sigue el procedimiento que se indica a continuación:
- Si la directiva tiene la opción Ir a expresión establecida en END, NetScaler deja de evaluar todas las demás directivas y comienza a reescribir.
-
GoToPriorityExpression se puede establecer en ‘NEXT’, ‘END’, algún entero o ‘INVOCATION_LIST’. El valor determina la directiva con la siguiente prioridad. La siguiente tabla muestra la acción realizada por NetScaler para cada valor de la expresión.
Valor de la expresión Acción PRÓXIMO Se evalúa la directiva con la siguiente prioridad. FIN Se detiene la evaluación de las directivas. <an integer>
Se evalúa la directiva con prioridad especificada. INVOCATION_LIST Goto NEXT o END se aplica en función del resultado de la lista de invocación.
- Si una directiva se evalúa como FALSE, NetScaler continúa la evaluación por orden de prioridad.
- Si una directiva se evalúa como UNDEFINED (no se puede evaluar en el tráfico recibido debido a un error), NetScaler realiza la acción asignada a la condición UNDEFINED (denominada UnDefaction) y detiene la evaluación adicional de las directivas.
NetScaler inicia la reescritura propiamente dicha solo una vez finalizada la evaluación. Hace referencia a la lista de acciones identificadas por las directivas que se evalúan como TRUE e inicia la reescritura. Tras implementar todas las acciones de la lista, NetScaler reenvía el tráfico según sea necesario.
Nota:
Asegúrese de que las directivas no especifican acciones conflictivas o superpuestas en la misma parte del encabezado o cuerpo HTTP, ni en la carga útil TCP. Cuando se produce un conflicto de este tipo, NetScaler encuentra una situación indefinida y anula la reescritura.
Acciones de reescritura
En el dispositivo NetScaler, especifique las acciones que se van a realizar, como agregar, reemplazar o eliminar texto del cuerpo, o agregar, modificar o eliminar encabezados o cualquier cambio en la carga útil de TCP como acciones de reescritura. Para obtener más información sobre las acciones de reescritura, consulte Configuración de una acción de reescritura.
En la siguiente tabla se describen los pasos que puede realizar NetScaler cuando una directiva se evalúa como TRUE.
Acción | Resultado |
---|---|
Insertar | Se lleva a cabo la acción de reescritura especificada para la directiva. |
NOREWRITE | La solicitud o respuesta no se vuelve a escribir. NetScaler reenvía el tráfico sin reescribir ninguna parte del mensaje. |
RESET | La conexión se anula en el nivel TCP. |
DROP | Se descarta el mensaje. |
Nota:
Para cualquier directiva, puede configurar la acción inferior (acción que se realizará cuando la directiva se evalúe como UNDEFINED) como NOREWRITE, RESET o DROP.
Para utilizar la función de reescritura, realice los siguientes pasos:
- Habilite la función en NetScaler.
- Defina acciones de reescritura.
- Defina directivas de reescritura.
- Enlazar las directivas a un punto de enlace para que la directiva entre en vigor.
Habilitar reescritura
Habilite la función de reescritura en el dispositivo NetScaler si quiere volver a escribir las solicitudes o respuestas HTTP o TCP. Si la función está habilitada, NetScaler realiza una acción de reescritura de acuerdo con las directivas especificadas. Para obtener más información, consulte Cómo funciona la reescritura.
Para habilitar la entidad de reescritura mediante la interfaz de línea de comandos
En el símbolo del sistema, escriba los siguientes comandos para habilitar la función de reescritura y verificar la configuración:
- habilitar función ns REESCRIBIR
- función show ns
Ejemplo:
> enable ns feature REWRITE
Done
> show ns feature
Feature Acronym Status
------- ------- ------
1) Web Logging WL OFF
2) Surge Protection SP ON
.
.
.
1) Rewrite REWRITE ON
.
.
1) NetScaler Push push OFF
Done
<!--NeedCopy-->
Para habilitar la función de reescritura mediante la interfaz gráfica de usuario
- En el panel de navegación, haga clic en Sistemay, a continuación, en Configuración.
- En el panel de detalles, en Modos y funciones, haga clic en Configurar funciones básicas.
- En el cuadro de diálogo Configurar funciones básicas, active la casilla de verificación Reescritura y, a continuación, haga clic en Aceptar.
- En el cuadro de diálogo Habilitar/inhabilitar funciones, haga clic en Sí. Aparece un mensaje en la barra de estado que indica que la función seleccionada se ha habilitado.
Configurar una acción de reescritura
Advertencia
La función Pattern en una acción de reescritura está en desuso a partir de la versión 56.20 de NetScaler 12.0 y, como alternativa, Citrix recomienda utilizar el parámetro de acción de reescritura de búsqueda.
Una acción de reescritura indica los cambios realizados en una solicitud o respuesta antes de enviarla a un servidor o cliente.
Las expresiones definen lo siguiente:
-
Tipo de acción de reescritura.
-
Ubicación de la acción de reescritura.
-
Tipo de configuración de acción de reescritura.
Por ejemplo, una acción DELETE solo utiliza una expresión de destino. Una acción REEMPLAZAR utiliza una expresión de destino y una expresión para configurar el texto de sustitución.
Después de habilitar la función de reescritura, debe configurar una o varias acciones a menos que sea suficiente con una acción de reescritura integrada. Todas las acciones integradas tienen nombres que comienzan por la cadena ns_cvpn, seguidos de una cadena de letras y caracteres de guión bajo. Las acciones integradas realizan tareas útiles y complejas, como decodificar partes de una solicitud o respuesta de VPN sin cliente o modificar datos JavaScript o XML. Las acciones integradas se pueden ver, habilitar y inhabilitar, pero no se pueden modificar ni eliminar.
Nota:
Los tipos de acción que solo se pueden utilizar para la reescritura HTTP se identifican en la columna Tipo de acción de reescritura.
Para obtener más información, consulte Parámetro Type.
Crear una acción de reescritura mediante la interfaz de línea de comandos
En el símbolo del sistema, escriba los siguientes comandos para crear una acción de reescritura y comprobar la configuración:
add rewrite action <name> <type> <target> [<stringBuilderExpr>] [-search <expression>] [refineSearch <expression>] [-comment<string>]
show rewrite action <name>
Para obtener más información, consulte la tabla Tipos de acción de reescritura y sus argumentos .
La función de reescritura tiene las siguientes acciones integradas:
-
Norewrite-envía la solicitud o respuesta al usuario sin volver a escribirla.
-
RESET: restablece la conexión y notifica al explorador del usuario para que el usuario pueda reenviar la solicitud.
-
DROP: interrumpe la conexión sin enviar una respuesta al usuario.
Uno de los siguientes tipos de flujo está asociado implícitamente a cada acción:
-
Solicitud: la acción se aplica a la solicitud.
-
Respuesta: la acción se aplica a la respuesta.
-
Neutral: la acción se aplica tanto a las solicitudes como a las respuestas.
Name
Nombre de la acción de reescritura definida por el usuario. Debe comenzar con una letra, un número o un carácter de guión bajo (_) y debe contener solo letras, números y guión (-), punto (.), guión (.), espacio(), at (@), igual a (=), dos puntos (:) y guión bajo. Se puede cambiar después de agregar la directiva de reescritura.
parámetro Type
El parámetro Type muestra el tipo de acción de reescritura definida por el usuario.
A continuación se indican los valores del parámetro Type :
-
REPLACE <target> <string_builder_expr>
. Sustituye la cadena de destino por la expresión generadora de cadenas.
Ejemplo:
> add rewrite action replace_http_act replace http.res.body(100) '"new_replaced_data"'
Done
> sh rewrite action replace_http_act
Name: replace_http_act
Operation: replace
Target:http.res.body(100)
Value:"new_replaced_data"
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
REPLACE_ALL <target> <string_builder_expr1> -(search) <s>
- En la solicitud o respuesta especificada por<target>
, reemplaza todas las apariciones de la cadena definida por por<pattern_to_search>
la cadena definida por<string_builder_expr>
. Puede utilizar la opción de búsqueda para encontrar las cadenas que se van a reemplazar.
Ejemplo:
> add policy patset pat_list_2
Done
> bind policy patset pat_list_2 "www.abc.com"
Done
> bind policy patset pat_list_2 "www.def.com"
Done
> add rewrite action refineSearch_act_31 replace_all "HTTP.RES.BODY(100000)" ""https://""-search "patset("pat_list_2")" -refineSearch "EXTEND(7,0).REGEX_SELECT(re#http://#)"
Done
> sh rewrite action refineSearch_act_31
Name: refineSearch_act_31
Operation: replace_all
Target:HTTP.RES.BODY(100000)
Refine Search:EXTEND(7,0).REGEX_SELECT(re#http://#)
Value:"https://"
Search: patset("pat_list_2")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
REPLACE_HTTP_RES <string_builder_expr>
. Reemplaza la respuesta HTTP completa por la cadena definida por la expresión del generador de cadenas.
Ejemplo:
> add rewrite action replace_http_res_act replace_http_res '"HTTP/1.1 200 OK\r\n\r\nSending from ADC"'
Done
> sh rewrite action replace_http_res_act
Name: replace_http_res_act
Operation: replace_http_res
Target:"HTTP/1.1 200 OK
Sending from ADC"
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
REPLACE_SIP_RES <target>
. Reemplaza la respuesta SIP completa por la cadena especificada por<target>
.
Ejemplo:
> add rewrite action replace_sip_res_act replace_sip_res '"HTTP/1.1 200 OK\r\n\r\nSending from ADC"'
Done
> sh rewrite action replace_sip_res_act
Name: replace_sip_res_act
Operation: replace_sip_res
Target:"HTTP/1.1 200 OK
Sending from ADC"
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
INSERT_HTTP_HEADER <header_string> <contents_string_builder_expr>
. Inserta el encabezado HTTP especificado porheader_string
y el contenido del encabezado especificado porcontents_string_builder_expr
.
Ejemplo:
> add rewrite action ins_cip_header insert_http_header "CIP" "CLIENT.IP.SRC"
Done
> sh rewrite action ins_cip_header
Name: ins_cip_header
Operation: insert_http_header
Target:CIP
Value:CLIENT.IP.SRC
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
DELETE_HTTP_HEADER <target>
. Elimina el encabezado HTTP especificado por<target>
Ejemplo:
> add rewrite action del_true_client_ip_header delete_http_header "True-Client-IP"
Done
> sh rewrite action del_true_client_ip_header
Name: del_true_client_ip_header
Operation: delete_http_header
Target:True-Client-IP
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
CORRUPT_HTTP_HEADER <target>
. Reemplaza el nombre del encabezado de todas las apariciones del encabezado HTTP especificado por<target>
un nombre dañado, de modo que el receptor no lo reconozca. Ejemplo: MY_HEADER se cambia a MHEY_ADER.
Ejemplo:
> add rewrite action corrupt_content_length_hdr corrupt_http_header "Content-Length"
Done
> sh rewrite action corrupt_content_length_hdr
Name: corrupt_content_length_hdr
Operation: corrupt_http_header
Target:Content-Length
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
INSERT_BEFORE <string_builder_expr1> <string_builder_expr1>
. Busca la cadena especificada en<string_builder_expr1>
e inserta la cadena<string_builder_expr2>
delante de ella.
> add rewrite action insert_before_ex_act insert_before http.res.body(100) '"Add this string in the starting"'
Done
> sh rewrite action insert_before_ex_act
Name: insert_before_ex_act
Operation: insert_before
Target:http.res.body(100)
Value:"Add this string in the starting"
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
INSERT_BEFORE_ALL <target> <string_builder_expr1> -(search) <string_builder_expr2>
. En la solicitud o respuesta especificada por<target>
, localiza todas las apariciones de la cadena especificada ene inserta la cadena especificada en antes de eso. Puede utilizar la opción de búsqueda para encontrar las cadenas.
Ejemplo:
> add policy patset pat
Done
> bind policy patset pat abcd
Done
> add rewrite action refineSearch_act_1 insert_before_all http.res.body(10) 'target.prefix(10) + "refineSearch_testing"' -search patset("pat") -refineSearch extend(10,10)
Done
> sh rewrite action refineSearch_act_1
Name: refineSearch_act_1
Operation: insert_before_all
Target:http.res.body(10)
Refine Search:extend(10,10)
Value:target.prefix(10) + "refineSearch_testing"
Search: patset("pat")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
INSERT_AFTER <string_builder_expr1> <string_builder_expr2>
. Inserta la cadena especificada porstring_builder_expr2
después de la cadenastring_builder_expr1
.
Ejemplo:
> add rewrite action insert_after_act insert_after http.req.body(100) '"add this string after 100 bytes"'
Done
> sh rewrite action insert_after_act
Name: insert_after_act
Operation: insert_after
Target:http.req.body(100)
Value:"add this string after 100 bytes"
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
INSERT_AFTER_ALL <target> <string_builder_expr1> -(search) <string_builder_expr2>
. En la solicitud o respuesta especificada por<target>
, localiza todas las apariciones de la cadena especificada por<string_builder_expr2>
e inserta la cadena especificada por<string_builder_expr1>
después de ella. Puede usar la función de búsqueda para encontrar las cadenas.
Ejemplo:
> add rewrite action refineSearch_act_2 insert_after_all http.res.body(100) '"refineSearch_testing"' -search text("abc") -refineSearch extend(0, 10)
Done
> sh rewrite action refineSearch_act_2
Name: refineSearch_act_2
Operation: insert_after_all
Target:http.res.body(100)
Refine Search:extend(0, 10)
Value:"refineSearch_testing"
Search: text("abc")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
DELETE <target>
. Elimina la cadena especificada por el destino.
Ejemplo:
> add rewrite action delete_ex_act delete http.req.header("HDR")
Done
> sh rewrite action delete_ex_act
Name: delete_ex_act
Operation: delete
Target:http.req.header("HDR")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
DELETE_ALL <target> -(search) <string_builder_expr>
. En la solicitud o respuesta especificada por<target>
, localiza y elimina todas las apariciones de la cadena especificada por<string_builder_expr>
. Puede usar la función de búsqueda para encontrar las cadenas.
Ejemplo:
>add rewrite action refineSearch_act_4 delete_all "HTTP.RES.BODY(50000)" -search text("Windows Desktops") -refineSearch "EXTEND(40,40).REGEX_SELECT(re#\s`\*`<AppData>.`\*`\s`\*`<\\/AppData>#)"
Done
> show REWRITE action refineSearch_act_4
Name: refineSearch_act_4
Operation: delete_all
Target:HTTP.RES.BODY(50000)
Refine Search:EXTEND(40,40).REGEX_SELECT(re#\s`\*`<AppData>.`\*`\s`\*`</AppData>#)
Search: text("Windows Desktops")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
REPLACE_DIAMETER_HEADER_FIELD <target> <field value>
. En la solicitud o respuestas, modifique el campo de encabezado especificado por<target>
. UseDiameter.req.flags.SET(<flag>)
oDiameter.req.flags.UNSET<flag>
comostringbuilderexpression
para configurar o desconfigurar banderas.
Ejemplo:
> add rewrite action replace_diameter_field_ex_act replace_diameter_header_field diameter.req.flags diameter.req.flags.set(PROXIABLE)
Done
> sh rewrite action replace_diameter_field_ex_act
Name: replace_diameter_field_ex_act
Operation: replace_diameter_header_field
Target:diameter.req.flags
Value:diameter.req.flags.set(PROXIABLE)
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
REPLACE_DNS_HEADER_FIELD <target>
. En la solicitud o respuesta modifica el campo de encabezado especificado por<target>
.
Ejemplo:
> add rewrite action replace_dns_hdr_act replace_dns_header_field dns.req.header.flags.set(AA)
Done
> sh rewrite action replace_dns_hdr_act
Name: replace_dns_hdr_act
Operation: replace_dns_header_field
Target:dns.req.header.flags.set(AA)
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
REPLACE_DNS_ANSWER_SECTION <target>
. Reemplaza la sección de respuestas DNS en la respuesta. Esto se aplica únicamente a los registros A y AAAA. Use expresionesDNS.NEW_RRSET_A
yNS.NEW_RRSET_AAAA
para configurar la nueva sección de respuestas.
Ejemplo:
> add rewrite action replace_dns_ans_act replace_dns_answer_section DNS.NEW_RRSET_A("1.1.1.1", 10)
Done
> sh rewrite action replace_dns_ans_act
Name: replace_dns_ans_act
Operation: replace_dns_answer_section
Target:DNS.NEW_RRSET_A("1.1.1.1", 10)
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
CLIENTLESS_VPN_DECODE<target>
. Decodifica el patrón especificado por el destino en formato VPN sin cliente.
Ejemplo:
> add rewrite action cvpn_decode_act_1 clientless_vpn_decode http.req.body(100)
Done
> sh rewrite action cvpn_decode_act_1
Name: cvpn_decode_act_1
Operation: clientless_vpn_decode
Target:http.req.body(100)
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
CLIENTLESS_VPN_DECODE_ALL<target>-search<expression>
. Decodifica TODOS los patrones especificados por el parámetro de búsqueda en formato VPN sin cliente.
Ejemplo:
> add rewrite action act1 clientless_vpn_decode_all http.req.body(100) -search text("abcd")
Done
> sh rewrite action act1
Name: act1
Operation: clientless_vpn_decode_all
Target:http.req.body(100)
Search: text("abcd")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
CLIENTLESS_VPN_ENCODE<target>
. Codifica el patrón especificado por target en formato VPN sin cliente.
Ejemplo:
> add rewrite action cvpn_encode_act_1 clientless_vpn_encode http.req.body(100)
Done
> sh rewrite action cvpn_encode_act_1
Name: cvpn_encode_act_1
Operation: clientless_vpn_encode
Target:http.req.body(100)
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
CLIENTLESS_VPN_ENCODE_ALL<target>-search<expression>
. Codifica TODOS los patrones especificados en el parámetro de búsqueda en formato VPN sin cliente.
Ejemplo:
> add rewrite action act2 clientless_vpn_encode_all http.req.body(100) -search text("abcd")
Done
> sh rewrite action act2
Name: act1
Operation: clientless_vpn_encode_all
Target:http.req.body(100)
Search: text("abcd")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
CORRUPT_SIP_HEADER<target>
. Reemplaza el nombre del encabezado de todas las apariciones del encabezado SIP especificado por<target>
con un nombre dañado, de modo que el receptor no lo reconozca.
Ejemplo:
> add rewrite action corrupt_sip_hdr_act corrupt_sip_header SIP_HDR
Done
> sh rewrite action corrupt_sip_hdr_act
Name: corrupt_sip_hdr_act
Operation: corrupt_sip_header
Target:SIP_HDR
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
INSERT_SIP_HEADER <header_string_builder_expr> <contents_string_builder_expr>
. Inserta el encabezado SIP especificado por<header_string_builder_expr>
y el contenido del encabezado especificado por<contents_string_builder_expr>
.
Ejemplo:
> add rewrite action insert_sip_hdr_act insert_sip_header SIP_HDR '"inserting_sip_header"'
Done
>sh rewrite action insert_sip_hdr_act
Name: insert_sip_hdr_act
Operation: insert_sip_header
Target:SIP_HDR
Value:"inserting_sip_header"
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
DELETE_SIP_HEADER<target>
. Elimina el encabezado SIP especificado por<target>
Ejemplo:
> add rewrite action delete_sip_hdr delete_sip_header SIP_HDR
Done
> sh rewrite action delete_sip_hdr
Name: delete_sip_hdr
Operation: delete_sip_header
Target:SIP_HDR
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
Parámetro objetivo
El parámetro Target es una expresión que especifica qué parte de la solicitud o respuesta se va a reescribir.
StringBuilderExpr
StringBuilderExpr es una expresión que especifica el contenido que se va a insertar en la solicitud o respuesta en la ubicación especificada. Esta expresión sustituye a una cadena especificada.
Ejemplo 1. Inserción de un encabezado HTTP con la IP del cliente:
> add rewrite action insertact INSERT_HTTP_HEADER "client-IP" CLIENT.IP.SRC
Done
> show rewrite action insertact
Name: insertact
Operation: insert_http_header
Target:Client-IP
Value:CLIENT.IP.SRC
BypassSafetyCheck : NO
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
Ejemplo 2. Reemplazo de cadenas en una carga útil TCP (reescritura TCP):
> add rewrite action client_tcp_payload_replace_all REPLACE_ALL
'client.tcp.payload(1000)' '"new-string"' -search text("old-string")
Done
> show rewrite action client_tcp_payload_replace_all
Name: client_tcp_payload_replace_all
Operation: replace_all
Target:client.tcp.payload(1000)
Value:"new-string"
Search: text("old-string")
BypassSafetyCheck : NO
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
>
<!--NeedCopy-->
Buscar una parte de la solicitud o respuesta para volver a escribirla
La funcionalidad de búsqueda ayuda a encontrar todas las instancias del patrón requerido en la solicitud o respuesta.
La funcionalidad de búsqueda se debe utilizar en los siguientes tipos de acción:
- INSERT_BEFORE_ALL
- INSERT_AFTER_ALL
- REPLACE_ALL
- DELETE_ALL
- CLIENTLESS_VPN_ENCODE_ALL
- CLIENTLESS_VPN_DECODE_ALL
La funcionalidad de búsqueda no se puede utilizar con los siguientes tipos de acción:
- INSERT_HTTP_HEADER
- INSERT_BEFORE
- INSERT_AFTER
- REEMPLAZAR
- SUPRIMIR
- DELETE_HTTP_HEADER
- CORRUPT_HTTP_HEADER
- REPLACE_HTTP_RES
- CLIENTLESS_VPN_ENCODE
- CLIENTLESS_VPN_DECODE
- INSERT_SIP_HEADER
- DELETE_SIP_HEADER
- CORRUPT_SIP_HEADER
- REPLACE_DIAMETER_HEADER_FIELD
- REPLACE_DNS_ANSWER_SECTION
- REPLACE_DNS_HEADER_FIELD
- REPLACE_SIP_RES
Se admiten los siguientes tipos de búsqueda:
- Text - Una cadena literal Ejemplo: -search text (“hola”)
- Expresión regular: patrón que se utiliza para hacer coincidir varias cadenas en la solicitud o respuesta Ejemplo ፦expresión regular de búsqueda (re~^hello*~)
- XPATH: expresión XPATH para buscar XML. Ejemplo ፦buscar xpath (xp%/a/b%)
- JSON: expresión XPATH para buscar en JSON. Ejemplo ፦search xpath_json (xp%/a/b%) HTML - Expresión XPATH para buscar HTML Ejemplo ፦search xpath_html (xp%/html/body%) Patset - Busca todos los patrones enlazados a la entidad patset. Ejemplo: -search patset(“patset1”)
- Datset: busca todos los patrones enlazados a la entidad de conjunto de datos. Ejemplo: -search dataset(“dataset1”)
- AVP: número AVP que se utiliza para hacer coincidir varios AVP en un mensaje de diámetro/radio Ejemplo ፦search avp (999)
Afinar los resultados de la búsqueda
Puede utilizar la funcionalidad Perfeccionar búsqueda para especificar los criterios adicionales para refinar los resultados de la búsqueda. La funcionalidad Perfeccionar búsqueda solo se puede utilizar si se utiliza la funcionalidad de búsqueda. El parámetro Refine search siempre comienza con la operación “extend (m, n)”, donde ‘m’ especifica algunos bytes a la izquierda del resultado de la búsqueda y ‘n’ especifica varios bytes a la derecha del resultado de la búsqueda para ampliar el área seleccionada.
Si la acción de reescritura configurada es:
> add rewrite action test_refine_search replace_all http.res.body(10) '”testing_refine_search”' -search text("abc") -refineSearch extend(1,1)
And the HTTP response body is abcxxxx456.
<!--NeedCopy-->
A continuación, el parámetro search encuentra el patrón “abc” y, dado que el parámetro RefineSearch también está configurado para comprobar un byte adicional a la izquierda y un byte adicional a la derecha del patrón coincidente. El texto sustituido resultante es: abcx. Por lo tanto, el resultado de esta acción es testing_refine_searchxxx456
.
Ejemplo 1:Uso de la funcionalidad Perfeccionar búsqueda en el tipo de acción INSERT_BEFORE_ALL.
> add policy patset pat
Done
> bind policy patset pat abcd
Done
> add rewrite action refineSearch_act_1 insert_before_all http.res.body(10) 'target.prefix(10) + "refineSearch_testing"' -search patset("pat") -refineSearch extend(10,10)
Done
> sh rewrite action refineSearch_act_1
Name: refineSearch_act_1
Operation: insert_before_all
Target:http.res.body(10)
Refine Search:extend(10,10)
Value:target.prefix(10) + "refineSearch_testing"
Search: patset("pat")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
Ejemplo 2: Uso de la funcionalidad Perfeccionar búsqueda en el tipo de acción INSERT_AFTER_ALL.
> add rewrite action refineSearch_act_2 insert_after_all http.res.body(100) '"refineSearch_testing"' -search text("abc") -refineSearch extend(0, 10)
Done
> sh rewrite action refineSearch_act_2
Name: refineSearch_act_2
Operation: insert_after_all
Target:http.res.body(100)
Refine Search:extend(0, 10)
Value:"refineSearch_testing"
Search: text("abc")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
Ejemplo 3: Uso de la funcionalidad Perfeccionar búsqueda en el tipo de acción REPLACE_ALL.
> add policy patset pat_list_2
Done
> bind policy patset pat_list_2 "www.abc.com"
Done
> bind policy patset pat_list_2 "www.def.com"
Done
> add rewrite action refineSearch_act_31 replace_all "HTTP.RES.BODY(100000)" ""https://"" -search "patset("pat_list_2")" -refineSearch "EXTEND(7,0).REGEX_SELECT(re#http://#)"
Done
> sh rewrite action refineSearch_act_31
Name: refineSearch_act_31
Operation: replace_all
Target:HTTP.RES.BODY(100000)
Refine Search:EXTEND(7,0).REGEX_SELECT(re#http://#)
Value:"https://"
Search: patset("pat_list_2")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
Ejemplo 4: Uso de la funcionalidad Perfeccionar búsqueda en el tipo de acción DELETE_ALL.
>add rewrite action refineSearch_act_4 delete_all "HTTP.RES.BODY(50000)" -search text("Windows Desktops") -refineSearch "EXTEND(40,40).REGEX_SELECT(re#\s*<AppData>.\*\s\*<\\/AppData>#)"
> show REWRITE action refineSearch_act_4
Name: refineSearch_act_4
Operation: delete_all
Target:HTTP.RES.BODY(50000)
Refine Search:EXTEND(40,40).REGEX_SELECT(re#\s*<AppData>.\*\s\*</AppData>#)
Search: text("Windows Desktops")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
>
<!--NeedCopy-->
Ejemplo 5: Uso de la funcionalidad Refinar búsqueda en el tipo de acción CLIENTLESS_VPN_ENCODE_ALL.
’’’
add rewrite action act2 clientless_vpn_encode_all http.req.body(100) -search text(“abcd”) Done sh rewrite action act2 Name: act1 Operation: clientless_vpn_encode_all Target:http.req.body(100) Search: text(“abcd”) Hits: 0 Undef Hits: 0 Action Reference Count: 0 Done
’’’
Ejemplo 6: Uso de la funcionalidad Refinar búsqueda en el tipo de acción CLIENTLESS_VPN_DECODE_ALL.
> add rewrite action act1 clientless_vpn_decode_all http.req.body(100) -search text("abcd")
Done
> sh rewrite action act1
Name: act1
Operation: clientless_vpn_decode_all
Target:http.req.body(100)
Search: text("abcd")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
>
<!--NeedCopy-->
Modificar una acción de reescritura existente mediante la interfaz de línea de comandos
En el símbolo del sistema, escriba los siguientes comandos para modificar una acción de reescritura existente y compruebe la configuración:
set rewrite action <name> [-target <expression>] [-stringBuilderExpr <expression>] [-search <expression>] [-refineSearch <expression>] [-comment <string>]
En el símbolo del sistema, escriba los siguientes comandos para verificar la configuración modificada
show rewrite action <name>
Ejemplo:
> set rewrite action insertact -target "Client-IP"
Done
> show rewrite action insertact
Name: insertact
Operation: insert_http_header Target:Client-IP
Value:CLIENT.IP.SRC
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
Eliminar una acción de reescritura mediante la interfaz de línea de comandos
En el símbolo del sistema, escriba los siguientes comandos para quitar una acción de reescritura:
rm rewrite action <name>
Ejemplo:
> rm rewrite action insertact
Done
<!--NeedCopy-->
Configurar una acción de reescritura mediante la utilidad de configuración
- Vaya a AppExpert > Rewrite > Actions.
- En el panel de detalles, realice una de las acciones siguientes:
- Para crear una acción, haga clic en Agregar.
- Para modificar una acción existente, selecciónela y, a continuación, haga clic en Modificar.
- Haga clic en Crear o Aceptar. Aparece un mensaje en la barra de estado que indica que la acción se ha configurado correctamente.
- Repita los pasos 2 a 4 para crear o modificar tantas acciones de reescritura como quiera.
- Haga clic en Cerrar.
Agregue una expresión mediante el cuadro de diálogo Agregar expresión
- En el cuadro de diálogo Crear acción de reescritura o Configurar acción de reescritura, en el área de texto del argumento de tipo que quiera introducir, haga clic en Agregar.
-
En el cuadro de diálogo Agregar expresión, en el primer cuadro de lista, elija el primer término de la expresión.
- HTTP. El protocolo HTTP. Elija esta opción si quiere examinar algún aspecto de la solicitud que pertenece al protocolo HTTP.
- SYS. Los sitios web protegidos. Elija esta opción si quiere examinar algún aspecto de la solicitud que pertenece al destinatario de la solicitud.
- CLIENT. El equipo que envió la solicitud. Elija esta opción si quiere examinar algún aspecto del remitente de la solicitud.
Al elegir, el cuadro de lista situado más a la derecha muestra los términos apropiados para la siguiente parte de la expresión.
-
En el segundo cuadro de lista, elige el segundo término para su expresión. Las elecciones dependen de la elección que haya realizado en el paso anterior y son apropiadas para el contexto. Después de hacer la segunda elección, la ventana de Ayuda situada debajo de la ventana Construir expresión (que estaba en blanco) muestra ayuda para describir el propósito y el uso del término que acaba de elegir.
-
Siga eligiendo términos en los cuadros de lista que aparecen a la derecha del cuadro de lista anterior o escribiendo cadenas o números en los cuadros de texto que aparecen para pedirle que escriba un valor hasta que finalice la expresión. Para obtener más información sobre el lenguaje de expresiones PI y la creación de expresiones para directivas de respuesta, consulte “Directivas y expresiones. “
Si quiere probar el efecto de una acción de reescritura cuando se utiliza en datos HTTP de ejemplo, puede utilizar el Evaluador de expresiones de reescritura.
Reescritura de cargas útiles TCP
Las expresiones de destino de las acciones de reescritura de TCP deben comenzar con uno de los prefijos de expresión siguientes:
- CLIENT.TCP.PAYLOAD. Para reescribir cargas útiles TCP en solicitudes de clientes. Por ejemplo, CLIENT.TCP.PAYLOAD(10000).AFTER_STR(“string1”).
- SERVIDOR.TCP.PAYLOAD. Para reescribir cargas útiles TCP en las respuestas del servidor. Por ejemplo, SERVER.TCP.PAYLOAD(1000).B64DECODE.BETWEEN(“string1”,”string2”).
Evaluar una acción de reescritura mediante el cuadro de diálogo Rewrite Action Evaluator
- En el panel de detalles Acciones de reescritura, seleccione la acción de reescritura que quiere evaluar y, a continuación, haga clic en Evaluar.
-
En el cuadro de diálogo Reescribir evaluador de expresiones, especifique los valores de los siguientes parámetros. (Un asterisco indica un parámetro obligatorio).
Acción de reescritura: si la acción de reescritura que quiere evaluar no está seleccionada, selecciónela en la lista desplegable. Tras seleccionar una acción de reescritura, en la sección Detalles se muestran los detalles de la acción de reescritura seleccionada. Nuevo: seleccione Nuevo para abrir el cuadro de diálogo Crear acción de reescritura y crear una acción de reescritura. Modificar (Modify): seleccione Modificar para abrir el cuadro de diálogo Configurar acción de reescritura y modificar la acción de reescritura seleccionada. Tipo de flujo: especifica si se debe probar la acción de reescritura seleccionada con datos de solicitud HTTP o datos de respuesta HTTP. El valor predeterminado es Solicitud. Si quieres probar con datos de respuesta, seleccione Respuesta. Datos de solicitud o respuesta HTTP*: proporciona espacio para proporcionar los datos HTTP que el evaluador de acciones de reescritura utiliza para las pruebas. Puede pegar los datos directamente en la ventana o hacer clic en Muestra para insertar algunos encabezados HTTP de ejemplo. Mostrar fin de línea: especifica si se deben mostrar caracteres de final de línea de estilo UNIX (\ n) al final de cada línea de datos HTTP de muestra. Ejemplo: inserta datos HTTP de ejemplo en la ventana Datos de solicitud/respuesta HTTP. Puede elegir datos GET o POST. Examinar: abre una ventana de exploración local para que pueda elegir un archivo que contenga datos HTTP de ejemplo de una ubicación local o de red. Borrar: borra los datos HTTP de muestra actuales de la ventana Datos de solicitud/respuesta HTTP.
- Haga clic en Evaluar. El evaluador de acciones de reescritura evalúa el efecto de la acción Reescribir en los datos de ejemplo elegidos y muestra los resultados modificados por la acción Reescritura seleccionada en la ventana Resultados . Las adiciones y eliminaciones se resaltan como se indica en la leyenda de la esquina inferior izquierda del cuadro de diálogo.
-
Continúa evaluando las acciones de reescritura hasta que hayas determinado que todas tus acciones tienen el efecto que querías.
- Puede modificar la acción de reescritura seleccionada y probar la versión modificada haciendo clic en Modificar para abrir el cuadro de diálogo Configurar acción de reescritura, realizar y guardar los cambios y, a continuación, volver a hacer clic en Evaluar.
- Puede evaluar una acción de reescritura diferente con los mismos datos de solicitud o respuesta seleccionándola en la lista desplegable Acción de reescritura y, a continuación, haciendo clic en Evaluar de nuevo.
-
Haga clic en Cerrar para cerrar el evaluador de reescritura de expresiones y volver al panel Acciones de reescritura .
- Para eliminar una acción de reescritura, seleccione la acción de reescritura que quiera eliminar y, a continuación, haga clic en Eliminar y, cuando se le solicite, confirme su elección haciendo clic en Aceptar.
Configurar la directiva de reescritura
Después de crear las acciones de reescritura necesarias, debe crear al menos una directiva de reescritura para seleccionar las solicitudes que quiere que reescriba el dispositivo NetScaler.
Una directiva de reescritura consiste en una regla, que a su vez consta de una o más expresiones, y una acción asociada que se lleva a cabo si una solicitud o respuesta coincide con la regla. Las reglas de directiva para evaluar las solicitudes y respuestas HTTP se pueden basar en casi cualquier parte de una solicitud o respuesta.
Aunque no se pueden utilizar acciones de reescritura de TCP para reescribir datos que no sean la carga útil TCP, puede basar las reglas de directiva para las directivas de reescritura de TCP en la información de la capa de transporte y en las capas situadas debajo de la capa de transporte.
Si una regla configurada coincide con una solicitud o respuesta, se desencadena la directiva correspondiente y se lleva a cabo la acción asociada a ella.
Nota:
Puede utilizar la interfaz de línea de comandos o la GUI para crear y configurar directivas de reescritura. Los usuarios que no están completamente familiarizados con la interfaz de línea de comandos y el lenguaje de expresión de directivas de NetScaler normalmente encontrarán mucho más fácil utilizar la interfaz gráfica de usuario.
Para agregar una nueva directiva de reescritura mediante la interfaz de línea de comandos
En el símbolo del sistema, escriba los siguientes comandos para agregar una nueva directiva de reescritura y compruebe la configuración:
<add rewrite policy <name> <expression> <action> [<undefaction>]
<show rewrite policy <name>
Ejemplo 1. Reescritura de contenido HTTP
> add rewrite policyNew "HTTP.RES.IS_VALID" insertact NOREWRITE
Done
> show rewrite policyNew
Name: policyNew
Rule: HTTP.RES.IS_VALID
RewriteAction: insertact
UndefAction: NOREWRITE
Hits: 0
Undef Hits: 0
Done
<!--NeedCopy-->
Ejemplo 2. Reescritura de una carga útil TCP (reescritura TCP):
> add rewrite policy client_tcp_payload_policy CLIENT.IP.SRC.EQ(172.168.12.232) client_tcp_payload_replace_all
Done
> show rewrite policy client_tcp_payload_policy
Name: client_tcp_payload_policy
Rule: CLIENT.IP.SRC.EQ(172.168.12.232)
RewriteAction: client_tcp_payload_replace_all
UndefAction: Use Global
LogAction: Use Global
Hits: 0
Undef Hits: 0
Done
>
<!--NeedCopy-->
Para modificar una directiva de reescritura existente mediante la interfaz de línea de comandos
En el símbolo del sistema, escriba los siguientes comandos para modificar una directiva de reescritura existente y compruebe la configuración:
<set rewrite policy <name> -rule <expression> -action <action> [<undefaction>]
<show rewrite policy <name>
Ejemplo:
> set rewrite policyNew -rule "HTTP.RES.IS_VALID" -action insertaction
Done
> show rewrite policyNew
Name: policyNew
Rule: HTTP.RES.IS_VALID
RewriteAction: insertaction
UndefAction: NOREWRITE
Hits: 0
Undef Hits: 0
Done
<!--NeedCopy-->
Para quitar una directiva de reescritura mediante la interfaz de línea de comandos
En el símbolo del sistema, escriba el siguiente comando para quitar una directiva de reescritura:
rm rewrite policy <name>
Ejemplo:
> rm rewrite policyNew
Done
<!--NeedCopy-->
Para configurar una directiva de reescritura mediante la interfaz gráfica de usuario
- Vaya a AppExpert > Rewrite > Policies.
- En el panel de detalles, realice una de las acciones siguientes:
- Para crear una directiva, haga clic en Agregar.
- Para modificar una directiva existente, selecciónela y, a continuación, haga clic en Abrir.
- Haga clic en Crear o Aceptar. Aparece un mensaje en la barra de estado que indica que la directiva se ha configurado correctamente.
- Repita los pasos 2 a 4 para crear o modificar tantas acciones de reescritura como quiera.
- Haga clic en Cerrar. Para eliminar una directiva de reescritura, seleccione la directiva de reescritura que quiera eliminar, haga clic en Quitar y, cuando se le solicite, confirme su elección haciendo clic en Aceptar.
Vincular la directiva de reescritura
Después de crear una directiva de reescritura, debe vincularla para que se aplique. Puede enlazar su directiva a Global si quiere aplicarla a todo el tráfico que pasa por su NetScaler, o puede enlazar su directiva a un servidor virtual o punto de enlace específico para dirigir únicamente ese servidor virtual o enlazar el tráfico entrante del punto a esa directiva. Si una solicitud entrante coincide con una directiva de reescritura, se lleva a cabo la acción asociada a esa directiva.
Las directivas de reescritura para evaluar las solicitudes y respuestas HTTP se pueden enlazar a servidores virtuales de tipo HTTP o SSL, o a los puntos de enlace REQ_OVERRIDE, REQ_DEFAULT, RES_OVERRIDE y RES_DEFAULT. Las directivas de reescritura para la reescritura de TCP solo pueden enlazarse a servidores virtuales de tipo TCP o SSL_TCP, o a los puntos de enlace OTHERTCP_REQ_OVERRIDE, OTHERTCP_REQ_DEFAULT, OTHERTCP_RES_OVERRIDE y OTHERTCP_RES_DEFAULT.
Nota:
El término OTHERTCP se utiliza en el contexto del dispositivo NetScaler para referirse a todas las solicitudes y respuestas TCP o SSL_TCP que quiere tratar como un flujo de bytes sin procesar, independientemente de los protocolos que encapsulen los paquetes TCP.
Cuando vincula una directiva, le asigna una prioridad. La prioridad determina el orden en que se evalúan las directivas que defina. Puede establecer la prioridad en cualquier número entero positivo.
En el sistema operativo NetScaler, las prioridades directivas funcionan en orden inverso: cuanto mayor sea el número, menor será la prioridad. Por ejemplo, si tiene tres directivas con prioridades de 10, 100 y 1000, la directiva asignada con una prioridad de 10 se aplica primero, luego a la directiva se le asigna una prioridad de 100 y, por último, a la directiva se le asigna un orden de 1000.
A diferencia de la mayoría de las demás funciones del sistema operativo NetScaler, la función de reescritura continúa evaluando e implementando directivas después de que una solicitud coincida con una directiva. Sin embargo, el efecto de una directiva de acción concreta en una solicitud o respuesta suele ser diferente en función de si se realiza antes o después de otra acción. La prioridad es importante para obtener los resultados deseados.
Puede dejar suficiente espacio para agregar otras directivas en cualquier orden y configurarlas para que se evalúen en el orden que quiera, estableciendo prioridades con intervalos de 50 o 100 entre cada directiva cuando la vincule. Si lo hace, puede agregar más directivas en cualquier momento sin tener que reasignar la prioridad de una directiva existente.
Al enlazar una directiva de reescritura, también tiene la opción de asignar una expresión goto (goToPriorityExpression) a la directiva. Una expresión goto puede ser cualquier entero positivo que coincida con la prioridad asignada a una directiva diferente que tenga una prioridad superior a la directiva que contiene la expresión goto. Si asigna una expresión goto a una directiva y una solicitud o respuesta coincide con la directiva, NetScaler irá inmediatamente a la directiva cuya prioridad coincida con la expresión goto. Omitirá todas las directivas con números de prioridad inferiores a los de la directiva actual, pero superiores al número de prioridad de la expresión goto, y no las evalúa.
Para enlazar globalmente una directiva de reescritura mediante la interfaz de línea de comandos
En el símbolo del sistema, escriba los siguientes comandos para enlazar globalmente una directiva de reescritura y compruebe la configuración:
bind rewrite global <policyName> <priority> [<gotoPriorityExpression>] [-type <type>] [-invoke (<labelType> <labelName>)]
show rewrite global
Ejemplo:
>bind rewrite global policyNew 10
Done
> show rewrite global
1) Global bindpoint: RES_DEFAULT
Number of bound policies: 1
2) Global bindpoint: REQ_OVERRIDE
Number of bound policies: 1
Done
<!--NeedCopy-->
Para enlazar la directiva de reescritura a un servidor virtual específico mediante la interfaz de línea de comandos
En el símbolo del sistema, escriba los siguientes comandos para enlazar la directiva de reescritura a un servidor virtual específico y compruebe la configuración:
bind lb vserver <name>@ (<serviceName>@ [-weight <positive_integer>]) | <serviceGroupName>@ | (-policyName <string>@ [-priority <positive_integer>] [-gotoPriorityExpression <expression>] [-type ( REQUEST | RESPONSE )] [-invoke (<labelType> <labelName>)] )
show lb vserver <name>
Ejemplo:
> bind lb vserver lbvip -policyName ns_cmp_msapp -priority 50
Done
>
> show lb vserver lbvip
lbvip (8.7.6.6:80) - HTTP Type: ADDRESS
State: DOWN
Last state change was at Wed Jul 15 05:54:24 2009 (+226 ms)
Time since last state change: 28 days, 01:57:26.350
Effective State: DOWN
Client Idle Timeout: 180 sec
Down state flush: ENABLED
Disable Primary Vserver On Down : DISABLED
Port Rewrite : DISABLED
No. of Bound Services : 0 (Total) 0 (Active)
Configured Method: LEASTCONNECTION
Mode: IP
Persistence: NONE
Vserver IP and Port insertion: OFF
Push: DISABLED Push VServer:
Push Multi Clients: NO
Push Label Rule: none
1) Policy : ns_cmp_msapp Priority:50
2) Policy : cf-pol Priority:1 Inherited
Done
<!--NeedCopy-->
Para enlazar una directiva de reescritura a un punto de enlace mediante la interfaz gráfica de usuario
- Vaya a AppExpert >Reescribir > Directivas.
- En el panel de detalles, seleccione la directiva de reescritura que quiere enlazar globalmente y, a continuación, haga clic en Administrador de directivas.
- En el cuadro de diálogo Reescribir el Administrador de directivas, en el menú Enlazar puntos, realice una de las siguientes acciones:
- Si quiere configurar enlaces para directivas de reescritura HTTP, haga clic en HTTPy, a continuación, en Solicitud o Respuesta, en función de si quiere configurar directivas de reescritura basadas en solicitudes o directivas de reescritura basadas en respuestas.
- Si quiere configurar enlaces para directivas de reescritura TCP, haga clic en TCPy, a continuación, haga clic en Cliente o Servidor, en función de si quiere configurar directivas de reescritura TCP del lado del cliente o directivas de reescritura TCP del lado del servidor.
- Haga clic en el punto de enlace al que quiere enlazar la directiva de reescritura. El cuadro de diálogo Rewrite Policy Manager muestra todas las directivas de reescritura enlazadas al punto de enlace seleccionado.
- Haga clic en Insertar directiva para insertar una nueva fila y mostrar una lista desplegable con todas las directivas de reescritura independientes disponibles.
- Haga clic en la directiva que quiera enlazar al punto de enlace. La directiva se inserta en la lista de directivas de reescritura vinculadas al punto de enlace.
- En la columna Prioridad, puede cambiar la prioridad a cualquier entero positivo. Para obtener más información sobre este parámetro, consulte prioridad en “Parámetros para vincular una directiva de reescritura”. “
- Si quiere omitir directivas e ir directamente a una directiva específica si la directiva actual coincide, cambie el valor de la columna Goto Expression para que sea igual a la prioridad de la siguiente directiva que se aplicará. Para obtener más información sobre este parámetro, consulte GoToPriorityExpression en “Parámetros para vincular una directiva de reescritura. “
- Para modificar una directiva, haga clic en la directiva y, a continuación, en Modificar directiva.
- Para desvincular una directiva, haga clic en la directiva y, a continuación, haga clic en Desvincular directiva.
- Para modificar una acción, en la columna Acción, haga clic en la acción que quiera modificar y, a continuación, haga clic en Modificar acción.
- Para modificar una etiqueta de invocación, en la columna Invocar, haga clic en la etiqueta de invocación que quiera modificar y, a continuación, haga clic en Modificar etiqueta de invocación.
- Para regenerar las prioridades de todas las directivas enlazadas al punto de enlace que está configurando actualmente, haga clic en Regenerar prioridades. Las directivas mantienen sus prioridades existentes en relación con las demás directivas, pero las prioridades se renumeran en múltiplos de 10.
- Haga clic en Aplicar cambios.
- Haga clic en Cerrar. Aparece un mensaje en la barra de estado que indica que la directiva se ha configurado correctamente.
Para enlazar una directiva de reescritura a un servidor virtual específico mediante la interfaz gráfica de usuario
- Vaya a Administración del tráfico > Equilibrio de carga > Servidores virtuales.
- En la lista de servidores virtuales del panel de detalles, seleccione el servidor virtual al que quiere enlazar la directiva de reescritura y, a continuación, haga clic en Abrir.
- En el cuadro de diálogo Configurar servidor virtual (equilibrio de carga), seleccione la ficha Directivas . Todas las directivas configuradas en su NetScaler aparecen en la lista.
- Seleccione la casilla de verificación situada junto al nombre de la directiva que quiere enlazar a este servidor virtual.
- Haga clic en Aceptar. Aparece un mensaje en la barra de estado que indica que la directiva se ha configurado correctamente.
Configurar etiquetas de directivas de reescritura
Si quiere crear una estructura de directivas más compleja que la admitida por directivas individuales, puede crear rótulos de directiva y, a continuación, enlazarlos como lo haría con directivas. Una etiqueta de directiva es un punto definido por el usuario al que están vinculadas las directivas. Cuando se invoca una etiqueta de directiva, todas las directivas vinculadas a ella se evalúan en el orden de prioridad configurado. Una etiqueta de directiva puede incluir una o varias directivas, a cada una de las cuales se le puede asignar su propio resultado. Una coincidencia en una directiva del rótulo de directiva puede dar lugar a pasar a la siguiente directiva, invocar una etiqueta de directiva diferente o un recurso apropiado, o poner fin inmediatamente a la evaluación de la directiva y devolver el control a la directiva que invocó la etiqueta de directiva.
Una etiqueta de directiva de reescritura consta de un nombre, un nombre de transformación que describe el tipo de directiva incluida en la etiqueta de directiva y una lista de directivas enlazadas a la etiqueta de directiva. Cada directiva enlazada a la etiqueta de directiva contiene todos los elementos descritos en Configuración de una directiva de reescritura.
Nota: Puede utilizar la interfaz de línea de comandos o la GUI para crear y configurar etiquetas de directivas de reescritura. Los usuarios que no están completamente familiarizados con la interfaz de línea de comandos y el lenguaje NetScaler Policy Infrastructure (PI) suelen encontrar que utilizar la GUI es mucho más fácil.
Para configurar una etiqueta de directiva de reescritura mediante la interfaz de línea de comandos
Para agregar una etiqueta de directiva de reescritura, en el símbolo del sistema, escriba el siguiente comando:
add rewrite policylabel <labelName> <transform>
Por ejemplo, para agregar una etiqueta de directiva de reescritura denominada PollabelHttpResponses para agrupar todas las directivas que funcionan con respuestas HTTP, debe escribir lo siguiente:
add rewrite policy label polLabelHTTPResponses http_res
Para modificar una etiqueta de directiva de reescritura existente, en el símbolo del sistema de NetScaler, escriba el siguiente comando:
set rewrite policy <name> <transform>
Nota:
El comando set rewrite policy utiliza las mismas opciones que el comando add rewrite policy.
Para quitar una etiqueta de directiva de reescritura, en el símbolo del sistema de NetScaler, escriba el siguiente comando:
rm rewrite policy<name>
Por ejemplo, para quitar una etiqueta de directiva de reescritura denominada PollabelHttpResponses, escribiría lo siguiente:
rm rewrite policy polLabelHTTPResponses
Para configurar una etiqueta de directiva de reescritura mediante la interfaz gráfica de usuario
- Vaya a AppExpert > Reescribir > Etiquetas de directivas.
- En el panel de detalles, realice una de las acciones siguientes:
- Para crear una etiqueta de directiva, haga clic en Agregar.
- Para modificar una etiqueta de directiva existente, selecciónela y, a continuación, haga clic en Abrir.
- Agregar o quitar directivas de la lista vinculada a la etiqueta de directiva.
- Para agregar una directiva a la lista, haga clic en Insertar directiva y elija una directiva en la lista desplegable. Puede crear una directiva y agregarla a la lista si selecciona Nueva directiva en la lista y sigue las instrucciones de Configuración de una directiva de reescritura.
- Para quitar una directiva de la lista, selecciónela y, a continuación, haga clic en Desenlazar directiva.
- Modifique la prioridad de cada directiva editando el número de la columna Prioridad. También puede volver a numerar las directivas automáticamente haciendo clic en Regenerar prioridades.
- Haga clic en Crear o Aceptary, a continuación, en Cerrar. Para quitar una etiqueta de directiva, selecciónela y, a continuación, haga clic en Quitar. Para cambiar el nombre de una etiqueta de directiva, selecciónela y haga clic en Cambiar nombre. Modifique el nombre de la directiva y, a continuación, haga clic en Aceptar para guardar los cambios.
En este artículo
- Comparación entre las opciones de Reescritura y Responder
- Cómo funciona la reescritura
- Acciones de reescritura
- Habilitar reescritura
- Configurar una acción de reescritura
- Crear una acción de reescritura mediante la interfaz de línea de comandos
- Modificar una acción de reescritura existente mediante la interfaz de línea de comandos
- Eliminar una acción de reescritura mediante la interfaz de línea de comandos
- Configurar una acción de reescritura mediante la utilidad de configuración
- Agregue una expresión mediante el cuadro de diálogo Agregar expresión
- Reescritura de cargas útiles TCP
- Evaluar una acción de reescritura mediante el cuadro de diálogo Rewrite Action Evaluator
- Configurar la directiva de reescritura
- Vincular la directiva de reescritura
- Configurar etiquetas de directivas de reescritura