我最近才意识到,与 NetworkManager 集成的 dnsmasq 默认禁用了缓存。在我看来,这违背了要点,并使 dnsmasq 成为名称解析中的冗余层。
显然,我肯定遗漏了一些东西 -NM 中的 dnsmasq 有什么用途?
答案1
关键在于切换域名服务器恼人的./etc/resolv.conf
仅在您启动应用程序时读取一次(从技术上讲是第一次查找时),因此如果您更改名称服务器(因为您从无线移动到有线,再到 3g 并返回等),您将需要重新启动需要查找名称的应用程序(例如浏览器)。
通过使用本地解析器可以缓解此问题,本地解析器会及时响应这些变化,从而使应用程序保持愚蠢的状态并仅查询本地主机上的名称服务器。
答案2
从man NetworkManager.conf
16.04 开始,可选择dns
:
dnsmasq:NetworkManager 将运行 dnsmasq 作为本地缓存名称服务器,如果您连接到 VPN,则使用“拆分 DNS”配置,然后更新 resolv.conf 以指向本地名称服务器。
因此,基本上,如果您连接到 VPN,NetworkManager
就可以指示dnsmasq
使用任何特定于 VPN 的 DNS 服务器来获取所需域。仅使用 是无法做到这一点的resolv.conf
。