In some lan setups (e.g. you’re using a pihole), DNS resolution can be
extremely slow due to AAAA records. Under the hood, glibc
sends A
(ipv4) and
AAAA
(ipv6) resolution requests by default. In a faulty setup, the DNS server
doesn’t respond to AAAA
leading to timeouts and visible latencies in browsing.
Details about glibc
behavior is here:
https://udrepper.livejournal.com/20948.html
Identify the problem
Use dig
to request for AAAA
record. You will get a connection timeout or no
data.
dig AAAA cdn.sstatic.net
If you’re using pi-hole, here’s how the problem shows up in query log.
Workaround
If you don’t control the DNS server, force the local resolver to send a single request at a time and an early timeout.
# add to resolv.conf
options timeout:1
options single-request
Some more ways to disable AAAA
lookups are outlined in
https://serverfault.com/questions/632665/how-to-disable-aaaa-lookups
Alternatively you could disable the ipv6
stack with a kernel parameter. See
https://wiki.archlinux.org/index.php/IPv6#Disable_IPv6
Fix
Ensure your pi-hole setup is configured to resolve AAAA
requests.
We can verify working state with dig
command above or from pi-hole query log.