Saya memiliki VM yang menjalankan Debian Wheezy di mana beberapa pencarian nama host memerlukan beberapa detik untuk diselesaikan, meskipun resolver segera menjawab. Anehnya, pencarian dengan getaddrinfo()terpengaruh, tetapi gethostbyname()tidak.
Saya telah beralih ke resolver Google untuk mengecualikan kemungkinan bahwa yang lokal rusak, jadi /etc/resolv.confsepertinya:
search my-domain.com
nameserver 8.8.4.4
nameserver 8.8.8.8
Saya nsswitch.confmemiliki garis:
hosts: files dns
dan saya /etc/hoststidak mengandung sesuatu yang tidak biasa.
Jika saya mencoba telnet webserver 80, itu hang selama beberapa detik sebelum mendapatkan resolusi nama. Sebuah ltracekeluaran [1] menunjukkan bahwa menguasainya adalah dalam getaddrinfo()panggilan:
getaddrinfo("ifconfig.me", "telnet", { AI_CANONNAME, 0, SOCK_STREAM, 0, 0, NULL, '\000', NULL }, 0x7fffb4ffc160) = 0 <5.020621>
Namun, tcpdumpterungkap bahwa server nama itu menjawab dengan segera, dan hanya pada balasan kedua yang tidak telnetdiblokir. Balasannya terlihat sama:
05:52:58.609731 IP 192.168.1.75.43017 > 8.8.4.4.53: 54755+ A? ifconfig.me. (29)
05:52:58.609786 IP 192.168.1.75.43017 > 8.8.4.4.53: 26090+ AAAA? ifconfig.me. (29)
05:52:58.612188 IP 8.8.4.4.53 > 192.168.1.75.43017: 54755 4/0/0 A 219.94.235.40, A 133.242.129.236, A 49.212.149.105, A 49.212.202.172 (93)
[...five second pause...]
05:53:03.613811 IP 192.168.1.75.43017 > 8.8.4.4.53: 54755+ A? ifconfig.me. (29)
05:53:03.616424 IP 8.8.4.4.53 > 192.168.1.75.43017: 54755 4/0/0 A 219.94.235.40, A 133.242.129.236, A 49.212.149.105, A 49.212.202.172 (93)
05:53:03.616547 IP 192.168.1.75.43017 > 8.8.4.4.53: 26090+ AAAA? ifconfig.me. (29)
05:53:03.618907 IP 8.8.4.4.53 > 192.168.1.75.43017: 26090 0/1/0 (76)
Saya telah memeriksa log firewall host dan tidak ada port 53 yang diblokir.
Apa yang menyebabkan balasan DNS pertama diabaikan?
[1] Saya telah menambahkan beberapa baris ke saya ltrace.confsehingga saya dapat melihat di dalam addrinfostruct.