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


60

我正在使用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  

我运行了命令: /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 ]  

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

ping: unknown host google.com

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


1
重新启动计算机。不要运行/etc/init.d/networking restart。该错误是由已经存在的默认路由引起的。此设置对我来说看起来是正确的。
Matt H

2
正如Matt H所说,/etc/network/interfaces对已经存在的东西很挑剔。您可以有一个完美的设置,但是那里已经有东西了,它会抱怨。如果这是它抱怨的默认路由,则可以通过运行ip route del default计算机以将其管理/etc/network/interfaces
移交

网络管理员声称另一个受害者。只需删除该垃圾即可。
猫头鹰

Answers:


24

当发问者提供其内容时,/etc/network/interfaces我推断他正在使用ifup来配置接口。但是由于他实际上可能正在使用NetworkManager,所以我也会对此进行讨论。

如果使用ifup,则进入DNS设置/etc/network/interfaces。对于每个接口,您都添加dns-*适用于该接口上可用的名称服务器的选项。例如,如果接口eth0上有一个位于地址1.2.3.4的名称服务器,则将其添加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

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

或者您也可以重新启动。

关于/etc/init.d/networking restart导致

RTNETLINK answers: File exists
Failed to bring up eth0  

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

关于“已弃用”消息,此消息不再在Ubuntu 12.10中打印,但您仍应注意初始化脚本“正在退出”。要重新启动服务foo,请使用service foo restartrestart foo。还请注意,如果要重新配置接口,最好将接口一个接一个地关闭,而不是依赖于重新启动“网络”。


17

如果以上方法均无效,请记住,Ubuntu将tail文件追加到它生成的resolv.conf文件中。

尝试这个:

sudo nano /etc/resolvconf/resolv.conf.d/tail

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

nameserver 10.20.1.2

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

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


听起来不错,但我的Ubuntu 14.04系统未使用此尾文件。所以这不是我的解决方案。不过谢谢
James T Snell

11

命令行版本:

您应该以/etc/resolvconf/resolv.conf.d/base这种方式添加您的域名服务器:

nameserver 66.212.63.228 
nameserver 66.212.48.10

我将在几个小时内尝试使用此方法,然后再次与您联系。您知道我为什么收到不赞成使用的消息而无法发出eth0消息吗?
dotdotquad 2012年

1
您可以使用此方法:在此处$ ifdown eth0 && ifup eth0阅读有关此问题的更多信息。
pl1nk

1
@dottedquad您将/ etc / network / interfaces文件更改为以下内容:auto lo iface lo inet loopback 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注意:这auto eth0 iface eth0 inet static是两行
pl1nk 2012年

1
最好按照bodhi.zazen所述,将名称服务器信息添加到NetworkManager连接(如果使用的是NetworkManager),或者将其添加到/ etc / network / interfaces中的接口定义(如果使用的是ifup),则比静态地和全局地添加信息要好。到/etc/resolvconf/resolv.conf.d/base。
jdthood 2012年

1
@jdthood看来您已经看到我的评论和问题以及其他答案!一些评论[..]“您可以使用此:$ ifdown eth0 && ifup eth0” [..]
pl1nk 2012年

11

与/ 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

(在Ubuntu 15.04上测试)


8
小心。我只是证实了dns-nameserver(单数)不工作的树莓派+ Raspian杰西。我发现我不得不使用dns-nameservers(复数)。YMMV和所有这些,只是想帮助下一个人...
evadeflow

2
检查您的resolvconf(8)手册页以了解用法和选项。在Ubuntu 16.04.3 LTS上,它表示您使用一个或多个dns-nameserver行,每行一个IP地址,或者您可以使用dns-nameservers和IP地址的空格分隔。
jla

dns-nameserver还是dns-nameservers?因为wiki.ubuntu.com/KvmWithBridge说“服务器” ...
Thufir

绝对对我不起作用。无法投票,积分还不够。
猫头鹰

是的,这很好,而且很一致!抱歉,请混淆两者,并检查以上评论,因为似乎不同的Ubuntu / Debian / Raspian变体不同。
babelmonk

6

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

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

在此处输入图片说明


2
我忘了提到我没有安装Unity或gnome。Gnome安装是我的下一个项目。
dottedquad 2012年

它不会让我保存下来。为什么会这样呢?
josh

4

我可以通过添加以下方法在无头ubuntu服务器上解决此问题:

nameserver 8.8.8.8

...在/ 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

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


dns-nameservers可以用逗号分开8.8.8.8、8.8.4.4吗?
Thufir


4

注意:在不直接访问机器的情况下小心使用,会切断连接...

我用

sudo ifdown eth0

然后

sudo ifup eth0

它将重置并释放所有内容...

如果遇到与配置有关的错误,则可以使用:

sudo ifdown eth0 --force

3

这对我有用

sudo vi /etc/resolvconf/resolv.conf.d/base

并添加:

nameserver <add your router ip>

跑:

sudo resolvconf -u

我使用ubuntu服务器的核心安装。


2

您在interfaces文件中缺少子网规范。

将netmask添加255.255.255.0/etc/network/interfaces网络行下方。


1

由于某种原因,该dns-nameservers语句对我而言没有任何作用。其他答案不在本书中,因为它们绕过dnsmasq了Ubuntu中使用的方法。

为此,请编辑 /etc/dnsmasq.conf

将名称服务器添加到文件的底部:

server=8.8.8.8
server=8.8.4.4

重新启动dnsmasq以使用新设置: sudo service dnsmasq restart

信用:https//unix.stackexchange.com/a/163506/187949


1

我有这个问题。我以为我快疯了。每次编辑时/etc/resolv.conf,它都会删除我的配置。事实证明,有些疯子已经通过网络管理器分发了debian,这覆盖了我的所有网络设置。

这是我固定的方式:

1) sudo apt-get purge network-manager

摆脱了这个可怕的新工具,该工具使所有配置无法正常工作。

2)编辑/etc/network/interfaces文件:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

auto enp0s25
iface enp0s25 inet static
        address 192.168.1.2
        netmask 255.255.255.0
        gateway 192.168.1.1

3)编辑/etc/resolv.conf:

nameserver 8.8.8.8
nameserver 8.8.4.4

4)重新启动。

恭喜,您现在有了可以正常使用的合理配置。


0

您也可以在其他文件中配置该接口,因为您有更多网关。

详细信息在这里

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.