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.conf
sepertinya:
search my-domain.com
nameserver 8.8.4.4
nameserver 8.8.8.8
Saya nsswitch.conf
memiliki garis:
hosts: files dns
dan saya /etc/hosts
tidak mengandung sesuatu yang tidak biasa.
Jika saya mencoba telnet webserver 80
, itu hang selama beberapa detik sebelum mendapatkan resolusi nama. Sebuah ltrace
keluaran [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, tcpdump
terungkap bahwa server nama itu menjawab dengan segera, dan hanya pada balasan kedua yang tidak telnet
diblokir. 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.conf
sehingga saya dapat melihat di dalam addrinfo
struct.