Linux下为network-manager设置全局public DNS

Arch Linux下为NM全局设置使用阿里等Public DNS

作者: Duter2016 | 2024-05-13 | 阅读
「编辑」 「本文源码」

网络上一些设置linux系统全局DNS的教程,很多都涉及到修改文件/etc/resolv.conf,但是如果设置完后,断开wifi,重新连接wifi,/etc/resolv.conf中DNS又会被network-manager等网络管理软件重新覆写为运营商默认的DNS。

网络管理器们会有意覆盖 /etc/resolv.conf,具体细节请参见相应文章章节:

如果要使连接的每个wifi不用单独设置DNS,为Network-manager等网络管理软件设置全局DNS,通过命令man 5 NetworkManager.conf查看文档,我们可以发现有两个方法:

【方法一】

其中一个方法是:通过修改/etc/NetworkManager/NetworkManager.conf阻止Network Manager将dns-servers添加到/etc/resolv.conf文件。

首先,打开Network Manager配置文件/etc/NetworkManager/NetworkManager.conf

sudo vim /etc/NetworkManager/NetworkManager.conf

并将如下代码添加到 [main] 部分:

[main]
dns=none
rc-manager=unmanaged

保存并退出。然后,运行如下命令,使配置生效:

sudo systemctl restart NetworkManager

然后,在/etc/resolv.conf中粘贴上你要使用的Public DNS(这里以使用阿里云的public DNS为例):

# Generated by NetworkManager
nameserver 223.6.6.6
nameserver 223.5.5.5
nameserver 2400:3200::1
# NOTE: the libc resolver may not support more than 3 nameservers.
# The nameservers listed below may not be recognized.
nameserver 2400:3200:baba::1

【方法二】

另一个方法就是:要防止程序覆盖 /etc/resolv.conf,还可以通过锁定文件设置不可变文件属性来为其建立写保护(write-protect):

sudo chattr +i /etc/resolv.conf

如果想解锁文件,恢复写入,使用:

sudo chattr -i /etc/resolv.conf

提示: 如果想要多个进程写入 /etc/resolv.conf,可以使用 resolvconf

然后,在/etc/resolv.conf中粘贴上你要使用的Public DNS(这里以使用阿里云的public DNS为例):

# Generated by NetworkManager
nameserver 223.6.6.6
nameserver 223.5.5.5
nameserver 2400:3200::1
# NOTE: the libc resolver may not support more than 3 nameservers.
# The nameservers listed below may not be recognized.
nameserver 2400:3200:baba::1

参考:


版权声明:本文由 Duter2016 在 2024年05月13日发表。本文采用CC BY-NC-SA 4.0许可协议,非商业转载请注明出处,不得用于商业目的。
文章题目及链接:《Linux下为network-manager设置全局public DNS》




  相关文章:

「游客及非Github用户留言」:

「Github登录用户留言」:

TOP