ADC

Soporte de DNS para 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:

Consulte Expresiones 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 Cola de directivas de solicitudes estándar.
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:

  1. add rewrite action <actName> <actType>

    Para <actname>, 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 <actType>, especifique los tipos de acciones de reescritura proporcionados para las expresiones DNS.

  2. add rewrite policy <polName> <rule> <actName>

    Para <polname>, sustituya su nueva directiva por un nombre. Para <actname>, el nombre puede tener entre 1 y 127 caracteres y puede contener letras, números, guiones (-) y caracteres de subrayado (_). <actname>Sustituya el nombre de la acción que acaba de crear.

  3. bind rewrite global <polName> <priority> <gotoPriorityExpression> -type <bindPoint>

    <polName>Sustituya el nombre de la directiva que acaba de crear. Para <priority>, especifique la prioridad de la directiva. Sustituya uno de los puntos de enlace global específicos de la reescritura. <bindPoint>

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

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

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.
Soporte de DNS para reescritura