DNS-Rekursion langsam binden

9

Wir haben gerade einen rekursiven DNS-Server mit der neuesten stabilen Version von Bind 9.10 eingerichtet

Wir stellen fest, dass rekursive DNS-Suchvorgänge ziemlich langsam sind. Zwischen 1 und 3 Sekunden. Sobald sich die Suche im Cache befindet, wird DNS wie erwartet innerhalb von Millisekunden aufgelöst.

Wir verwenden ROOT-Hinweise für die rekursiven Suchvorgänge, und dies scheint der Grund für die Langsamkeit zu sein. Wenn wir eine Weiterleitung konfigurieren, wird die DNS-Auflösung auf eine sinnvolle Rekursionszeit von 100 - 300 ms reduziert.

Für den Service, den wir einrichten, möchte ich mich nicht auf Spediteure verlassen, sondern lieber Root-Hinweise verwenden.

Hier ist die Hauptkonfiguration aus unserer Datei named.conf . Alle Hinweise zur Verbesserung der Leistung wären großartig.

options{
allow-recursion  { any; };
allow-query-cache  { any; };
allow-query  { any; };

listen-on  port 53  { any; };
listen-on-v6  port 53  { any; };

dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;

zone-statistics yes;
max-cache-ttl 3600;
max-ncache-ttl 3600;

/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";

directory  "/var/named";
dump-file  "/var/named/data/cache_dump.db";
statistics-file  "/var/named/stats/named_stats.txt";
memstatistics-file  "/var/named/stats/named_mem_stats.txt";

rate-limit {
    responses-per-second 10;
    log-only yes;
};

prefetch 5;};

zone "." {
type hint;
file "named.ca";};

include "/var/named/conf/logging.conf";
ausip
quelle
5
Ich würde tcpdump verwenden und sehen, was während der langsamen Anfragen tatsächlich passiert.
Yoonix
Irgendwas in den Protokollen?
Håkan Lindqvist

Antworten:

6

Wir haben das Problem gefunden. Es war ein Problem beim Auslagern der NIC-Hardware.

Beim Ausführen tcpdump -vvv -s 0 -l -n port 53wurden [bad udp cksum 6279!]für jede DNS-Abfrage eine Handvoll Fehler gefunden .

Ein kleines Stöbern bei Google hat mich in die richtige Richtung gelenkt. Wie sich herausstellt, ist das NIC-Hardware-Offloading standardmäßig aktiviert, da unser CentOS-System als VM auf XenServer ausgeführt wird (ähnliche Probleme wurden bei VMWare usw. gemeldet).

Das Laufen ethtool -k eth0 | grep onzeigte Folgendes

x-checksumming: on
tx-checksum-ipv4: on
scatter-gather: on
tx-scatter-gather: on
tcp-segmentation-offload: off
tx-tcp-segmentation: off
tx-tcp-ecn-segmentation: off
tx-tcp6-segmentation: off
udp-fragmentation-offload: off [fixed]
generic-segmentation-offload: on
generic-receive-offload: on
tx-gso-robust: on [fixed]
tx-fcoe-segmentation: off [fixed]
tx-gre-segmentation: off [fixed]
tx-udp_tnl-segmentation: off [fixed]

Ausführen des ethtool -K eth0 tx off rx offdeaktivierten TCP-TX-Offloading. Ich habe den Netzwerkdienst aus gutem Grund neu gestartet

service network restart

und BIND getestet. Wir bekommen jetzt sehr schnelle Antwortzeiten von BIND

dig centos.org

; <<>> DiG 9.10.2-P4-RedHat-9.10.2-P4.el6 <<>> centos.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61933
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;centos.org.INA

;; ANSWER SECTION:
centos.org.60INA85.12.30.227

;; Query time: 268 msec
;; SERVER: 192.168.10.25#53(192.168.10.25)
;; WHEN: Thu Sep 17 08:25:39 AEST 2015
;; MSG SIZE  rcvd: 55
ausip
quelle
2

Ich hatte das gleiche Problem mit sehr langsamen rekursiven Abfragen auf einem physischen CentOS 7 BIND-Server und fand diese Antwort (TX Offloading) und viele IPv6-orientierte Fixes für verschiedene Threads, von denen keiner für mich funktionierte.

Es stellte sich heraus, dass der Standort des betreffenden Servers eine ältere Cisco ASA-Firewall hatte, die die Größe der UDP-Antwortpakete auf 512 Byte beschränkte. Heutzutage scheinen UDP-Antworten für DNS-Abfragen oft viel größer zu sein, bis zu etwa 2000 Byte. Hier gibt es eine Seite darüber:

Warum hat DNS über UDP ein Limit von 512 Bytes?

Ich habe den ASA so konfiguriert, dass größere UDP-Antwortpakete zugelassen werden (hierfür gibt es einen speziellen Fixup-Befehl), wodurch das Problem behoben wurde:

https://supportforums.cisco.com/t5/getting-started-with-lans/dns-dropped-because-packets-to-big-for-configured-512/td-p/861718

Eric Hensley
quelle