Compatibilidad con DNS para la función de reescritura
Puede configurar la función de reescritura para modificar las solicitudes y respuestas de DNS, como lo haría con las solicitudes y respuestas HTTP o TCP. Puede utilizar la reescritura para gestionar el flujo de solicitudes de DNS y realizar las modificaciones necesarias en el encabezado o en la sección de respuestas. Por ejemplo, si la respuesta DNS no tiene el bit AA establecido en el indicador del encabezado, puede usar la reescritura para establecer el bit AA en la respuesta DNS y enviarlo al cliente.
Expresiones DNS
En una configuración de reescritura, puede utilizar las siguientes expresiones de NetScaler para hacer referencia a distintas partes de una solicitud o respuesta de DNS:
ConsulteExpresiones y descripciones
Puntos de enlace DNS
Los siguientes puntos de enlace globales están disponibles para las directivas que contienen expresiones DNS.
Enlazar puntos | Descripción |
---|---|
DNS_REQ_OVERRIDE | Anule la cola de directivas de solicitudes. |
DNS_REQ_DEFAULT | 可乐de directivas de关怀estandar。 |
DNS_RES_OVERRIDE | Anule la cola de directivas de respuestas. |
DNS_RES_DEFAULT | Cola de directivas de respuesta estándar. |
Además de los puntos de enlace predeterminados, puede crear etiquetas de directivas de tipo DNS_REQ o DNS_RES y vincular directivas de DNS a ellas.
Tipos de acciones de reescritura para DNS
- replace_dns_answer_section —Esta acción reemplaza la secciónde respuestas de DNS por la expresión definida en la directiva de DNS.
- replace_dns_header_field—Comprueba el tipo de código de operación en la solicitud de DNS. Devuelve Verdadero o Falso e indica si el tipo de código de operación de la solicitud de DNS coincide con el tipo de código de operación especificado. Esta acción reemplaza la sección de encabezado de DNS por la expresión definida en la directiva de DNS.
Configuración de directivas de reescritura para DNS
El siguiente procedimiento utiliza la línea de comandos de NetScaler para configurar una acción y una directiva de reescritura y vincular la directiva a un punto de enlace global específico de la reescritura.
Configure la acción y la directiva de reescritura y vincule la directiva para DNS
En el símbolo del sistema, escriba los comandos siguientes:
add rewrite action
Para
, sustituye un nombre para la nueva acción. El nombre puede tener entre 1 y 127 caracteres y puede contener letras, números, guiones (-) y caracteres de subrayado (_). Para
, especifique los tipos de acciones de reescritura proporcionados para las expresiones DNS.add rewrite policy
Para
, sustituya su nueva directiva por un nombre. Para
, el nombre puede tener entre 1 y 127 caracteres y puede contener letras, números, guiones (-) y caracteres de subrayado (_).
Sustituya el nombre de la acción que acaba de crear.bind rewrite global
-type
Sustituya el nombre de la directiva que acaba de crear. Para
, especifique la prioridad de la directiva. Sustituya uno de los puntos de enlace global específicos de la reescritura.
Ejemplo:
Configure la solicitud AA bit de DNS para equilibrar la carga del servidor virtual.
Los siguientes comandos configuran el dispositivo NetScaler para que actúe como un servidor DNS autorizado para todas las consultas que atiende.
add rewrite action set_aa replace_dns_header_field dns.req.header.flags.set(aa) add rewrite policy pol !dns.req.header.flags.is_set(aa) set_aa bind rewrite global pol 100 -type dns_res_override
Modifique la respuesta, la sección de respuesta y el encabezado.
Si el servidor responde con un dominio NX, puede configurar la acción de reescritura para reemplazar la respuesta por la dirección IP especificada. Un NOPOLICY-REWRITE permite invocar un banco externo sin procesar una expresión (una regla). Esta entrada es una directiva ficticia que no contiene ninguna regla, pero la dirige a una etiqueta de directiva o a bancos de directivas específicos para servidores virtuales.
add rewrite action set_aa_res replace_dns_header_field "dns.res.header.flags.set(aa)" add rewrite action modify_nxdomain_res replace_dns_answer_section "dns.new_rrset_a("10.102.218.160",300)" add rewrite policy set_res_aa true set_aa_res add add rewrite policy modify_answer "dns.RES.HEADER.RCODE.EQ(nxdomain) && dns.RES.QUESTION.TYPE.EQ(A)" modify_nxdomain_res add rewrite policylabel MODIFY_NODATA dns_res bind rewrite policylabel MODIFY_NODATA modify_answer 10 END bind rewrite policylabel MODIFY_NODATA set_res_aa 11 END bind lb vserver v1 -policyName NOPOLICY-REWRITE -priority 11 -gotoPriorityExpression END -type RESPONSE -invoke policylabel MODIFY_NODATA
Limitaciones:
- Las directivas de reescritura solo se evalúan si el dispositivo NetScaler está configurado como servidor proxy DNS y se pierde la memoria caché.
- Si el indicador de recursión disponible (RA) del encabezado está establecido en SÍ, el indicador RA no se modificará en las reescrituras.
- Si el indicador RA en el encabezado está establecido en YES, el indicador de CD en el encabezado se modifica independientemente de cualquier acción de reescritura.