如何在接口中配置静态 DNS?

dot*_*uad 64 dns

我正在使用 Ubuntu 12.04。

我的/etc/network/interfaces文件包括:

# The loopback network interface  
auto lo  
iface lo inet loopback  


# The primary network interface  
auto eth0 
iface eth0 inet static  
address 192.168.1.58  
gateway 192.168.1.1
network 192.168.1.0  
broadcast 192.168.1.255
dns-nameservers 66.212.63.228 66.212.48.10  
Run Code Online (Sandbox Code Playgroud)

我运行了命令: /etc/init.d/networking restart

其中回应:

*Running /etc/init.d/networking restart is deprecated because it may not enable again some interfaces  
*Reconfiguring network interfaces...  
RTNETLINK answers: File exists  
Failed to bring up eth0  
[ OK ]  
Run Code Online (Sandbox Code Playgroud)

接下来我运行 ping google.com 并收到:

ping: unknown host google.com
Run Code Online (Sandbox Code Playgroud)

我不确定我的界面是否刷新了。如何使用静态 DNS 地址正确配置我的网络?

jdt*_*ood 28

由于提问者给出了他的内容,/etc/network/interfaces我推断他正在使用 ifup 来配置接口。但由于他实际上可能正在使用 NetworkManager,因此我也将讨论这个问题。

如果您使用 ifup 然后 DNS 设置进入/etc/network/interfaces。对于每个接口,您添加dns-*适用于该接口上可用的名称服务器的选项。例如,如果地址 1.2.3.4 的名称服务器可通过接口 eth0 使用,则添加dns-nameservers 1.2.3.4到该iface eth0节。

如果您使用的是 NetworkManager,则在 IPv4 设置选项卡的连接编辑器(网络指示器 | 编辑连接...)中输入设置。

这样做/etc/init.d/networking restart重新配置的接口已被弃用。如果您正在使用,ifup则首先使用ifdown每个活动的网络接口,然后使用ifup每个接口。如果您使用的是 NetworkManager,则首先使用指示器(桌面顶部)禁用网络;然后打开一个终端并运行

sudo /etc/init.d/network-manager restart
Run Code Online (Sandbox Code Playgroud)

然后使用指示器启用网络。

或者你可以重新启动。

关于/etc/init.d/networking restart导致的事实

RTNETLINK answers: File exists
Failed to bring up eth0  
Run Code Online (Sandbox Code Playgroud)

这意味着 ifupdown 认为它eth0已经启动了。使用ifdown --force eth0到的原因ifupdown停止相信它已经配置的接口。

关于“已弃用”消息,此消息不再在 Ubuntu 12.10 中打印,但您仍应注意 initscripts 正在“退出”。要重新启动服务foo,请使用service foo restart或restart foo。另请注意,如果您想重新配置您的接口,最好将它们一一关闭,而不是依靠重新启动“网络”。


小智 19

如果上述方法都不起作用,请记住 Ubuntu 会将一个tail文件附加到它生成的 resolv.conf 文件中。

尝试这个:

sudo nano /etc/resolvconf/resolv.conf.d/tail
Run Code Online (Sandbox Code Playgroud)

这将在 nano 文本编辑器中打开一个空白的 resolv.conf.d 文件。您需要将您的 DNS 服务器地址放在此文件的第一行,并记住以回车(按 Enter)结束该行,如下所示:

nameserver 10.20.1.2
Run Code Online (Sandbox Code Playgroud)

编辑尾部文件而不是实际的 resolv.conf 文件将防止您的更改在系统重新启动时丢失。

您需要运行sudo resolvconf -u以激活更改。在此之后,您应该可以 ping google.com。祝你好运!


bab*_*onk 13

所有与 /etc/network/interfaces 相关的答案都错误地陈述dns-nameservers而不是dns-nameserver- 以下应该有效:

auto wlan0
iface wlan0 inet static
address 192.168.1.28
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameserver 8.8.8.8
dns-nameserver 8.8.4.4
dns-search something.network.com
Run Code Online (Sandbox Code Playgroud)

(在 Ubuntu 15.04 上测试)

  • 小心。我刚刚确认`dns-nameserver`(单数)*在RaspberryPi + Raspian Jesse上不起作用*。我发现我*不得不*使用`dns-nameservers`(复数)。YMMV等等,只是想帮助下一个人...... (9认同)
  • 检查您的 resolvconf(8) 手册页以了解用法和选项。在 Ubuntu 16.04.3 LTS 上,它说您可以使用一个或多个 dns-nameserver 行,每行一个 IP 地址,或者您可以使用 dns-nameservers 和一个空格分隔的 IP 地址列表。 (2认同)

pl1*_*1nk 11

命令行版本:

您应该将您的名称服务器添加到/etc/resolvconf/resolv.conf.d/base文件中:

nameserver 66.212.63.228 
nameserver 66.212.48.10
Run Code Online (Sandbox Code Playgroud)


Pan*_*her 6

配置 DNS 服务器的最简单方法是使用 NetworkManager

在 IPv4 下,填写您的 dns 服务器

在此处输入图片说明

  • 我忘了提到我没有安装 unity 或 gnome。Gnome installatio 是我的下一个项目。 (2认同)

小智 5

通过添加,我能够在无头 ubuntu 服务器安装上解决此问题

nameserver 8.8.8.8
Run Code Online (Sandbox Code Playgroud)

...在 /etc/network/interfaces 中的相关接口内容之后:

auto wlan0
iface wlan0 inet static
address 192.168.1.28
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8
dns-nameservers 8.8.4.4
Run Code Online (Sandbox Code Playgroud)

希望这对以后的用户有所帮助!