ADC

DNS-Unterstützung für Rewrite

Sie können die Rewrite-Funktion so konfigurieren, dass DNS-Anfragen und -Antworten geändert werden, wie Sie es für HTTP- oder TCP-Anfragen und -Antworten tun würden. Sie können Rewrite verwenden, um den Fluss von DNS-Anfragen zu verwalten und die erforderlichen Änderungen im Header oder im Antwortbereich vorzunehmen. Wenn in der DNS-Antwort beispielsweise kein AA-Bit im Header-Flag gesetzt ist, können Sie Rewrite verwenden, um das AA-Bit in der DNS-Antwort festzulegen und es an den Client zu senden.

DNS-Ausdrücke

In einer Rewrite-Konfiguration können Sie die folgenden NetScaler Ausdrücke verwenden, um auf verschiedene Teile einer DNS-Anforderung oder -Antwort zu verweisen:

Siehe Ausdrücke und Beschreibungen

DNS-Bindungspunkte

Die folgenden globalen Bindungspunkte sind für Richtlinien verfügbar, die DNS-Ausdrücke enthalten.

Punkte binden Beschreibung
DNS_REQ_OVERRIDE Überschreiben Sie die Warteschlange für Anforderungsrichtlinien.
DNS_REQ_DEFAULT Standardwarteschlange für Anforderungsrichtlinien.
DNS_RES_OVERRIDE Überschreiben Sie die Warteschlange für Antwortrichtlinien.
DNS_RES_DEFAULT Standardwarteschlange für Antwortrichtlinien.

Zusätzlich zu den Standardbindungspunkten können Sie Richtlinienlabels vom Typ DNS_REQ oder DNS_RES erstellen und DNS-Richtlinien an diese binden.

Aktionstypen für DNS neu schreiben

  • replace_dns_answer_section —Diese Aktion ersetzt den AbschnittDNS-Antworten durch den definierten Ausdruck in der DNS-Richtlinie.
  • replace_dns_header_field—Überprüft den Opcode-Typ in der DNS-Anfrage. Gibt True oder False zurück und gibt an, ob der Opcode-Typ in der DNS-Anfrage mit dem angegebenen Opcode-Typ übereinstimmt. Diese Aktion ersetzt den DNS-Header-Abschnitt durch den definierten Ausdruck in der DNS-Richtlinie.

Konfiguration von Rewrite-Richtlinien für DNS

Das folgende Verfahren verwendet die NetScaler-Befehlszeile, um eine Neuschreibaktion und -richtlinie zu konfigurieren und die Richtlinie an einen für das Umschreiben spezifischen globalen Bindungspunkt zu binden.

Konfigurieren Sie die Rewrite-Aktion und -Richtlinie und binden Sie die Richtlinie für DNS

Geben Sie an der Eingabeaufforderung die folgenden Befehle ein:

  1. add rewrite action <actName> <actType>

    Für <actname>, ersetzen Sie Ihre neue Aktion durch einen Namen. Der Name kann 1 bis 127 Zeichen lang sein und Buchstaben, Zahlen, Bindestriche (-) und Unterstriche (_) enthalten. Geben Sie für <actType>die für DNS-Ausdrücke bereitgestellten Rewrite-Aktionstypen an.

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

    Für <polname>, ersetzen Sie einen Namen für Ihre neue Richtlinie. Denn <actname>der Name kann 1 bis 127 Zeichen lang sein und Buchstaben, Zahlen, Bindestriche (-) und Unterstriche (_) enthalten. Ersetzen Sie durch den Namen der Aktion, die Sie gerade erstellt haben. <actname>

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

    <polName>Ersetzen Sie ihn durch den Namen der Richtlinie, die Sie gerade erstellt haben. Geben Sie für <priority>die Priorität der Richtlinie an. <bindPoint>Ersetzen Sie durch einen der rewrite-spezifischen globalen Bindungspunkte.

Beispiel:

Stellen Sie die AA-Bit-DNS-Anfrage ein, um den virtuellen Server mit Lastenausgleich zu verwalten.

Mit den folgenden Befehlen wird die NetScaler-Appliance so konfiguriert, dass sie als autorisierender DNS-Server für alle von ihr bereitgestellten Abfragen fungiert.

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

Ändern Sie die Antwortantwort und den Header-Abschnitt.

Wenn der Server mit einer NX-Domäne antwortet, können Sie die Rewrite-Aktion so einrichten, dass die Antwort durch die angegebene IP-Adresse ersetzt wird. Ein NOPOLICY-REWRITE ermöglicht es Ihnen, eine externe Bank aufzurufen, ohne einen Ausdruck zu verarbeiten (eine Regel). Bei diesem Eintrag handelt es sich um eine Scheinrichtlinie, die keine Regel enthält, den Eintrag jedoch an ein Richtlinienlabel oder an virtuelle Serverspezifische Policy-Banks weiterleitet.

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

Einschränkungen:

  • Rewrite-Richtlinien werden nur ausgewertet, wenn die NetScaler-Appliance als DNS-Proxyserver konfiguriert ist und ein Cachefehler vorliegt.
  • Wenn das Flag Recursion Available (RA) im Header auf JA gesetzt ist, wird das RA-Flag bei den Umschreibungen nicht geändert.
  • Wenn das RA-Flag im Header auf YES gesetzt ist, wird das CD-Flag im Header unabhängig von einer Umschreibung geändert.
DNS-Unterstützung für Rewrite