/etc/resolv.conf
在Ubuntu 12.04 LTS(精确的穿山甲)中没用吗?我看到DNS服务器信息现在存储在NetworkManager中。
nmcli
命令行工具可以为您列出该名称。如果我想再添加一台DNS服务器,是否可以使用
/etc/resolv.conf
软件包帮助将其添加到resolvconf
?#1 楼
如果/etc/resolv.conf
包含nameserver 127.0.0.1
,则将条目添加到/etc/resolvconf/resolv.conf.d/tail
并不会真正有用。 如果使用的是NetworkManager,则应改为通过网络指示器静态添加名称服务器地址:编辑连接... |编辑... | IPv4设置|其他DNS服务器。
如果您真的想向
/etc/resolv.conf
添加更多条目,请创建一个/etc/resolvconf/resolv.conf.d/tail
并将其添加到其中。与每个Ubuntu版本一样,建议阅读Ubuntu发行说明,可在以下位置获取:
https://wiki.ubuntu.com/PrecisePangolin/ReleaseNotes/UbuntuDesktop
“桌面和公共基础结构”部分包含一个链接到
http://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/涵盖了DNS的更改12.04中的基础结构。
评论
@stgraber,请评论我在下面找到并发布的替代方法。与添加/etc/resolvconf/resolv.conf.d/tail文件或使用网络管理器相比,它有何不同?谢谢。
–兰德尔·库克(Randall Cook)
2012年5月8日23:02
@stgraber您对Ubuntu Server有何建议?我从您的博客和评论中注意到,Network-Manger似乎是管理此问题的最佳方法,但是在系统上安装network-manager会安装一大堆我不需要的东西(即GUI东西) )。
–陈慧琳
2012年6月22日,下午3:17
怎样在/etc/resolvconf/resolv.conf.d/head中添加条目(根据您的博客文章)?
–sup
13年3月12日在16:15
@AveryChan,使用@randallcook建议的“第三种方法”,只需在/ etc / network / interfaces中的eth0部分中添加dns-nameservers。
–mrm
13年8月26日在5:15
在Ubuntu 14.04.1服务器上的/etc/resolvconf/update.d/libc:#设置TRUNCATE_NAMESERVER_LIST_AFTER_LOOPBACK_ADDRESS = no#允许在初始回送地址127. *或:: 1之后的#resolv.conf中列出其他名称服务器地址。 (在/ etc / default / resolvconf中进行设置,如/etc/resolvconf/update.d/libc的第23和24行所示。
–immeëmosol
2015年2月14日在4:07
#2 楼
我在这里找到了另一种方法,其中涉及向/etc/dhcp/dhclient.conf
添加以下行:prepend domain-name-servers x.x.x.x, y.y.y.y;
同样,我在这里发现了第三种方法,其中涉及向
/etc/network/interfaces
添加行:auto eth0
iface eth0 inet static
. . .
dns-nameservers 8.8.8.8 8.8.4.4
更新:这是第三种方法的官方文档。
评论
我之所以投票,是因为到目前为止,第三种方法是最简单的方法。
–比利·穆恩(Billy Moon)
2012年7月17日在9:27
@billy我根本无法使第三个方法起作用。.只有这里列出的第一个方法,编辑dclient.conf对我有用。
–杰夫·阿特伍德
2012年10月17日在21:49
注意:仅当使用dhclient时,编辑dhclient.conf才有效(ifup和NetworkManager都使用!)如果使用ifup,则编辑/ etc / network / interfaces才有效。仅当使用NetworkManager时,使用NetworkManager连接编辑器配置NetworkManager连接才有效。
– jdthood
2012年10月29日14:26
如果我没记错的话,第三种方法是在DHCP返回的域名服务器之后添加另一个域名服务器。如果您希望它排在第一位,那么使用其他选项中的一个更为合适。我使用了/etc/resolvconf/resolv.conf.d/head(克服了误导性的“请勿编辑”评论之后:))
– starfry
2014年9月15日上午10:46
@ Mr.Hyde,这些不是命令行命令,它们是添加到/ etc / network / interfaces的行。
–兰德尔·库克(Randall Cook)
15年7月7日在5:49
#3 楼
听起来您在谈论resolvconf软件包。安装resolvconf软件包。
运行
cd /etc/resolvconf/resolv.conf.d
sudo cp -p head head.orig #backup copy, always do this
sudo nano head
该文件的顶部是一个可怕的警告。文件/etc/resolv.conf是根据该文件的内容自动生成的;警告在那里,因此在生成/etc/resolv.conf时将其放置在/etc/resolv.conf中。在文件末尾,添加
nameserver <ip_of_nameserver>
按Ctrl x并回答yes,以保存文件。最后,重新生成/etc/resolv.conf,以便立即应用更改:
sudo resolvconf -u
然后检查/etc/resolv.conf的内容以查看您添加的行现在在那里。此外,下次启动计算机或重新启动网络服务时,仍然存在,以先到者为准。
评论
关于文件警告的信息正是我所需要的。我的印象是我不应该编辑文件!谢谢!
– Xunnamius
17-10-22在5:51
这是对我最好的答案!
–沉思玮申思
18年11月1日在11:23
#4 楼
下面,我将向您展示自从我运行Ubuntu Server版本并使用ifup而不是NetworkManager以来找到的最佳方法。实际上,对我来说,这使它们更容易了:)将它们全部放入/ etc / network / interfaces文件。现在,您将要写入resolv.conf的相同配置可以与以下示例中的网络适配器配置位于同一文件中:
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 75.75.75.75 75.75.76.76
dns-search local
我希望这样做可以为我提供帮助,并使其更轻松,现在,我们可以创建静态IP地址,并在一个文件中添加名称服务器和dns域:)
评论
谢谢。这也成为我最喜欢的方法。偏离主题的注释:无需指定“网络”和“广播”地址,因为它们是根据“地址”和“网络掩码”自动计算得出的。您真正需要的只是“地址”,“网络掩码”和“网关”。
–马丁·海默斯(Martijn Heemels)
2014年2月21日在10:16
这是最干净的答案。只要确保正确拼写dns- *关键字即可。我的实际问题是拼写错误的“ dns-nameservers”。
– John McGehee
18年4月13日在21:28
#5 楼
我的正在运行Ubuntu Server 12.04。我进行了以下更改并重新启动了服务器(通常只能通过关闭网络接口ifdown eth0
或ifup eth0
来完成此操作)。在文件
/etc/resolvconf/resolv.conf.d/base
中,我添加了以下条目:nameserver 8.8.8.8
nameserver 8.8.4.4
希望以上内容对您有所帮助!
#6 楼
您可以按照弗兰克答案中的说明使用NetworkManager,但如果您希望手动编辑/etc/resolv.conf
,可以通过删除它(实际上是一个符号链接),然后使用所需的内容创建一个新的纯文件来进行编辑。 resolvconf
实用程序只能写入文件/run/resolvconf/resolv.conf
。#7 楼
注意:此答案针对的是问题的完全不同的预合并版本,仅侧重于预先添加所需的名称服务器。此方法在04.04之前的版本有效:
编辑
/etc/dhcp3/dhclient.conf
并添加:prepend domain-name-servers 127.0.0.1;
(实际上,此行已存在;您需要做的就是取消注释。)
评论
如果您没有DHCP分配的任何地址,此方法是否有效?
–阿岑代尔
2011年6月30日23:34
如果要了解有关dhclient配置的更多信息,可以执行man dhclient.conf来访问dhclient手册页。 (这不是对Azendale问题的答复。)
–克里斯汀·斯科约德(ChristianSkjødt)
2011年8月31日在16:01
这个答案是完全错误的。首先,问题提交者要添加外部namserver的地址,而不是地址127.0.0.1。外部接口的接口配置器不是为内部名称服务器添加地址的地方。其次,文件位于/ etc / dhcp,而不是/ etc / dhcp3。第三,从Ubuntu 12.04开始,使用resolvconf进行配置。
– jdthood
13-10-3在8:29
首先-主持人合并极大地改变了最初的问题,所以我的回答当然很奇怪。 dhcp3文件是我在2011年回答此问题的位置,即使它不是理想的,它也可以工作。我已经在多台机器上使用了该解决方案。显然,您可以将环回地址更改为要添加的地址。我假设大多数人都知道环回是什么,即使他们没有阅读RFC6890。
– Belacqua
2013年10月4日15:11
@jdthood为什么不添加自己的答案?我个人并不熟悉bsd-ish resolvconf的处理方式。我倾向于直接使用/etc/resolv.conf方法,但是我不确定新的Rube Goldberg系统的优点是什么。 (与/ etc / motd类似)。
– Belacqua
2013年10月4日15:46
#8 楼
resolvconf
没有用。我在Linux服务器上,我的IP地址是静态的,而我的DNS服务器是静态的。我不需要resolvconf
或NetworkManager。在服务器上工作时,保持简单是我的政策。复杂程度越低,发生问题时就越容易管理/修复。
所以我做了
aptitude purge resolvconf
并手动确保/etc/resolv.conf
不是符号链接,只是创建了一个静态文件。以防万一某个程序试图更改文件,为了预防起见,我将chattr +i
(不可变)设置为/etc/resolv.conf
。评论
由于resolvconf是基本系统的一部分,因此通过删除它,您将来会在升级时提出问题。
– jdthood
2012年10月29日14:30在
我同意评论和回答:考虑这引起了多少问题,解决了这个“问题”有多少支持小时,有多少IT人员花费了时间寻找答案。简单是最好的-我不需要服务器将DNS更改为不需要的内容。
–美
14年7月30日在16:40
#9 楼
上面的大多数内容都假定您具有原始系统,但是现实常常是您安装了不同的dhcp客户端,在某些早期版本的Ubuntu中禁用了网络管理器,等等。可能有必要了解以下内容。我已经使用dnsmasq已有一段时间了,但已将其卸载。当前,我的系统具有/etc/resolv.conf
的以下内容(这是指向我系统上/run/resolvconf/resolv.conf
的符号链接):cat /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
nameserver 127.0.0.1
多长时间运行一次
sudo resolvconf -u
或sudo dpkg-reconfigure resolvconf
,它没有将名称服务器更新为我在NetworkManager中设置的名称服务器。存在resolvconf确实从NetworkManager使用的信息:cat /run/resolvconf/interface/NetworkManager
nameserver 8.8.4.4
nameserver 8.8.8.8
但是,事实证明,如果此目录中有多个文件,则该文件可能根本不使用。罪魁祸首是没有通过卸载dnsmasq删除的文件:
cat /run/resolvconf/interface/lo.dnsmasq
nameserver 127.0.0.1
仅删除此文件(然后运行
sudo resolvconf -u
)即可解决我的dns问题:<我希望这也可以帮助其他人进行调试(所有这些不同网络工具之间的复杂交互)。如果使用
resolvconf
,请确保运行ls /run/resolvconf/interfaces
以查看其中的内容。评论
谢谢,这非常有帮助。我首先尝试了投票率较高的答案,但似乎没有一个解决之道。我在/ run / resolvconf / interface /目录中没有任何其他文件,但是我的NetworkManager文件需要一些帮助。您的回答为我解决了这个问题。
–mason81
15年7月2日在14:40
#10 楼
我只是删除了/etc/resolv.conf
中的一个链接,并使用名称服务器的地址创建了一个常规文件。它可以正常工作,我看不出有任何理由使用Ubuntu开发人员创建的相当奇怪的构造。评论
是的,我不喜欢这种会影响服务器,增加复杂性和不透明性的更改。这是核心行为,不应因版本而异。
– Belacqua
13-10-4在15:32
这个答案有5年历史了,恕我直言,仍然是所有列出的最好的答案。它简单,快速且有效。有什么缺点吗?
–克雷格·安德森(Craig S. Anderson)
19 Mar 9 '19 at 4:02
#11 楼
您可以编辑连接“ AUTO ETH0”,也可以编辑用于连接NM的名称。您可以通过右键单击NM并选择“编辑连接...”来执行此操作。在IPv4选项卡上,您可以选择“仅自动(DHCP)地址”作为“方法”,并且NM将允许您手动设置名称服务器地址,即使地址是通过DHCP传递的。#12 楼
将我添加到已经很长的列表中,这是另一种方式(在12.04上进行了测试):编辑
/run/resolvconf/interface/NetworkManager
以适合您的需求。这是一个示例:search foobar.com example.com
nameserver 192.168.1.1
然后,如大多数其他示例所述,执行
sudo resolvconf -u
。现在您会发现您的resolv.conf
看起来像这样:nameserver 192.168.1.1
nameserver 127.0.0.1
search foobar.com example.com
我仍然不喜欢它现在的实现方式(似乎Ubuntu为它创建的每个foo都需要一个服务) ,并且可以肯定地选择纯
resolv.conf
。但是到目前为止,这种方法似乎是我最好的折衷方案。添加的“ localhost-NS”应该不会造成太大的伤害。#13 楼
我通过更改源顺序来解决此问题。我将dns
的源代码移到了mdns
的/etc/nsswitch.conf
之前:hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4
您可以保留设置,并且仍然以这种方式使用本地缓存服务器。
评论
而不是添加条目,而是修复已损坏的系统并为您提供所需的信息。 +1。
–nelaaro
13年2月5日在12:30
#14 楼
怎么样:sudo dpkg-reconfigure resolvconf
在此之前,请使用网络管理器更改DNS地址并将方法更改为
仅自动(DHPC)地址
然后运行上面的命令并重新启动。那为我解决了问题。
#15 楼
vi /etc/network/interfaces
This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The primary network interface
allow-hotplug eth0
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
#auto eth0 <<----- change this comment with the #
iface eth0 inet dhcp
#16 楼
这是一个非常受欢迎的问题,提供了一系列可能的标准答案,而IMO都非常棘手。我曾经一度遇到问题,无法让Ubuntu尊重我在NetworkManager中设置的DNS设置-特别是使用“仅自动(DHCP)地址”设置静态DNS服务器-今天,我终于弄清了什么是错误的。 br />问题在于resolvconf和NetworkManager之间的交互。 resolvconf的文件名为
/etc/resolvconf/interface-order
。至少在我的系统上,NetworkManager根本不在此文件中(除非文件末尾由*通配符覆盖)。因此,发生的是,dhclient的最新resolvconf报告优先于NetworkManager必须说的任何事情。因此,至少就我而言,实际答案是添加
NetworkManager
在/etc/resolvconf/interface-order
的顶部或顶部附近。(是的,我知道很多人只是说“卸载resolvconf”,这本身似乎是一个坏主意,但是,更重要的是,至少有经验的人认为resolvconf是系统的重要组成部分(即ubuntu-minimal依赖于此),因此如果没有resolvconf,将很难保持系统处于一致的更新状态。 )
应要求,我可以提供有关如何解决此问题的更多详细信息。 (编辑:很显然,当我被请求时我没有这样做,对不起。在这一点上,我不记得比我接下来说的还要多的细节:)简而言之,我用一个外壳包装器代替了resolvconf可执行文件将其参数,输入,输出和stderr转储到文件中;并将set -x添加到resolvconf的更新脚本中。
(编辑:我可以说,第一部分的意思是我使用sudo移动了实际的resolvconf可执行文件,可以使用which命令或type命令找到该可执行文件。然后创建一个shell脚本,该脚本最终仅执行被移动的resolvconf,但也回显某些文件的参数,并使用shell重定向将stdin,stdout和stderr发送到其他文件。我不记得“ resolvconf的更新脚本”在哪里,目前无法轻松检查。许多Linux极客可以理解我的意思;也许一些优秀的撒马利亚人会在评论中提供更多细节。)
评论
请“提供有关您如何解决此问题的更多详细信息”
– Pierre.Vriens
16年5月31日在19:49
#17 楼
另一种方法是在以下位置定义Docker特定的dns服务器:/etc/docker/daemon.json
如果没有这样的文件,只需创建它即可:
{
"dns": ["1.1.1.1", "1.0.0.1"]
}
来源,另请参见。
#18 楼
要更改DNS,请按照以下说明进行操作:https://developers.google.com/speed/public-dns/docs/using
转到网络
对于要配置DNS的连接,请单击齿轮。
单击“ IPv4或IPv6设置”选项卡。
如果选择的方法是“自动”,则选择“仅自动(DHCP)地址”。如果该方法设置为其他方法,请不要更改。
在DNS服务器字段中,输入DNS IP地址,以逗号分隔。
编辑:因为这似乎不是在较新的ubuntu上正常运行,我将:
sudo systemctl disable systemd-resolved.service
sudo gedit /etc/resolvconf/resolv.conf.d/head
# add
nameserver 8.8.8.8
nameserver 8.8.4.4
sudo resolvconf --enable-updates
sudo resolvconf -u
来源:https://pchelp.ricmedia.com/set-custom-dns-servers-linux-network- manager-resolv-conf /
#19 楼
添加临时DNS。编辑
/etc/resolv.conf
。nameserver 1.1.1.1
nameserver 1.0.0.1
安装或更新resolvconf。
sudo apt-get install -y resolvconf
将名称服务器添加到
/etc/resolvconf/resolv.conf.d/tail
nameserver 1.1.1.1
nameserver 1.0.0.1
重新启动计算机:
reboot
评论
你是谁?我习惯从零开始。
–小流子
19年11月18日在11:28
评论
我认为上面提到的命令应该是nm-tool,而不是nmcli。