dnsmasq 不仅能做域名解析结果缓存,它本身就是 dns 服务器。
修改 dnsmasq.conf
1: listen-address=127.0.0.1 2: interface=lo 3: bind-interfaces 5: strict-order 6: no-negcache
行 5
dnsmasq 并行向所有上游域名服务器请求解析域名,采用最快返回的解析结果。
由于上游服务器列表是从网络环境中获取,可能获取到有问题的域名服务器(立即返回无法解析域名),导致域名解析总是失败,如下所示:
$ nslookup www.baidu.com Server: 127.0.0.1 Address 1: 127.0.0.1 localhost.lan nslookup: can't resolve 'www.baidu.com': Name or service not known
strict-order
配置项指定按域名服务器在配置文件(由resolv-file
配置项指定,默认为/etc/resolv.conf
)中出现的顺序依次解析,第一个域名服务器配置正确就能够避免这个问题。
行 6
当上游域名服务器返回找不到域名(no such domain)时,不缓存结果。