使用 dnsmasq 进行 DNS 缓存注意事项

dnsmasq 不仅能做域名解析结果缓存,它本身就是 dns 服务器。

修改 dnsmasq.conf

1: listen-address=127.0.0.1
2: interface=lo
3: bind-interfaces
4: #dhcp-authoritative
5: strict-order
6: no-negcache
  • 1 2 3 4

    只对本机提供服务,避免网络内的其它机器访问。

  • 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)时,不缓存结果。