resolv.conf不断被重置


29

我需要帮助以弄清楚为什么我resolv.conf会不断对此进行更改,导致我无法访问外部Internet,而只能访问本地网络:

$ cat /etc/resolv.conf
nameserver 192.168.16.1
domain localdomain
search localdomain

我以为我通过摆脱回送接口并/etc/network/interfacesjontsai的后继博客中添加了eth0接口来解决此问题。

我已经尝试过类似的事情:

$ sudo ifconfig eth0 down
$ sudo ifconfig eth0 up
$ sudo /etc/init.d/networking restart
$ sudo dhclient

然后事情会暂时起作用,最终resolv.conf中的名称服务器将再次恢复。

PS我也将此发布在ubuntuforums上


编辑:除了NetworkManager之外,还有至少一个其他程序正在写入resolv.conf,我知道这一点,因为当我刷新NetworkManager时,resolv.conf生成的文件带有注释,说# Generated by NetworkManager,而它一直更改为的版本没有。

所以我正在尝试:

while true; do echo listening; lsof | grep /etc/resolv.conf; echo sleeping; sleep 1; done


编辑2:

添加文件输出:

$ cat /etc/network/interfaces 
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

没有这样的文件 /etc/NetworkManager/NetworkManager.conf

$ sudo cat /etc/NetworkManager/system-connections/Auto\ Ethernet 

[connection]
id=Auto Ethernet
uuid=#######omitted#######
type=802-3-ethernet
autoconnect=true
timestamp=1314377063

[ipv4]
method=auto
ignore-auto-routes=false
ignore-auto-dns=false
dhcp-send-hostname=false
never-default=false

[802-3-ethernet]
speed=0
duplex=full
auto-negotiate=true
mtu=0

[ipv6]
method=ignore
ignore-auto-routes=false
ignore-auto-dns=false
never-default=false

