将网络配置为静态ip时,resolv.conf不会在重新启动时设置


17

将计算机配置为使用静态ip时,遇到了Ubuntu 12.04 Server版中的名称解析问题。

在/ etc / network / interfaces中:

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.28
netmask 255.255.255.0
gateway 192.168.1.1

运行$ sudo apt-get upgrade,将导致“无法提取...”:

. . . W: Failed to fetch http://us.archive.ubuntu.com/ubuntu/dists/precise-backports/universe/i18n/Translation-en_US Something wicked happened resolving 'us.archive.ubuntu.com:http' (-5 - No address associated with hostname)
[...]

当我将/ etc / network / interfaces更改为:

auto eth0
iface eth0 inet dhcp

一切正常。

查看/etc/resolv.conf可提供更多提示。

如果遇到解决问题,则resolv.conf为空;未指定名称服务器。然后,我从静态更改为DHCP,然后重新启动网络。/etc/resolv.conf更改为:“名称服务器192.168.1.1”。

从DHCP切换回静态并重新启动不会删除名称服务器条目。但是,当我使用静态设置重新启动系统时,resolv.conf为空。当我使用DHCP设置重新启动系统时,resolv.conf的名称服务器为192.168.1.1。因此,看来问题在于解决方案.conf没有正确写入?哪个程序包/代码负责写入resolv.conf?我是否可以查看一个特定的软件包?

更新:istream发布了一篇不错的文章,讨论了12.04中对resolve.conf的更改。 http://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/


2
如果使用时一切正常DHCP,那么您要建议“修复”的是“问题”。您的局域网是什么样的?您使用哪种类型的路由器?(什么是192.168.1.1?)当您使用静态IP时,您指定哪些DNS服务器?
不合理的约翰,

1
更新标题以更准确地反映症状并添加更多发现
kenneth koontz'4

+1用于编辑问题和标题以改善它们,即使您已经有了答案!
不合理的约翰

1
添加了istream对ubuntu 12.04中dns更改的引用。
肯尼斯·孔茨(肯尼思·孔茨),2012年

Answers:


16

按照resolvconf手册页手册页中提供的示例),将以下内容添加到静态配置下的/ etc / network / interfaces中:

dns-nameservers [IP address(es) of your DNS]     
dns-search      [your dns-search strings (optional)]

完善。这可行!
kenneth koontz 2012年

奇怪的是,在11.10中,我不必指定dns-nameservers。
kenneth koontz 2012年

那就对了。从12.04开始,Ubuntu开始使用resolvconf处理resolv.conf。是resolvconf,它读取dns-nameservers/ e / n / i中的选项。
jdthood

1

确定192.168.1.1设置静态IP时是否确定提供了DNS的值?

我不知道如何从命令行执行此操作,但是使用System Settings -> NetworkGUI也应该可以,不是吗?我在想的只是想要下面的屏幕截图吗?还是我不明白您要做什么?

具有静态IP,默认路由,DNS服务器的网络配置

注意:忽略左侧窗口中的值。这些只是我从DHCP获得的价值。我没有费心保存静态配置,因为我只是想说明自己在想什么。

顺便说一句,我用过,192.168.1.1因为那是您所使用的。但是您也可以将IP用于任何有效的DNS服务器。例如,8.8.8.8和/或208.67.222.222也应该起作用。


感谢您的解决方案。但是,我没有使用台式机。
kenneth koontz 2012年

@kennethkoontz我不明白。您正在使用Ubuntu服务器吗?如果您没有使用典型的台式机安装版本12.04,请编辑您的问题并将此信息添加到其中。
不合理的约翰

2
对困惑感到抱歉。我应该说:“我没有使用桌面版。我正在使用服务器版。” 我将更新问题帖以消除歧义。
kenneth koontz'4

0

如果您不想(或不能)使用网络管理器小程序来设置网络设置,那么当您没有可用的DHCP服务器时,我会找到正确的方法来设置“静态” IP配置,是在上有静态租约dhclient.conf。在那里,您应该指定resolv.conf当dhclient回退到静态时将写入文件的名称服务器。

但是,如果您不想弄脏自己的手,我仍然建议使用GUI在连接的IP设置中指定DNS服务器地址,如/ubuntu//a/127537/33305


0

OP正在使用服务器ed。NetworkManager不适用..尽管谁知道也许会添加它只是为了增加服务器的复杂性。

出于这个原因,为什么全世界都没有将resolvconf添加到服务器ed中……为什么!

无论如何回答您的问题,请添加:

/ etc / network / interfaces

像这样的东西:

auto eth0 inet static
     dns-nameservers ns1.mydnsservers.com ns2.mydnsservers.com

重要的选项是“ dns-nameservers”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.