网络上一些设置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》