Citrix ADC

Prise en charge de DNS pour la fonction de réécriture

Vous pouvez configurer la fonction de réécriture pour modifier les requêtes et réponses DNS, comme vous le feriez pour les requêtes et réponses HTTP ou TCP. Vous pouvez utiliser la réécriture pour gérer le flux des requêtes DNS et apporter les modifications nécessaires dans l’en-tête ou dans la section des réponses. Par exemple, si la réponse DNS n’a pas le bit AA défini dans l’indicateur d’en-tête, vous pouvez utiliser réécriture pour définir le bit AA dans la réponse DNS et l’envoyer au client.

Expressions DNS

Dans une configuration de réécriture, vous pouvez utiliser les expressions Citrix ADC suivantes pour faire référence à diverses parties d’une requête ou d’une réponse DNS :

Voir Expressions et descriptions

Points de liaison DNS

Les points de liaison globaux suivants sont disponibles pour les stratégies qui contiennent des expressions DNS.

Points de liaison Description
DNS_REQ_OVERRIDE Remplacer la file d’attente des stratégies de demande.
DNS_REQ_DEFAULT File d’attente de stratégie de demande standard.
DNS_RES_OVERRIDE Remplacer la file d’attente des stratégies de réponse.
DNS_RES_DEFAULT File d’attente de stratégie de réponse standard.

En plus des points de liaison par défaut, vous pouvez créer des étiquettes de stratégie de type DNS_REQ ou DNS_RES et y lier des stratégies DNS.

Réécrire les types d’action pour DNS

  • replace_dns_answer_section—Cette action remplace la section des réponses DNS par l’expression définie dans la stratégie DNS.
  • replace_dns_header_field—Vérifie le type opcode dans la requête DNS. Renvoie True ou False, indiquant si le type opcode dans la requête DNS correspond au type opcode spécifié. Cette action remplace la section d’en-tête DNS par l’expression définie dans la stratégie DNS.

Configuration des stratégies de réécriture pour DNS

La procédure suivante utilise la ligne de commande Citrix ADC pour configurer une action et une stratégie de réécriture et lier la stratégie à un point de liaison global spécifique à la réécriture.

Configurer l’action et la stratégie de réécriture et lier la stratégie pour DNS

À l’invite de commandes, tapez les commandes suivantes :

  1. add rewrite action <actName> <actType>

    Pour,<actname> remplacez un nom pour votre nouvelle action. Le nom peut contenir de 1 à 127 caractères et peut contenir des lettres, des chiffres, des tirets (-) et des traits de soulignement (_). Pour<actType>, spécifiez les types d’action de réécriture fournis pour les expressions DNS.

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

    Pour <polname>, remplacez un nom pour votre nouvelle stratégie. Pour,<actname> le nom peut contenir de 1 à 127 caractères et peut contenir des lettres, des chiffres, des tirets (-) et des traits de soulignement (_). Pour,<actname> remplacez le nom de l’action que vous venez de créer.

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

    Pour,<polName> remplacez le nom de la stratégie que vous venez de créer. Pour,<priority> spécifiez la priorité de la stratégie. Par<bindPoint>, remplacez l’un des points de liaison globale spécifiques à la réécriture.

Exemple :

Définissez le bit AA de la demande DNS pour équilibrer la charge du serveur virtuel.

Les commandes suivantes configurent l’appliance Citrix ADC pour qu’elle agisse en tant que serveur DNS faisant autorité pour toutes les requêtes qu’elle sert.

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

Modifiez la réponse et la section d’en-tête.

Si le serveur répond avec un domaine NX, vous pouvez définir l’action de réécriture pour remplacer la réponse par l’adresse IP spécifiée. Un NOPOLICY-REWRITE vous permet d’appeler une banque externe sans traiter une expression (une règle). Cette entrée est une stratégie fictive qui ne contient pas de règle mais dirige l’entrée vers une étiquette de stratégie ou des banques de stratégies spécifiques au serveur virtuel.

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

Limites :

  • Les stratégies de réécriture sont évaluées uniquement si l’appliance Citrix ADC est configurée en tant que serveur proxy DNS et qu’il y a un défaut de cache.
  • Si l’indicateur Récursion disponible (RA) dans l’en-tête est défini sur YES, l’indicateur RA ne sera pas modifié dans les réécritures.
  • Si l’indicateur RA dans l’en-tête est défini sur YES, l’indicateur CD dans l’en-tête est modifié indépendamment de toute action de réécriture.

Prise en charge de DNS pour la fonction de réécriture