ADC

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

Vous pouvez configurer la fonctionnalité de réécriture pour modifier les requêtes et les réponses DNS, comme vous le feriez pour les requêtes et les 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 à l’en-tête ou à la section des réponses. Par exemple, si le bit AA de la réponse DNS n’est pas défini dans l’indicateur d’en-tête, vous pouvez utiliser la 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 NetScaler suivantes pour faire référence à différentes parties d’une demande 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 règles 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.

Outre les 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.

Types d’actions de réécriture pour le DNS

  • replace_dns_answer_section —Cette action remplace la sectiondes réponses DNS par l’expression définie dans la stratégie DNS.
  • replace_dns_header_field —Vérifiele type d’opcode dans la requête DNS. Renvoie True ou False, indiquant si le type d’opcode dans la requête DNS correspond au type d’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 NetScaler 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 le DNS

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

  1. add rewrite action <actName> <actType>

    Pour <actname>, remplacez votre nouvelle action par un nom. Le nom peut comporter entre 1 et 127 caractères et peut contenir des lettres, des chiffres, des traits d’union (-) et des traits de soulignement (_). Pour <actType>, spécifiez les types d’actions 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. Car <actname>, le nom peut comporter entre 1 et 127 caractères et peut contenir des lettres, des chiffres, des traits d’union (-) et des traits de soulignement (_). Remplacez par le nom de l’action que vous venez de créer. <actname>

  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 globaux spécifiques à la réécriture.

Exemple :

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

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

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

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 d’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 à un 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
<!--NeedCopy-->

Limites :

  • Les stratégies de réécriture ne sont évaluées que si l’appliance NetScaler est configurée en tant que serveur proxy DNS et qu’il y a un échec de cache.
  • Si l’indicateur de récursivité disponible (RA) dans l’en-tête est défini sur OUI, l’indicateur RA ne sera pas modifié lors des 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 DNS de la fonction de réécriture