Compatibilidad con DNS para la función de reescritura

Puede configurar la función de reescritura para modificar las solicitudes y respuestas DNS, como lo haría para las solicitudes y respuestas HTTP o TCP. Puede usar rewrite para administrar el flujo de solicitudes 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 de encabezado, puede usar rewrite 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 Citrix ADC para hacer referencia a varias partes de una solicitud o respuesta 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.

Puntos de enlace Descripción
DNS_REQ_OVERRIDE Anular la cola de directivas de solicitudes.
DNS_REQ_DEFAULT Cola de directivas de solicitudes estándar.
DNS_RES_OVERRIDE Anular la cola de directivas de respuesta.
DNS_RES_DEFAULT Cola de directivas de respuesta estándar.

Además de los puntos de enlace predeterminados, puede crear etiquetas de directiva de tipo DNS_REQ o DNS_RES y enlazar directivas DNS a ellos.

Reescribir tipos de acción para DNS

  • replace_dns_answer_section—Esta acción reemplaza la sección de respuestas DNS con la expresión definida en la directiva DNS.
  • replace_dns_header_field—Comprueba el tipo de código de operación en la solicitud DNS. Devuelve True o False, que indica si el tipo de código de operación de la solicitud DNS coincide con el tipo de código de operación especificado. Esta acción reemplaza la sección de encabezado DNS con la expresión definida en la directiva DNS.

Configuración de directivas de reescritura para DNS

El procedimiento siguiente utiliza la línea de comandos de Citrix ADC para configurar una acción y una directiva de reescritura y enlazar la directiva a un punto de enlace global específico de reescritura.

Configurar la acción y la directiva de reescritura y enlazar la directiva para DNS

En el símbolo del sistema, escriba los siguientes comandos:

  1. <actName> <actType>agregar acción de reescritura

    Para <actname>, sustituya un nombre para la nueva acción. El nombre puede tener entre 1 y 127 caracteres y puede contener letras, números, guiones (-) y símbolos de subrayado (_). Para <actType>, especifique los tipos de acción de reescritura proporcionados para las expresiones DNS.

  2. <polName> <rule> <actName>agregar directiva de reescritura

    Para <polname>, sustituya un nombre para la nueva directiva. Para <actname>, el nombre puede tener entre 1 y 127 caracteres y puede contener símbolos de letras, números, guión (-) y guión bajo (_). Para <actname>, sustituya el nombre de la acción que acaba de crear.

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

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

Ejemplo:

Establezca el bit AA de la solicitud DNS para equilibrar la carga del servidor virtual.

Los siguientes comandos configuran el dispositivo Citrix ADC para que actúe como un servidor DNS autorizado para todas las consultas a las que sirve.

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 y la sección de encabezado.

Si el servidor responde con un dominio NX, puede establecer la acción de reescritura para reemplazar la respuesta con la dirección IP especificada. Una NOPOLÍTITICY REWRITE le permite invocar un banco Enternal sin procesar una expresión (una regla). Esta entrada es una directiva ficticia que no contiene una regla pero dirige la entrada a una etiqueta de directiva o bancos de directivas específicos de un servidor virtual.

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 Citrix ADC está configurado como un servidor proxy DNS y se produce una pérdida de caché.
  • Si el indicador Recursion Available (RA) del encabezado está establecido en YES, 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.