当我将我的计算机配置为使用静态 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。因此,问题似乎是 resolve.conf 未正确写入?哪个包/代码负责写入 resolv.conf?是否有一个特定的包可以让我查看未解决的问题?
更新:istream 发布了一篇很好的文章,讨论了 12.04 中 resolve.conf 的变化。 http://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/
答案1
按照resolvconf 手册页(手册页中提供了示例),将以下内容添加到静态配置下的 /etc/network/interfaces 中:
dns-nameservers [IP address(es) of your DNS]
dns-search [your dns-search strings (optional)]
答案2
您确定192.168.1.1
在设置静态 IP 时提供了 DNS 的值吗?
我不知道如何从命令行执行此操作,但使用 GUISystem Settings -> Network
应该也可以,不是吗?我所想的只是您想要类似下面的屏幕截图的东西?还是我不明白您想要做什么?
注意:忽略左侧窗口中的值。这些只是我从 DHCP 获取的值。我没有保存静态配置,因为我只是想说明我的想法。
顺便说一句,我之所以使用是192.168.1.1
因为您正在使用这个。但您也可以使用任何有效 DNS 服务器的 IP。例如,8.8.8.8
和/或208.67.222.222
也应该有效。
答案3
如果你不想(或不能)使用网络管理器小程序来设置你的网络设置,我找到了正确的方法来设置“静止的”当您没有可用的 DHCP 服务器时,IP 配置是拥有静态租约。您应该在那里指定当 dhclient 回退到静态时dhclient.conf
将写入文件的名称服务器。resolv.conf
但是,如果你不想亲自动手,我仍然建议使用 GUI 在连接的 IP 设置中指定 DNS 服务器地址,如下所示https://askubuntu.com/a/127537/33305。
答案4
OP 正在使用服务器版。NetworkManager 不适用……但谁知道也许它会被添加只是为了增加服务器的复杂性。
那就好了,为什么要将 resolvconf 添加到服务器版中...为什么!!?!?!
无论如何回答你的问题添加:
/etc/网络/接口
像这样:
auto eth0 inet static
dns-nameservers ns1.mydnsservers.com ns2.mydnsservers.com
重要的选项是“dns-nameservers”。