网络管理员:如何停止nm更新/etc/resolv.conf


26

我不希望网络管理员将从DHCP接收到的DNS服务器添加到我的服务器中/etc/resolv.conf

从GUI / Connections / IPV4配置并选择方法“自动(仅地址)”时,它仍会添加通过DHCP接收的DNS服务器。

是否可以针对每个连接(特定的ssid?)进行操作?


如果选择方法“仅自动(DHCP)地址”,则在激活该连接时,NetworkManager不会或不应更改resolv.conf。如果实际上尽管设置了“仅地址”,但NetworkManager确实向resolv.conf添加了地址,则NetworkManager中存在错误,您应该使用启动板报告该错误。要阻止NetworkManager更改resolv.conf,您应该在系统上激活的所有连接配置中选择“仅自动(DHCP)地址”。
jdthood 2015年

1
您可以在连接的IPv4设置中使用GUI并在该模式下选择“仅地址”,或者通过在/ etc / NetworkManager / system-connections /中编辑相应的连接文件并添加ignore-auto来自己完成操作-dns = true到[ipv4]部分。
Sasha Pachev

Answers:


32

阻止Network Manager将dns服务器添加到/etc/resolv.conf文件的一种方法是:

首先打开nm conf文件/etc/NetworkManager/NetworkManager.conf

sudo vim /etc/NetworkManager/NetworkManager.conf

并将其添加到该[main]部分:

dns=none

保存并退出。


主要部分是[main],不是[Main]
AB

/etc/resolv.conf通常是一个符号链接-您确定将其设为不可变会使链接的目标也变为不可变吗?
muru

5
这在debian jessie中对我不起作用
Dimitri Kopriwa

5
这在Ubuntu 18.04上不起作用
LuizAngioletti

1
sudo service network-manager restart在更改.conf文件生效之前,我不得不这样做。
克里斯·摩尔

3

我个人最喜欢的是使用line supersede domain-name-serversin /etc/dhcp/dhclient.conf。无论dns接入点提供什么,您的ubuntu都将始终使用在中指定的dns。dhclient.conf

我档案中的样本

#send host-name "andare.fugue.com";
send host-name = gethostname();
#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
#send dhcp-lease-time 3600;
#supersede domain-name "fugue.com home.vix.com";
supersede domain-name-servers 208.67.220.220;
#prepend domain-name-servers 127.0.0.1;
request subnet-mask, broadcast-address, time-offset, routers,
    domain-name, domain-name-servers, domain-search, host-name,
    dhcp6.name-servers, dhcp6.domain-search,
    netbios-name-servers, netbios-scope, interface-mtu,
    rfc3442-classless-static-routes, ntp-servers,
    dhcp6.fqdn, dhcp6.sntp-servers;
#require subnet-mask, domain-name-servers;

按照说明(使用服务器8.8.8.8)创建行在Ubuntu 18.04上不起作用。
LuizAngioletti

3
@LuizAngioletti 18.04正在使用不同类型的网络管理器应用程序,称为netplan。此答案是针对18.04之前的版本编写的。我可能稍后再更新。
Sergiy Kolodyazhnyy

2

/etc/resolv.conf与连结/run/resolvconf/resolv.conf。NetworkManager不会直接更新/etc/resolv.conf(仅更新/run/resolvconf/resolv.conf)。所以:

  • 删除符号链接(rm /etc/resolv.conf
  • 写你自己的版本 /etc/resolv.conf

1
我知道这是一个Ubuntu论坛,但是在搜索centos时,这仍然是我的第一个Google搜索结果,因此为以后的centos Googlers发布评论。这并没有解决我在centos上的问题。似乎centos网络管理器直接在/etc/resolv.conf中工作。
汤米

对于Debian Stretch,这肯定不是真的。它会删除您的文件,并将其替换为另一个符号链接。很烦人。
HörmannHH

这是用于(虚拟化的)Fedora 25的一种nmcli:使用:/etc/sysconfig/network-scripts/ifcfg-ens3我们看到PEERDNS=yes这意味着(在这种情况下,错误的)DNS信息是通过DHCP获得的,最终以表示/etc/resolv.conf。我只想要127.0.0.1作为名称服务器。运行nmcli con mod ens3 ipf4.ignore-auto.dns yes结果在PEERDNS=no界面配置文件中。但是/etc/resolv.conf仍然有杂namseserver项,因此如果必须重新启动连接nmcli con down ens3; nmcli con up ens3。另请参阅:certdepot.net/rhel7-configure-ipv4-addresses
David Tonhofer

在Ubuntu 18.04上,重新启动“服务网络管理器重新启动”将导致NM覆盖/etc/resolv.conf,即使它是硬文件而不是符号链接。
LuizAngioletti

0

我对Debian Stretch做的事情:

  • rm /etc/resolv.conf ###(符号链接)
  • 触摸/etc/resolv.conf
  • 回声“名称服务器xxxx” >> /etc/resolv.conf

其中“ xxxx”是您首选的DNS服务器IP地址,例如来自OpenDNS,Google或Cloudflare的IP地址。

感谢您的想法Taha Jahangir!我可以确认您的建议对我的Debian Stretch发行版有效

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.