我正在尝试添加搜索行/etc/resolv.conf
我已直接将其添加为append
命令中的命令/etc/dhcp/dhclient.conf
和nameservers
块中的块/etc/netplan/50-cloud-init.yaml
。
大约一个小时后,dhcp 和 netplan 文件完好无损,但 resolv.conf 已恢复为没有我的搜索。
我没有改变,/etc/network/interfaces
因为它说“ifupdown 已被该系统上的 netplan(5) 取代”。
除了这两件事之外,还有什么可能会覆盖 /etc/resolv.conf 的想法吗?
这是 EC2 上的 ubuntu 18.04。
答案1
有一个复杂的竞争来获取resolv.conf
文件的控制权,这是一个非常古老的竞争。
尝试写一个的竞争者resolv.conf
是解析配置文件,DHCP,接口,网络管理员以及最近systemd 解析。其他程序也可以使用resolv.conf
,例如域名解析。
因此,简单的解决方案并不适用于所有情况。
如果您有解析配置文件安装的程序(其主要目标是获取
resolv.conf
文件的所有权)然后:卸载它。如果您的系统使用 DHCP 来获取工作 IP(您很可能会这样做),则大约每隔一小时(取决于系统配置)IP 就会更新,从而重写
resolv.conf
.检测这是否是问题的根源。该文件
/etc/interfaces
可用于更改resolv.conf
配置。找出它是否是(并删除它)。Network Manager
可以配置来改变什么resolv.conf
。检测(并删除)它是否这样做。Systemd-resolved
resolv.conf
可以配置为通过符号链接进行控制。删除链接(如果存在)。有些人建议设置为
resolv.conf
不可修改(我认为这更多是一个问题而不是解决方案)。如果存在,请将其删除。
删除上述所有内容后:决定谁应该控制文件,resolv.conf
了解DHCP
在获得新的 DHCP 租约时可以更新文件。如果应该使用 ISP(或上游 dhcp 服务器所有者)dns 服务器。可以将 DHCP 租约配置为更改 IP,但不更新文件resolv.conf
,或者dnsmasq/resolv.conf
如果使用dnsmasq
.当然,可以使用 、 等构建更复杂bind9
的Unbound
配置NSD
。
如果需要,请寻求更多帮助。
有关的:
答案2
/etc/resolv.conf
是resolvconf进程生成的动态配置文件:
$ head /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.1.1
该文件是从位于 下的文件生成的/etc/resolvconf/resolv.conf.d/
。要将您自己的更改写入到文件的内容中,/etc/resolv.conf
只需将您通常添加到文件中的行添加resolv.conf
到文件中即可/etc/resolvconf/resolv.conf.d/base
。