我怀疑是网络管理器错误,或更可能是配置错误。您正在运行哪个版本的Ubuntu?您安装了resolvconf软件包吗?帖子的内容/etc/network/interfaces/etc/NetworkManager/NetworkManager.conf/etc/NetworkManager/system-connections/*
吉尔(Gilles)“所以,别再邪恶了”,

我正在运行10.04,没有resolvconf程序包。在某个时候,我的DSL调制解调器(在路由器后面)变坏了,而我的本地网络还不错,所以我可能已经尝试安装nscd或- dnsmasq他们现在已经被卸载了,但是可能留下了一些干扰因素?
jontsai 2011年

好的,我只是三周内第一次重新启动计算机,所以我认为问题已经解决了。o_O
jontsai 2011年

不能确定,但​​是我认为DHCP服务器在vmnet1vmnet8(NAT和仅主机)上存在一些问题
jontsai 2011年

1
自从Ubuntu 12.04在基础系统中引入resolvconf,从根本上改变了resolv.conf的处理方式以来,整个讨论的相关性降低了。
jdthood 2012年

Answers:


13

您可以为添加静态内容/etc/resolv.conf。这些添加可能会覆盖自动添加的内容。

首先,安装resolvconf软件包。

然后,按Alt + F2并运行gksudo nautilus/etc/resolvconf/resolv.conf.d/head如果要添加到文件的开头,请打开;否则,请打开。/etc/resolvconf/resolv.conf.d/tail如果要添加到最后,请打开。进行更改,保存/关闭文件,然后运行sudo resolvconf -u以应用更改。

(很抱歉,我不记得文件开头或结尾的设置具有最高优先级。)


我的网络管理员更改将在连接到任何VPN时恢复。这样,无论我连接到哪个网络,我都可以将8.8.8.8保留在解析器列表中。
史蒂文·P

8

我遇到了完全相同的问题-每次重新启动服务器时都会重写resolv.conf。

它是由DHCP引起的。要将resolv.conf设置为我想要的样子,我编辑/etc/dhcp/dhclient.conf并添加了以下内容:

supersede domain-name "my.domain.com";
prepend domain-search "my.domain.com";

通过对此进行更改,您实际上可以控制您的resolv.conf文件。

希望能帮助到你。


2
这将是最干净的解决方案,但是由于某种原因,几年前它停止在我的系统上运行。从那以后,我一直被禁止禁用resolvconf脚本或chattr + i /etc/resolv.conf。
Tronic

7

(此答案包含调查正在发生的情况的方法。如果您使用这些方法来收集并提供更多信息,我也许可以给出实际的解决方案。)

似乎是自发更新的可能触发因素/etc/resolv.conf是续订DHCP租约时。检查获得DHCP租约的时间(我认为应该显示在系统日志中/var/log/syslog)。

您可以使用auditd 安装审核找出修改文件的内容。启动守护程序(sudo service auditd start),并告诉它监视对该文件的修改:

sudo auditctl -w /etc/resolv.conf -p w

审核日志在中/var/log/audit/audit.log。您将看到文件修改的时间以及修改它的程序的名称。

如果您已resolvconf安装该程序包,则网络管理器可能正在踩它的脚趾。尝试关闭所有网络接口,然后停止网络管理器(sudo service network-manager stop),然后重新启动它。


1
我相信您对DHCP版本是正确的。您可以按照以下步骤在网络管理器中更改DHCP设置:nm-connection-editor在终端中运行。选择您的界面,然后点击“编辑”。在IPv4设置下,应该有一种仅称为DHCP地址(或类似地址)的方法。如果我没记错的话,这将允许您通过DHCP获取IP地址,但不能通过名称服务器(可以在下面的字段中指定它们)。
ChristianSkjødt2011年

我将路由器设置为将MAC地址映射到静态IP,因此DNS租用时间很长。该auditctl行对我而言不起作用,我认为Network Manager的服务名称为network-manager(包括连字符)。我没有resolvconf安装软件包,但是/etc/resolvconf/文件夹中有东西,当我将其与另一台Ubuntu计算机进行比较时,它没有它,因此我安装并卸载了该软件包,并手动删除了该文件夹。/etc/resolv.conf只是再次被重写,所以我认为auditctl开始工作将非常有帮助。
jontsai 2011年

@jontsai /etc/resolvconf即使您没有resolvconf软件包,存在的现象也是正常的,有些软件包在其中放置了挂钩,这些挂钩仅在resolvconf安装时使用。我已经解决了auditctl这个问题,以防问题再次出现。
吉尔(Gilles)'所以

我喜欢用户审核的想法,以找出正在编辑文件的内容,但看起来在文件已被修改后就可以开始使用。
彼得·桑考斯卡斯

4

打开一个终端并输入

sudo chattr +i /etc/resolv.conf

+ i会确保即使在root用户引导时也不会重置该文件。

撤消上述

sudo chattr -i /etc/resolv.conf

欲了解更多

man chattr

这对我没有用。重新启动网络管理器仍会用DHCP名称服务器覆盖/etc/resolv.conf。
汤米

在GCP内运行的Debian 9 VM上为我工作。好极了!谢谢!
the0ther


3

我禁用的更新resolv.conf通过创建一个名为disable_make_resolv_conf/etc/dhcp3/dhclient-enter-hooks.d

#!/bin/sh
make_resolv_conf(){
}

它用负责resolv.conf刷新的名称替换了标准功能。


1

迟到了,但是我将发布我的案例,因为它与上述所有案例都不相同。

就我而言,/etc/resolv.conf是的符号链接/var/run/NetworkManager/resolv.conf,由于某种原因cat /etc/resolv.conf使我没有出现这样的文件或目录错误(也许是因为它是空的?)

如果我使用vi打开它并添加nameserver x.x.x.x它,则可以正常工作,但在重新启动后会清除。

我试图在下面进行编辑/etc/network/interfaces和添加dns-nameservers x.x.x.x,更改/etc/dhcp/dhclient.conf和删除request domain-name-servers,也进行了编辑prepend domain-name-servers x.x.x.x

未安装Resolvconf二进制文件,NetworkManager.conf没有任何相关内容。但是每次我重新启动计算机时,都没有域服务器。

我不确定这是什么原因,但是这似乎与以下事实有关:这是一台由GNS3启动的VBox机器,并且由于VBox设置内部的原因,我必须保留它而未创建任何接口。显然,只要我从GNS3启动,GNS3就会在启动机器时即时创建一个“ UDP接口”。

因此,为了使我免于无休止的搜索,我只添加echo nameserver x.x.x.x> /etc/resolv.conf/etc/profile问题已解决(未解决,但可以解决)。但是,如果有人遇到这种情况,了解该情​​况会发生什么可能会很有趣。


1

如果有文件 /etc/NetworkManager/NetworkManager.conf

cat /etc/NetworkManager/NetworkManager.conf

您可以配置NetworkManager以停止使用以下命令重置resolv.conf:

sudo sh -c 'echo "
[main]
dns=none
" >> /etc/NetworkManager/NetworkManager.conf'
cat /etc/NetworkManager/NetworkManager.conf

现在,手动更改您的/etc/resolv.conf并测试其持久性

sudo systemctl restart NetworkManager
# sudo service network-manager restart
cat /etc/resolv.conf

资料来源:https : //askubuntu.com/a/623956/452398


谢谢,添加dns = none可以正确解决此问题。
轮胎

0

像这样在ifcfg-ethX文件中输入内容

DNS1 = 192.168.XX

DNS2 = 192.168.XX

DOMAIN = yourdomain.com

然后,网络管理员将在重新启动服务或重新启动框后将这些记录添加到resolv.conf文件中。


0

以防万一有人陷入同样的​​情况:

我忘了我在文件内的接口上设置了dhcp /etc/network/interfaces

Networkmanager将从/etc/resolv.conf收到的DHCP答复中进行修改。

hth


0

当有# Generated by NetworkManager/etc/resolv.conf

编辑网络管理器配置:

sudo vim /etc/NetworkManager/NetworkManager.conf

[main]部分中添加rc-manager=unmanaged

[main]                                                                                                                                   
rc-manager=unmanaged

为什么?

rc-manager-设置resolv.conf管理模式。默认值取决于NetworkManager构建选项,并且此版本的NetworkManager是使用默认的“ symlink”构建的。

(...)

unmanaged:不要碰/etc/resolv.conf

有关更多信息的配置参考:https : //developer.gnome.org/NetworkManager/stable/NetworkManager.conf.html

然后编辑您的内容/etc/resolv.conf并重新启动网络管理器以查看是否/etc/resolv.conf保持不变:

sudo systemctl restart NetworkManager

要么

sudo service network-manager restart

比:

cat /etc/resolv.conf

如果过程失败并/etc/resolv.conf在网络管理器重新启动期间被覆盖,请尝试添加dns=none[main]配置中的部分,如https://askubuntu.com/a/1150326/364772所述

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.