我正在使用 Ubuntu 12.04.2 LTS。
如果我发出以下命令
sudo gedit /etc/NetworkManager/NetworkManager.conf
并改变行
dns=dnsmasq
到
#dns=dnsmasq
会发生什么?我应该禁用还是启用 DNS 缓存?
补充笔记:
有人告诉我,由于我正在使用 VPN 服务,因此最好执行上述操作。
答案1
摘自http://www.ubuntugeek.com/how-to-disable-dnsmasq-in-ubuntu-12-04precise.html
最大的优势在于,如果您连接到 VPN,您不必像过去那样将所有 DNS 流量都路由到 VPN,而是只需发送与该 VPN 宣布的子网和域相关的 DNS 查询。这对于高延迟 VPN 链接尤其有用,因为过去所有东西的速度都会变慢。
至于处理 DNS 故障,dnsmasq 通常会将 DNS 查询发送到多个 DNS 服务器(如果您在建立连接时收到多个 DNS 服务器),并会检测虚假/死机的 DNS 服务器,然后忽略它们,直到它们再次开始返回合理的信息。这与 libc 的 DNS 解析方式不同,在 libc 中,DNS 服务器的状态无法保存(因为它只是一个库),因此每个应用程序都必须经历相同的过程,尝试第一个 DNS,等待它超时,然后使用下一个 DNS。
因此它不会禁用它,但在某些情况下它会变得不那么“安全”和高效。就像 VPN
答案2
NetworkManager 启动的 dnsmasq 默认不缓存查询结果。你可以运行以下命令来确认这一点:
ps aux | grep dnsmasq
您应该看到
--cache-size=0
它是 dnsmasq 的参数,它会禁用缓存。如果你想确保 DNS 以及任何流量都通过 VPN 路由(我相信你确实基于你的其它问题),您可以用
iptables
它来接受发往 VPN 网关的输出流量并阻止任何其他目的地。因此无需触碰 Networkmanager 配置。