Ich habe eine VM mit Debian Wheezy, auf der einige Hostnamensuchen einige Sekunden dauern, obwohl der Resolver sofort antwortet. Seltsamerweise sind Lookups mit getaddrinfo()
betroffen, aber gethostbyname()
nicht.
Ich habe zu den Google-Resolvern gewechselt, um die Möglichkeit auszuschließen, dass die lokalen defekt sind. Mein /etc/resolv.conf
Aussehen sieht also so aus:
search my-domain.com
nameserver 8.8.4.4
nameserver 8.8.8.8
Mein nsswitch.conf
hat die Linie:
hosts: files dns
und meine /etc/hosts
enthält nichts ungewöhnliches.
Wenn ich es versuche telnet webserver 80
, bleibt es einige Sekunden lang hängen, bevor eine Namensauflösung angezeigt wird. Eine ltrace
Ausgabe [1] zeigt an, dass sich der Hang in einem getaddrinfo()
Anruf befindet:
getaddrinfo("ifconfig.me", "telnet", { AI_CANONNAME, 0, SOCK_STREAM, 0, 0, NULL, '\000', NULL }, 0x7fffb4ffc160) = 0 <5.020621>
Es zeigt sich jedoch, tcpdump
dass der Nameserver sofort geantwortet hat und erst bei der zweiten Antwort die telnet
Blockierung aufgehoben hat. Die Antworten sehen identisch aus:
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)
Ich habe die Host-Firewall-Protokolle überprüft und nichts an Port 53 wird blockiert.
Was bewirkt, dass die erste DNS-Antwort ignoriert wird?
[1] Ich habe ein paar Zeilen zu meiner hinzugefügt, ltrace.conf
damit ich in die addrinfo
Struktur sehen kann.