search puppetmaster.com
nameserver 192.168.1.XXX
在12.04中,重新启动时resolv.conf被覆盖。我不能为这些使用静态IP,因此使用/ etc / network / interfaces来帮助我是一个小问题。
# 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
是否有一种获取方法resolvconf可以在头,尾或基中处理此问题?如果有,可以使用任何示例来调整服务器上的内容。
非常感谢您的帮助。
#1 楼
最好让您的DNS服务器能够将“人偶”解析为正确的地址,或者让您的DHCP服务器分发DNS名称服务器地址和搜索列表,或者(如果您有静态IP地址)使用类似以下内容/ etc / network / interfaces中的以下内容。iface eth0 inet static
address 192.168.3.3
netmask 255.255.255.0
gateway 192.168.3.1
dns-search example.com
dns-nameservers 192.168.3.45 192.168.8.10
但是如果您确实想通过resolvconf配置文件来执行此操作,则需要编辑
/etc/resolvconf/resolv.conf.d/base
。在该文件中,像在resolv.conf
中一样输入您的信息。nameserver 192.168.1.XXX
,然后告诉resolvconf重新生成
resolv.conf
。sudo resolvconf -u
评论
尽管此答案具有投票权,并且第一部分或多或少是正确的,但答案的第二部分却不正确。 (1)不要在/etc/resolvconf/resolv.conf.d/head中放置“搜索”行。如果在此处放置“搜索”行,如果resolvconf在resolv.conf文件的动态部分中包含“搜索”行,则该行将被忽略。除了最后的“搜索”或“域”行外,glibc解析器将忽略所有内容。参见resolv.conf(5)。 (2)如果更改了resolvconf配置,则不应重新启动resolvconf作业,而应运行更新“ resolvconf -u”。
– jdthood
2012年10月27日18:46
我已经删除了行。另一种选择是使用尾部而不是头部。
–tgm4883
2012年10月30日11:44
@tishma:嗨。首先,为了防止任何误解:基本文件,头文件或尾文件都不会写入。在运行时,什么都不会写入/etc/resolvconf/resolv.conf.d/中的任何文件。这些文件由resolvconf读取,resolvconf将它们的内容组装到它写入的文件--- /run/resolvconf/resolv.conf ---符号链接/etc/resolv.conf指向的文件中。其次,关于更改/ etc / network / interfaces中的dns- *选项后的操作。不要运行“ /etc/init.d/networking restart”;现在已弃用。取而代之的是ifdown所讨论的接口并再次ifup。
– jdthood
2012年11月1日下午13:18
在14.04中,这个答案对我没有任何帮助。
–杰伊·沙利文(Jay Sullivan)
14年6月30日,0:55
如果其他所有方法都失败了.. $ sudo resolveconf -u似乎并没有为我改变任何事情,因此重新启动了计算机。
–MSpreij
2015年4月9日15:25
#2 楼
我认为答案是检查您的/etc/dhcp/dhclient.conf
,即不要从您的dhcp客户端请求dns-nameservers
。然后更新您的
/etc/network/interfaces
auto eth0
iface eth0 inet dhcp
dns-search google.com
dns-nameservers dnsserverip
然后您的
resolv.conf
将按照您想要的方式自动配置。添加到
dns-search
中,然后运行/etc/init.d/networking restart
(即使此脚本已弃用,它仍然可以工作)。 评论
dhclient统治所有resolvconf设置,因此这应该是最佳答案。
– Alex R
13年4月4日在9:35
/etc/init.d/networking restart在我的机器上不起作用,但是sudo ifdown -a和sudo ifup -a可以。 (而且,我花了一点时间才意识到我必须用8.8.8.8之类的东西替换dnsserverip;我觉得有点傻。)
–Jason Gross
2013年12月9日下午5:21
尝试systemctl重新启动networking.service
– Pavel Sayekat
17年12月8日14:42
#3 楼
第一次安装Ubuntu时,这可能是由DHCP配置引起的。尝试执行此三步过程来解决此自动配置问题。首先
编辑接口配置,该文件位于:
/etc/network/interfaces
添加
iface lo inet loopback
下面的这一行:dns-nameservers yourdns youraltdns
作为Google DNS的示例,您可能要使用此代码:
dns-nameservers 8.8.8.8 8.8.4.4
第二
编辑位于以下位置的DHCP配置文件:
/etc/dhcp/dhclient.conf
在每行上使用
#
将语法标记为注释或仅删除每个请求名称服务器。
在16.04中,可能不需要在此处进行任何更改。
第三
重新启动网络通过使用以下命令:
/etc/init.d/networking restart
在16.04中:
sudo ifdown -a
sudo ifup -a
评论
/etc/init.d/networking restart在我的机器上不起作用,但是sudo ifdown -a和sudo ifup -a可以。
–Jason Gross
2013年12月9日下午5:22
这很简单,即使有点黑,它也可以工作! ubuntu之类的问题有1000种方法可以做一件事情!
– Willa O Ng'wana
16年7月18日在12:52
然后,您可以检查/etc/resolv.conf在第一个有用的行中是否包含这两个新的DNS条目。
– ROMANIA_engineer
16 Dec 20'在16:31
#4 楼
正如许多其他答案所言,这与系统中安装的resolvconf
有关。这些文件位于:/etc/resolvconf/resolv.conf.d/
其中有
resolv.conf
文件。无论您放在哪里,都将写在head
的顶部,所以一切都会变成这样:
# echo nameserver 8.8.8.8 >> /etc/resolvconf/resolv.conf.d/head
# resolvconf --enable-updates
# resolvconf -u
评论
这是实际的正确答案!最后!
–user77232
18年11月9日在19:12
感谢您的回答。提示:如果您不希望它们成为主要对象(例如您在AWS上),则将它们附加到/etc/resolvconf/resolv.conf.d/base而不是/etc/resolvconf/resolv.conf.d/head 。
– Mike Q
20年1月14日在17:57
#5 楼
请查看resolvconf
的手册页。您可以通过以下方式强制包含某些DNS设置: /etc/resolvconf/resolv.conf.d/base
: /etc/resolvconf/resolv.conf.d/base
File containing basic resolver information. The lines in this
file are included in the resolver configuration file even when
no interfaces are configured.
还有其他特殊文件(头文件和尾文件),这些文件可以帮助您实现所需的目标。
评论
您可以在/etc/resolvconf/resolv.conf.d/base中添加行,但是由于每个名称服务器都可以通过接口访问,并且仅当该接口启动时才可以访问,因此最好将名称服务器信息与该接口关联。如果接口配置了ifup,则意味着:将信息放在/ etc / network / interfaces节的“ dns-search”和“ dns-nameservers”行中。如果接口是通过DHCP配置的,则意味着:将DHCP服务器配置为向客户端提供搜索名称和名称服务器地址。等等。仅将“基本”文件用作临时hack或不得已的手段。
– jdthood
2012年10月27日18:56
是的我在/etc/resolvconf/resolv.conf.d/base中添加了“名称服务器1.2.3.4”
–堡垒
19年6月13日在3:50
#6 楼
对我来说,由于以下原因,上述答案是不够的:我没有使用
resolvconf
,而只是使用/etc/resolv.conf
。使用
chattr +i
锁定resolv.conf
似乎太过分了。我需要Puppet在必要时可以自由进行更改。AFAIK,编辑
/etc/network/interfaces
不会阻止resolv.conf
被覆盖;它只是指定应写入的名称服务器。对我来说,指定名称服务器不是重点。我试图在我的options timeout:1
文件中设置options attempts:1
和resolv.conf
。我发现的最佳解决方案是使用记录在案的钩子覆盖
dhclient
的默认行为。创建一个新文件在
/etc/dhcp/dhclient-enter-hooks.d/nodnsupdate
上具有以下内容:#!/bin/sh
make_resolv_conf() {
:
}
,然后使文件可执行:
chmod +x /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate
现在当dhclient时运行-重新启动或手动运行
sudo ifdown -a ; sudo ifup -a
时-它会加载此脚本nodnsupdate
。该脚本覆盖了一个称为make_resolv_conf()
的内部函数,该函数通常会覆盖resolv.conf
而不执行任何操作。此功能在Ubuntu 12.04上对我有用。
评论
在Debian 8上运行良好。优雅的解决方案!
– Artur Bodera
2015年10月15日在7:19
仅出于完整性考虑:手册页dhclient-script包含上面提到的DHCP客户端网络配置脚本的信息。
–hecke
16年5月5日在19:36
这在16.04上不起作用,我也将内容添加到/etc/network/interfaces.d,没有任何效果,添加了此处推荐的make_resolv_conf空覆盖,没有效果..但未修改/ etc / dhcp / dhclient.conf-我真的需要修改静态配置文件来解决此问题吗?
– Silververjam
17年1月30日在20:57
#7 楼
这可能只是我机器上的一些怪异现象,但其他人可能也有同样的情况。我尝试了多种方法将ISP名称服务器包含在/etc/resolv.conf中,但没有成功:
我将它们包含在
/etc/network/interfaces
中并重新启动了网络。它们没有出现在/etc/resolv.conf
中。我明确地将它们放在
/etc/resolv.conf
中,但它们被覆盖了。它们确实出现在
/run/resolvconf/interface/eth0.inet
中,但从未出现在/etc/resolv.conf
中。我尝试配置resolvconf以进行动态更新。没变化。
最后我读到某个地方,如果本地计算机(127.0.0.1)在
/etc/resolv.conf
中出现,则不包括任何其他名称服务器。无奈地我编辑了
/run/resolvconf/interface/lo.named
,删除其中唯一的一行(nameserver 127.0.0.1
),然后重新启动:ifdown eth0 && ifup eth0
。/etc/resolv.conf,然后第一次包含我的ISP名称服务器!我运行
service network-manager restart
来查看它是否稳定,并且/etc/resolv.conf
仍然包括我的ISP名称服务器。重新启动只是为了确保它仍然存在,但是/run/resolvconf/interface/lo.named
重置为:nameserver 127.0.0.1
。奇怪地重新启动网络仍然有效:
/etc/resolv.conf
仍然包含我的ISP名称服务器。我无法解释这一点(有人可以吗?),但这可能有助于某人停留在同一地点。评论
这可能是由dnsmasq引起的。您可以使用apt-get remove dnsmasq或在/etc/dnsmasq.conf中更新配置来简单地将其删除。
–唐巴
16年1月8日在22:44
#8 楼
将您的名称服务器添加到文件/etc/resolvconf/resolv.conf.d/head。该文件包含您收到的消息:添加8.8.8.8后该文件应如下图所示:
root@hvnatvcc: ~ # cat /etc/resolvconf/resolv.conf.d/head
# 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.8.8
评论
在/etc/resolvconf/resolv.conf.d/head中添加行是一个糟糕的解决方案,甚至比在/etc/resolvconf/resolv.conf.d/base中添加行更糟糕。使用ifup配置的接口的正确解决方案是在/ etc / network / interfaces中的节中添加“ dns-search”和“ dns-nameservers”行。另请参阅我对其他答案的评论。
– jdthood
2012年10月27日19:01
这是唯一对我真正有用的东西……而且似乎很难弄清楚为什么所有“正确”的解决方案都不起作用。
– Silververjam
17年1月30日在20:54
#9 楼
在最后一行添加例如:nameserver 8.8.8.8
打开一个终端并输入
sudo chattr +i /etc/resolv.conf
+ i请注意不要在引导时重置文件。
撤消上述操作
sudo chattr -i /etc/resolv.conf
更多信息
man chattr
#10 楼
在/etc/resolvconf/resolv.conf.d/head
echo 'search puppetmaster.com' | sudo tee -a /etc/resolvconf/resolv.conf.d/head
echo 'nameserver 192.168.1.XXX' | sudo tee -a /etc/resolvconf/resolv.conf.d/head
中添加条目,然后运行以下命令
sudo resolvconf -u
评论
将搜索___和名称服务器___放在该文件中,终于使我能够将我的openVPN连接到内部网络以使用该网络的DNS了!
–马西森(Will Matheson)
20 Mar 20 '20 at 20:31
#11 楼
其他解决方案对我的Fedora 20系统不起作用。我的特殊问题是/etc/resolv.conf中的“搜索”行被覆盖。这是修复它的方法。 (这假定NetworkManager正在生成该行,并且您希望将其设为
search rn.yourcompany.com
:1。使用“ ifconfig”命令找出接口的含义兴趣:
$ ifconfig
:
:
em2: <this was the one which was connected>
2.成为root并更改为系统配置网络设备目录:
$ sudo su -[sudo]
password for youruser:
# cd /etc/sysconfig/networking/devices`
使用您喜欢的可用编辑器添加带有要搜索的其他域的
search rn.yourcompany.com yourcompany.com intnet.yourcompany.com
行:Domain
保存,注销并重新登录。NetworkManager现在应该在
DOMAIN="yourcompany.com intnet.yourcompany.com"
中有一行:search rn.yourcompany.com yourcompany.com intnet.yourcompany.com
评论
不要下雨了,但是这是Ask Ubuntu,所以Fedora是题外话。
– Flimm
2014年12月3日,0:05
#12 楼
对于Ubuntu Server 18,Netplan是用于配置网络的新实用程序。# cd /etc/netplan
然后编辑名称服务器地址yaml文件中的条目(使用正确的缩进)。例如,如果您使用Google的DNS服务器:
nameservers:
addresses: [8.8.8.8,8.8.4.4]
重新启动服务
# netplan apply
请参阅https ://netplan.io/
https://www.techrepublic.com/article/how-to-set-dns-nameservers-in-ubuntu-server-18-04/
评论
设置netplan.io/examples看起来非常复杂
– Greg Benner
20-11-22在7:30
#13 楼
如果您使用的是DHCP,请编辑/etc/dhcp/dhclient.conf
以添加其他DNS服务器:prepend domain-name-servers 12.34.56.78, 12.34.56.79;
DHCP客户端会覆盖
dns-nameservers
中的etc/network/interfaces
,我也想覆盖/etc/resolvconf/resolv.conf.d/base
。这在Ubuntu服务器14.04.3。中对我有用。
有关详细信息,请参见Debian NetworkConfiguration Wiki。
#14 楼
只需备份您的resolve.conf并删除resolvconf pacage并编辑/etc/resolv.conf文件即可。apt-get remove -y resolvconf
echo 'nameserver 8.8.8.8' > /etc/resolv.conf
我们应该有权选择不要使用诸如resolvconf之类的不良软件。
顺便说一句,/etc/resolv.conf中的搜索字段是无用的。
#15 楼
使用resolvconf
并禁用systemd-resolved.service
(适用于我的ubuntu 19.04):安装
resolvconf
sudo apt install resolvconf
添加名称服务器
用您的文本编辑器打开
/etc/resolvconf/resolv.conf.d/base
,我使用vim
。sudo vim /etc/resolvconf/resolv.conf.d/base
然后,在打开的文件中添加名称服务器,例如:
nameserver 1.1.1.1
nameserver 1.0.0.1
更新
resolv.conf
sudo resolvconf -u
禁用
systemd-resolved.service
然后重启。 nameserver 127.0.0.53
未写入/etc/resolv.conf
。sudo systemctl disable systemd-resolved.service
sudo reboot
完成!
源
评论
您能指定您针对哪个Ubuntu版本执行此操作吗?最初的问题是针对ubuntu 12.04的,因为它已被长期淘汰。
– Marc Vanhoomissen
19年6月27日在13:15
#16 楼
我找到了最简单的解决方法。如果您有resolv.conf
和resolvconf
文件,它们将彼此步进。您需要删除每次重新启动时获取并覆盖的resolv.conf
文件。将
nameserver 1.1.1.1 1.0.0.1
放在resolvconf文件的底部,然后运行sudo rm /etc/resolv.conf
摆脱文件。然后重新启动,一切都会正常。
评论
resolvconf是目录,而不是文件(即/ etc / resolvconf)
– mahemoff
20-04-26在23:33
#17 楼
在12.04上的Mi解决方案:我注意到,如果在不采用名称解析服务器的接口中添加dns-nameserver
resolvconf手册页
要使resolv.conf在我们手动编辑时不更改,请在终端上执行以下操作:
sudo resolvconf –disable-updates
之后:
sudo resolvconf -a eth0 # or your network interface
然后手动编辑
/run/resolvconf/resolv.conf
,最多添加两个DNS服务器。然后重新启动服务:
sudo /etc/init.d/networking restart
评论
这不是解决问题的正确方法。
– jdthood
2012年10月27日18:57
@jdthood作为浏览此内容的人,您可以详细说明为什么这不是正确的方法吗?对我来说似乎合乎逻辑,但对此我一无所知。
– ErikPerik
2014年3月25日下午6:09
#18 楼
另一种方法是,在查询DHCP提供的搜索域和名称服务器之前,将resolvconf(8)配置为使用本地搜索域和名称服务器。这是通过创建/etc/resolvconf.conf
(sudo nano /etc/resolvconf.conf
)来完成的:search_domains="nono.com"
name_servers="1.1.1.1 1.0.0.1"
谢谢您在关键博客上的Brian Cunnie
#19 楼
以上都不适合我在Ubuntu 20.4上运行我最终在根目录的crontab中添加了以下条目
@reboot sleep 20 && /root/restoreDNS>/etc/restoreDNS.out 1> 2&
基本上在启动20秒后;它执行一个shell脚本,将我的版本复制到/etc/resolv.conf
,这对我有好处。
#20 楼
只需在您的/etc/network/interfaces
配置上输入一个dns-search google.com && dns-nameservers (sample: 8.8.8.8)
命令。然后重新启动网络。
它应该可以工作。
#21 楼
该配置在/etc/default/bind9
中声明RESOLVCONF=no|yes
否=不在
init.d
中应用条件bind9
是,否则其他值=覆盖
resolv.conf
安装
bind9
时,会出现此问题,并且不关心检查所有conf。
评论
resolvconf是一个不好的软件,只需删除它,然后使用旧方法即可管理/etc/resolv.conf。