You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

在RHEL中如何通过systemd NetworkManager设置全局默认DNS服务器(而非按单个连接配置)

在RHEL中如何通过systemd NetworkManager设置全局默认DNS服务器(而非按单个连接配置)

我完全懂你的困扰——现在RHEL里默认是由systemd NetworkManager动态生成和管理/etc/resolv.conf的,用nmcli只能给单个连接配置DNS,要给整台主机、所有连接设全局DNS确实得换个思路,不能再用老办法了。

下面是具体的解决步骤,亲测有效:

  • 不要直接手动修改/etc/resolv.conf:毕竟NetworkManager会定期覆盖这个文件,改了也是白改,白费功夫。
  • 创建/修改NetworkManager的全局DNS配置文件
    新建或者编辑/etc/NetworkManager/conf.d/dns.conf文件(如果conf.d目录下没有这个文件就自己建一个),在里面添加以下内容:
    [main]
    dns=default
    dns-servers=8.8.8.8,8.8.4.4
    
    解释一下:dns=default是让NetworkManager负责DNS配置的处理;dns-servers后面填你想要的全局DNS服务器地址,多个地址用逗号分隔就行,比如上面的Google公共DNS,你也可以换成自己需要的。
  • 重启NetworkManager服务让配置生效
    执行下面的命令:
    sudo systemctl restart NetworkManager
    
  • 验证配置是否生效
    查看/etc/resolv.conf文件,你会发现里面已经包含了你设置的全局DNS服务器,而且不管后续添加哪个新连接,这些全局DNS都会被优先使用。

关于你提到的systemd-resolved的问题,你的担心是对的:如果同时让NetworkManager和systemd-resolved两个服务都去管理/etc/resolv.conf,大概率会出现配置冲突、文件被反复覆盖的问题。现在RHEL默认就是用NetworkManager来接管DNS配置的,所以systemd-resolved处于禁用状态,不要随便去创建/etc/resolv.conf/run/systemd/resolve/resolv.conf的软链接,除非你打算完全切换到systemd-resolved来管理DNS(那得先在NetworkManager配置里禁用它的DNS管理功能,不然肯定出问题)。

另外补充一句:如果个别连接需要使用专属的DNS服务器(覆盖全局配置),你还是可以用nmcli connection modify <连接名> ipv4.dns <DNS地址>来单独配置,NetworkManager会自动处理全局和单个连接的DNS优先级。

备注:内容来源于stack exchange,提问作者Nick Kiermaier

火山引擎 最新活动