Skip to content
TURNKEYGNU / LINUX
AppsDocumentationBlogScreenshotsGitHubTurnKey Hub
文English
EnglishDeutschEspañol日本語Português中文
Home/Blog/configuring libresolv to timeout DNS queries to unreachable nameservers more quickly when offline

From the project

configuring libresolv to timeout DNS queries to unreachable nameservers more quickly when offline

By Liraz SiriAugust 11, 20142 min read
developmentdnstips

When I go offline I pull my network cable. This causes DNS queries to take forever to resolve. Actually 40 seconds but it feels like forever.

I ran across this most recently when confconsole seemed to get stuck when I reconfigured a static IP. I hadn't actually changed anything, just changed a DHCP dynamic IP to a static IP, but confconsole got stuck anyway. I traced this to /etc/network/if-up.d/ntpdate trying to resolve the hostnames for various ntp servers. Debian decided it would a good idea to fix the time whenever you brought your interface up. The problem is if you bring your interface up when you don't have network connectivity you get put on hold for about 20 seconds for each nameserver in /etc/resolv.conf.

We could disable the ntpdate hook but I've decided instead it would be a better idea to reduce the timeouts on DNS queries to something sensible like 1 second.

Here's how:

root@lamp ~# time ping www.google.com
ping: unknown host www.google.com

real    0m40.011s
user    0m0.004s
sys     0m0.000s
root@lamp ~# echo 'options timeout:1' > /etc/resolvconf/resolv.conf.d/tail
root@lamp ~# cat /etc/resolvconf/resolv.conf/tail
options timeout:1
root@lamp ~# cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 208.122.23.22
nameserver 208.122.23.23
root@lamp ~# resolvconf -u
root@lamp ~# cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 208.122.23.22
nameserver 208.122.23.23
options timeout:1
root@lamp ~# time ping www.google.com
ping: unknown host www.google.com

real    0m8.011s
user    0m0.004s
sys     0m0.000s

That's more like it. I've committed a fix to common to make this the default.

Keep exploring

Find your next server

Browse ready-to-use appliances by the job you need to do.

Explore the app library
TURNKEYGNU / LINUX

Own your infrastructure without starting from scratch.

Explore TurnKey
AboutDocumentationFAQBlogGitHub
Free and open sourceSecure by defaultReady to deploy