我最近从 12.04 升级到 12.10,但在连接互联网时遇到了问题。
我获得了一个 IP 地址,并且能够 ping 通本地网络中的其他 LAN IP,但我无法连接到互联网,甚至无法从终端 ping 通 www.google.com。
不知何故,更改/etc/resolv.conf
并重新启动resolvconf
服务并重新启动是可行的,但我每次连接到新网络时都需要这样做。如何使这些更改永久生效?
有人可以建议解决这个问题吗?
答案1
根据 /etc/resolv.conf 上的标题:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
尝试将零钱放入
/etc/resolvconf/resolv.conf.d/base 并且每 15 分钟重写一次时,它们应该被添加到 /etc/resolv.conf 中。
答案2
免责声明! 如果您的 DNS 服务器作为网络管理器的一部分进行管理,则遵循此答案可能会导致意外问题 - 虽然这将强制使用您想要的系统上方的 DNS 服务器
dnsmasq
和网络管理器设置中的 DNS 服务器,但它将这样做一切。此外,某些网络和/或连接可能要求你使用他们的DNS 服务器用于解析互联网上的问题。
在此处编辑/etc/resolvconf/resolv.conf.d/head
并添加nameserver 1.2.3.4
记录。
即使在桌面安装上,这也可以适用于 14.04。我知道这一点,是因为我bind9
的笔记本电脑上有一个本地运行的 DNS 服务器(通过),用于本地区域解析(因为我做了很多虚拟机工作),因此首先需要查询我的本地 DNS。
答案3
这是一个通用程序,可以修复名称服务器信息处理中的几个已知错误。
resolvconf 是否已安装?如果已安装,请执行以下操作。
sudo dpkg-reconfigure resolvconf
如果尚未安装,请执行以下操作。
sudo apt-get install resolvconf
现在 resolvconf 已正确安装,请重新启动以便为 resolvconf 提供名称服务器信息。
如果名称服务仍然中断,并且您正在使用 NetworkManager 来管理网络,则在编辑器中打开 /etc/NetworkManager/NetworkManager.conf 并注释掉“dns=dnsmasq”行。要注释掉它,请在行开头添加一个“#”字符。
gksudo gedit /etc/NetworkManager/NetworkManager.conf
接下来进入连接编辑器,确保您使用的连接配置正确。例如,最常见的是“网络指示器 | 编辑连接... | 有线 | 有线连接 1 | 编辑... | IPv4 设置 | 方法”设置为“自动 (DHCP)”,并且未设置“附加 DNS 服务器”地址。
然后重新启动网络管理器。
sudo restart network-manager
现在确认预期的名称服务器地址出现在 /etc/resolv.conf 中。
如果您没有使用 NetworkManager 来配置接口,而是使用,ifup
则根据需要编辑并在相应节中/etc/network/interfaces
包含dns-nameservers
和行。确保 /etc/resolvconf/resolv.conf.d/head 仅包含注释行,并且 /etc/resolvconf/resolv.conf.d/base 和 /etc/resolvconf/resolv.conf.d/tail 不存在或为空。然后是和接口。确认您添加到 /etc/network/interfaces 的名称服务器地址现在出现在 /etc/resolv.conf 中。dns-search
iface
ifdown
ifup
如果名称服务仍然无法工作,那么很可能是本地问题:例如,DHCP 服务器配置错误。另一个已知的问题原因是第三方 VPN 客户端破坏了符号链接 /etc/resolv.conf。如果您的 LAN 看起来正常,并且您没有使用第三方网络软件,那么请针对 NetworkManager 或 resolvconf 提交错误报告,无论哪个您认为更可能是罪魁祸首。
答案4
我自己也曾为 DNS 问题苦恼过,并发过一篇问题以及解决方案,其中列出了一些可以更改 DNS 设置的方法。基本上,有两种方法 - 编辑 3 个文件中的任意一个/etc/resolvconf/resolv.conf.d/
或编辑/etc/dhcp/dhclient.conf
。我个人更喜欢第一种方法。
以下是我在 ubuntu 和 linux mint 系统上应用的一些方法。请自行决定是否使用。
/etc/dhcp/dhclient.conf
我先从这个开始,因为其他人已经介绍了 resolv.conf 文件。下面是该文件的一部分。查看第 18 行,其中写着prepent name server
。无论您使用什么连接,它都会将您指定的 dns 添加到设置中。
1 # /sbin/dhclient 的配置文件,包含在 Debian 的
2 # dhcp3-client package. 3 # 4 # This is a sample configuration file for dhclient. See dhclient.conf's 5 # man page for more information about the syntax of this file 6 # and a more comprehensive list of the parameters understood by 7 # dhclient. 8 # 9 # Normally, if the DHCP server provides reasonable information and does 10 # not leave anything out (like the domain name, for example), then 11 # few changes must be made to this file, if any. 12 # 13 option rfc3442-classless-static-routes code 121 = array of unsigned integer 8; 14 #send host-name "andare.fugue.com"; 15 send host-name = gethostname(); 16 #send dhcp-client-identifier 1:0:a0:24:ab:fb:9c; 17 #send dhcp-lease-time 3600; 18 #supersede domain-name "fugue.com home.vix.com"; 19 #prepend domain-name-servers 127.0.0.1; 20 prepend domain-name-servers 208.67.220.220; 21 request subnet-mask, broadcast-address, time-offset, routers, 22 domain-name, domain-name-servers, domain-search, host-name, 23 dhcp6.name-servers, dhcp6.domain-search, 24 netbios-name-servers, netbios-scope, interface-mtu, 25 rfc3442-classless-static-routes, ntp-servers, 26 dhcp6.fqdn, dhcp6.sntp-servers; 27 #require subnet-mask, domain-name-servers; 28 #timeout 60; 29 #retry 60; 30 #reboot 10; 31 #select-timeout 5; 32 #initial-interval 2; 33 #script "/etc/dhcp3/dhclient-script"; 34 #media "-link0 -link1 -link2", "link0 link1"; 35 #reject 192.33.137.209; 36 #alias { 37 # interface "eth0";
/etc/resolvconf/resolv.conf.d/
3 中的任何一个文本都将添加到/etc/resolv.conf
,所以我认为选择哪一个都无所谓。我tail
个人会使用 。只需使用任何文本编辑器打开它并添加nameserver 8.8.8.8
,其中 8.8.8.8 是 google 的公共 dns,但您可以使用任何您喜欢的 dns。
小提示
我/etc/Network-Manager/Network-Manager.conf
建议您注释掉该dns=dnsmasq
行,它是网络管理器的一个插件,它会自动转到最近/最容易到达的 DNS,如果您想绕过网络的 DNS 并使用您自己的 DNS,这可能不是您想要的。
边注:resolv.conf 被重写其实很正常 - 在我的机器上每次建立新连接时它都会被重写。虽然我无法回答为什么,但我的猜测是 NetworkManager 从本地连接获取 dhcp 租约,并使用该本地连接的设置、dns 和其他内容,因此 resolv.conf 需要适应这一点。