是/etc/resolv.conf
没用在Ubuntu的LTS 12.04(精确穿山甲)?
我看到DNS服务器信息现在存储在NetworkManager中。该nmcli
命令行工具可以列出你。
如果我想再添加一台DNS服务器,可以/etc/resolv.conf
使用resolvconf
软件包帮助将其添加到其中吗?
是/etc/resolv.conf
没用在Ubuntu的LTS 12.04(精确穿山甲)?
我看到DNS服务器信息现在存储在NetworkManager中。该nmcli
命令行工具可以列出你。
如果我想再添加一台DNS服务器,可以/etc/resolv.conf
使用resolvconf
软件包帮助将其添加到其中吗?
Answers:
如果/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版本说明,可在以下位置找到:
桌面和公用基础结构部分包含指向以下内容的链接:
/etc/resolvconf/resolv.conf.d/tail
文件或使用网络管理器相比如何?谢谢。
dns-nameservers
到中的eth0部分即可/etc/network/interfaces
。
/etc/resolvconf/update.d/libc
在Ubuntu 14.04.1服务器上:( # Set TRUNCATE_NAMESERVER_LIST_AFTER_LOOPBACK_ADDRESS=no
# to allow additional nameserver addresses to be listed in
# resolv.conf after an initial loopback address 127.* or ::1.
将其设置为/etc/default/resolvconf
,如第23和24行/etc/resolvconf/update.d/libc
所示。
我在这里找到了另一种方法,该方法涉及将以下行添加到/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
更新:这是第三种方法的官方文档。
third approach
是因为这是迄今为止最简单的方法。
/etc/resolvconf/resolv.conf.d/head
(克服了误导性的“请勿编辑”评论:)))
听起来您在谈论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并回答“是”以保存文件。最后,重新生成/etc/resolv.conf,以便立即应用更改:
sudo resolvconf -u
然后检查/etc/resolv.conf的内容,以查看您添加的行现在在那里。此外,下次启动计算机或重新启动网络服务时,仍然会在那里,以先到者为准。
下面,我将向您展示自从我运行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域全部添加到一个文件中:)
注意:此答案针对的是问题的完全不同的预合并版本,仅侧重于预先添加所需的名称服务器。
这适用于04.12之前的版本:
编辑/etc/dhcp3/dhclient.conf
并添加:
prepend domain-name-servers 127.0.0.1;
(实际上,该行已经存在;您只需取消注释即可。)
man dhclient.conf
来访问dhclient手册页。(这不是对Azendale问题的答复。)
resolvconf
是没有用的。我在Linux服务器上,我的IP地址是静态的,而我的DNS服务器是静态的。我不需要resolvconf
或NetworkManager的。
在服务器上工作时,我的策略一直保持简单。复杂程度越低,发生问题时就越容易管理/修复。
因此,我做了aptitude purge resolvconf
手动确定/etc/resolv.conf
不是符号链接,而是创建了一个静态文件。以防万一某个程序试图更改文件,我做了 chattr +i
(不可变的)/etc/resolv.conf
作为预防措施。
上面的大多数内容都假设您具有原始系统,但现实情况常常是您安装了不同的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
,它没有更新的域名服务器来我在网络管理器中设置的那些。存在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问题:
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 8.8.4.4
nameserver 8.8.8.8
我希望这也有助于其他人进行调试(所有这些不同的网络工具之间的复杂交互)。如果使用,请resolvconf
确保运行ls /run/resolvconf/interfaces
以查看其中的内容。
/run/resolvconf/interface/
,但是我的NetworkManager
文件需要一些帮助。您的回答为我解决了这个问题。
我只是删除了一个链接,/etc/resolv.conf
并使用名称服务器的地址创建了一个常规文件。它可以正常工作,我看不出有任何理由使用Ubuntu开发人员创建的相当奇怪的构造。
将我添加到已经很长的列表中,这是另一种方式(已在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”应该不会造成太大的伤害。
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
这是一个非常受欢迎的问题,它提供了一系列可能的标准答案,而IMO都非常棘手。我曾经一度遇到问题,无法使Ubuntu尊重我在NetworkManager中设置的DNS设置-特别是使用“仅自动(DHCP)地址”设置静态DNS服务器-今天,我终于弄清了什么是错误的。
问题出在resolvconf和NetworkManager之间的交互中。resolvconf的文件名为/etc/resolvconf/interface-order
。至少在我的系统上,NetworkManager 根本不在此文件中(除非文件末尾由*通配符覆盖)。因此,发生的是,dhclient关于resolvconf的最新报告优先于NetworkManager不得不说的话。
因此,至少就我而言,实际答案是添加
NetworkManager
在顶部或附近/etc/resolvconf/interface-order
。
(是的,我知道很多人对我来说只是说“ uninstall resolvconf”,这本身似乎是一个坏主意。但除此之外,至少有一点是明智的,xenial认为resolvconf是系统的重要组成部分[即ubuntu -minimal取决于它),因此如果没有resolvconf,将很难使您的系统保持一致,更新的状态。)
根据要求,我可以提供有关如何解决此问题的更多详细信息。(编辑:很显然,当我被要求时我没有这样做,对不起。在这一点上,我不记得比我接下来说的还要多的细节:)简而言之,我用一个外壳包装器代替了resolvconf可执行文件将其参数,输入,输出和stderr转储到文件中;并将set -x添加到resolvconf的更新脚本中。
(编辑:我可以说的第一部分是我用sudo移动了实际的resolvconf可执行文件,可以使用which命令或type命令找到它。然后创建一个最终只是执行被移动的shell脚本。 resolvconf,但也回显某些文件的参数,并使用shell重定向将stdin,stdout和stderr发送到其他文件。我不记得“ resolvconf的更新脚本”在哪里,目前无法轻松检查。许多Linux极客可以理解我的意思;也许一些优秀的撒马利亚人会在评论中提供更多细节。)
另一种方法是在以下位置定义Docker特定的dns服务器:
/etc/docker/daemon.json
如果没有这样的文件,只需创建它:
{
"dns": ["10.0.0.2", "8.8.8.8"]
}
来源:https : //robinwinslow.uk/2016/06/23/fix-docker-networking-dns/
另请参阅:https : //docs.docker.com/engine/reference/commandline/dockerd/#/daemon-configuration-file
要更改DNS,请按照以下网址中的说明进行操作:https : //developers.google.com/speed/public-dns/docs/using
转到网络
选择要为其配置DNS的连接。
要更改无线连接的设置,请选择“无线”选项卡,然后选择适当的无线网络。
单击箭头(右),然后在出现的窗口中选择“ IPv4设置”或“ IPv6设置”选项卡。
如果选择的方法是自动(DHCP),请打开下拉列表,然后仅选择自动(DHCP)地址。如果方法设置为其他,请勿更改。
在“ DNS服务器”字段中,输入DNS IP地址,以逗号分隔。
nm-tool
,不是nmcli
。