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

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

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

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

是否可以根据每个连接 (特定 ssid ) 执行此操作?

答案1

阻止网络管理器将 dns 服务器添加到/etc/resolv.conf文件的一种方法是执行以下操作:

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

sudo vim /etc/NetworkManager/NetworkManager.conf

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

dns=none
rc-manager=unmanaged

保存并退出。

答案2

/etc/resolv.conf符号链接到/run/resolvconf/resolv.conf。 NetworkManager 不直接更新 /etc/resolv.conf (仅更新 /run/resolvconf/resolv.conf)。 因此:

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

答案3

我个人最喜欢的是使用 line supersede domain-name-serversin /etc/dhcp/dhclient.conf。无论 dns 接入点提供什么,您的 ubuntu 都会始终使用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;

答案4

为了以防万一,我已经编写了一个小脚本来为每个以太网/无线连接自动执行此操作(这里使用谷歌 DNS):

nmcli -g name,type connection  show  --active | awk -F: '/ethernet|wireless/ { print $1 }' | while read connection
do
  nmcli con mod "$connection" ipv6.ignore-auto-dns yes
  nmcli con mod "$connection" ipv4.ignore-auto-dns yes
  nmcli con mod "$connection" ipv4.dns "8.8.8.8 8.8.4.4"
  nmcli con down "$connection" && nmcli con up "$connection"
done

相关内容