DNS Yinelemesini Yavaş Bağla


9

Bind 9.10'un en son kararlı sürümünü kullanarak özyinelemeli bir DNS sunucusu kurduk.

Özyinelemeli DNS aramalarının oldukça yavaş olduğunu görüyoruz. 1-3 saniye arası herhangi bir yerde. Arama önbellekte olduğunda, DNS beklendiği gibi milisaniye içinde çözülür.

Özyinelemeli aramalar için KÖK ipuçlarını kullanıyoruz ve bu yavaşlığın geldiği yer gibi görünüyor. Bir iletici yapılandırırsak, DNS çözünürlüğü 100 - 300ms'lik anlamlı bir yineleme süresine düşer.

Kurmakta olduğumuz hizmet için ileticilere güvenmek istemiyorum, kök ipuçlarını kullanmayı tercih ederim.

İşte ana yapılandırma olduğunu named.conf dosyası. Performansı iyileştirmeye yardımcı olacak herhangi bir işaret harika olurdu.

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

5
Ben tcpdump kullanmak ve yavaş istekleri sırasında gerçekten neler olduğunu görmek istiyorum.
yoonix

Günlüklerde bir şey var mı?
Håkan Lindqvist

Yanıtlar:


6

Sorunu bulduk. Bu bir NIC donanım boşaltma sorunuydu.

Çalıştırıldığında , her DNS sorgusu için tcpdump -vvv -s 0 -l -n port 53birkaç [bad udp cksum 6279!]hata bulundu.

Google'a küçük bir göz atma beni doğru yöne çekti. Anlaşıldığı üzere, Centen sistemimiz XenServer'da VM olarak çalıştığı için (VMWare vb. İle ilgili benzer sorunlar) NIC donanım boşaltma varsayılan olarak etkindir.

Running ethtool -k eth0 | grep onaşağıdakileri gösterdi

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]

Çalışan ethtool -K eth0 tx off rx offTCP TX boşaltma devre dışı bırakıldı. İyi bir önlem için ağ hizmetini yeniden başlattım

service network restart

ve BIND test edildi. Şimdi BIND'den çok hızlı yanıt süreleri alıyoruz

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

2

Fiziksel bir CentOS 7 BIND sunucusunda çok yavaş özyinelemeli sorgular ile aynı sorunu vardı ve bu cevap (TX Boşaltma) ve hiçbiri benim için çalıştı çeşitli iş parçacıkları etrafında birçok IPv6 odaklı düzeltmeler bulundu.

Söz konusu sunucunun, UDP yanıt paketlerinin boyutunu 512 bayta sınırlayan daha eski bir Cisco ASA güvenlik duvarına sahip olduğu ortaya çıkıyor; Bugünlerde DNS sorguları için UDP yanıtları genellikle çok daha büyük, yaklaşık 2000 bayta kadar görünüyor. Burada bir sayfa var:

UDP üzerinden DNS neden 512 bayt sınırına sahip?

ASA'yı sorunu çözen daha büyük UDP yanıt paketlerine (bunun için belirli bir düzeltme komutu var) izin verecek şekilde yapılandırdım:

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.