![DNS 有时能正常工作,但是速度非常慢。](https://linux22.com/image/961093/DNS%20%E6%9C%89%E6%97%B6%E8%83%BD%E6%AD%A3%E5%B8%B8%E5%B7%A5%E4%BD%9C%EF%BC%8C%E4%BD%86%E6%98%AF%E9%80%9F%E5%BA%A6%E9%9D%9E%E5%B8%B8%E6%85%A2%E3%80%82.png)
升级到Ubuntu 12.04(精准穿山甲)来自Ubuntu 10.04(Lucid Lynx)昨天。
DNS 有时能正常工作,但是速度非常慢。
我已阅读博客文章Ubuntu 12.04 中的 DNS。
- “我真的不需要本地解析器,我该如何关闭它?要关闭域名系统在网络管理器中,您需要编辑 /etc/NetworkManager/NetworkManager.conf 并注释“dns=dnsmasq”行(在其前面加上 #),然后执行“sudo restart network-manager”。
我没有这行要评论。检查 Synaptic Package Manager 发现 dnsmasq 未安装(dnsmasq-base 已安装)。
使用 NetworkManager GUI 编辑和创建连接(并指定 DNS 服务器)没有帮助;Ubuntu 不尊重用户 GUI 设置的 DNS 服务器。这些 GUI 工具难道不起作用吗?
- “我使用静态 IP 地址配置,我应该将 DNS 配置放在哪里?静态接口的 DNS 配置应作为“dns-nameservers”、“dns->search”和“dns-domain”条目添加到 /etc/network/interfaces 中的接口”
有这方面的例子吗?我的/etc/network/interfaces
非常稀少。
目前,我已经编辑了/etc/resolv.conf
将名称服务器替换127.0.0.1
为我的 DNS 服务器(我的宽带路由器)的名称服务器,但我不知道这个修复将持续多久,直到文件被这个新系统(dnsmasq?)覆盖。
答案1
network-manager
旨在与和resolvconf
一起管理 12.04 中的整个工作站的网络需求dnsmasq-base
。
dnsmasq-base
只是网络管理器使用单独的配置运行的可执行 dnsmasq 文件,没有启动脚本。
resolvconf
每当 12.04 集成包之一通过脚本告知它某些内容发生了变化时,它都会重写 /etc/resolv.conf。
如果您的配置中没有该dns=dnsmasq
行,则听起来好像没有正确安装。这也可能是导致速度缓慢的原因。
您可以尝试dpkg-reconfigure
在网络管理器和 resolvconf 上
或者,如果您正在使用未与网络管理器或其他不兼容程序集成的程序(如 VPN),您可以完全卸载网络管理器和 resolvconf,并依靠它来isc-dhcp-client
设置您的网络和 DNS,或者pppd
如果您正在使用调制解调器。
dnsmasq
在 network-manager 的控制下,旨在通过缓存加速 DNS 查找,但如果您卸载 network-manager,那么您也将摆脱 dnsmasq - 至少它不会自行运行。您需要常规包才能dnsmasq
在启动时启动并运行它。
您没有说是否需要 DHCP 或是否拥有静态 IP 地址。
答案2
移除/etc/resolv.conf
并制作符号链接如下:
/etc/resolv.conf
->/var/run/resolvconf/interface/NetworkManager
即执行:
ln -s /var/run/resolvconf/interface/NetworkManager /etc/resolv.conf
Ubuntu 中的本地 DNS 始终是一个坏主意(在 10-15 个请求后解析域)。
答案3
亚当的回答提供了正确的背景信息。
如果您已编辑或删除 /etc/resolv.conf,则在继续之前请确保它是指向“../run/resolvconf/resolv.conf”的符号链接。如果您必须恢复此符号链接,则在继续之前重新启动。
如果您遇到任何 DNS 问题,但不知道原因,那么最好确保 /etc/NetworkManager/NetworkManager.conf 不包含“dns=dnsmasq”行。注释掉该行。这样可以排除 dnsmasq 是导致问题的可能原因。
问题是“为什么我的 DNS 很慢?”如果 DNS 可以正常工作,那么配置肯定是正确的。
如果在 /etc/resolv.conf 中列出了多个名称服务器,并且第一个列出的名称服务器没有响应,则可能会出现长时间的延迟。glibc 解析器 (3) 会尝试第一个列出的名称服务器,并等待五秒钟,然后再尝试下一个列出的名称服务器。
第二个问题是关于“dns-nameservers”的使用。在 resolvconf(8) 中可以找到“dns-nameservers”等的使用示例。在终端窗口中运行“man 8 resolvconf”以阅读此手册页。