当前位置: 首页 > java >正文

networkmanager 和 resolv.conf 可能有覆盖需要配置DNS

在 Linux 系统中,NetworkManager/etc/resolv.conf 的 DNS 配置可能因优先级或自动覆盖导致冲突。以下是详细解决方案:


1. 确认当前 DNS 管理机制
首先检查 /etc/resolv.conf 是否为符号链接,确定由谁管理 DNS:

ls -l /etc/resolv.conf

• 输出示例:

lrwxrwxrwx 1 root root 39 Jan 1 00:00 /etc/resolv.conf -> ../run/NetworkManager/resolv.conf

若指向 NetworkManagersystemd-resolved,则 DNS 由这些服务动态管理。


2. 方法一:通过 NetworkManager 配置静态 DNS
2.1 使用 nmcli 修改连接配置

# 查看当前连接名称
nmcli con show# 为指定连接设置静态 DNS(例如使用 Google DNS)
nmcli con mod <连接名称> ipv4.dns "8.8.8.8 8.8.4.4"
nmcli con mod <连接名称> ipv4.ignore-auto-dns yes   # 禁用自动 DNS# 重启连接使配置生效
nmcli con down <连接名称> && nmcli con up <连接名称>

2.2 手动编辑 NetworkManager 配置文件
编辑连接的配置文件(位于 /etc/NetworkManager/system-connections/):

[ipv4]
dns=8.8.8.8;8.8.4.4;
ignore-auto-dns=true
method=auto

3. 方法二:禁用 NetworkManager 对 DNS 的覆盖
修改 /etc/NetworkManager/NetworkManager.conf,禁用 DNS 管理:

sudo nano /etc/NetworkManager/NetworkManager.conf

添加或修改以下配置:

[main]
dns=none

重启 NetworkManager:

sudo systemctl restart NetworkManager

之后手动编辑 /etc/resolv.conf 设置 DNS:

nameserver 8.8.8.8
nameserver 8.8.4.4

4. 方法三:使用 systemd-resolved(替代方案)
若系统使用 systemd-resolved,配置方法如下:

# 启用并启动服务
sudo systemctl enable systemd-resolved
sudo systemctl start systemd-resolved# 设置全局 DNS
sudo resolvectl dns <接口名> 8.8.8.8 8.8.4.4# 生成静态 resolv.conf(可选)
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

5. 验证 DNS 配置

# 检查当前 DNS 服务器
systemd-resolve --status | grep 'DNS Servers'cat /etc/resolv.conf# 测试 DNS 解析
nslookup example.com
dig example.com

总结

场景推荐方法注意事项
需要动态管理多网络环境通过 nmcli 配置每连接的 DNS避免手动修改 /etc/resolv.conf
需要完全手动控制 DNS禁用 NetworkManager 的 DNS 管理需自行处理网络切换时的 DNS 更新
使用 systemd 生态启用 systemd-resolved确保服务优先级高于 NetworkManager

通过上述方法,可避免 NetworkManager/etc/resolv.conf 的 DNS 配置冲突,确保系统稳定使用指定 DNS 服务器。

http://www.xdnf.cn/news/4744.html

相关文章:

  • OpenHarmony平台驱动开发(八),MIPI CSI
  • 旧版 Flutter 写的项目, 想要在新的环境上运行?
  • Kotlin 遍历
  • Spring普通配置类 vs 自动配置类-笔记
  • USRP B210 TX_IQ处理
  • Ceph PG unfound/lost 问题排查与解决
  • 记录Token反序列化OAuth2Authentication(主要是直接存储用户信息的UserDetails )
  • [matlab]private和+等特殊目录在新版本matlab中不允许添加搜索路径解决方法
  • 医院信息集成平台是什么?怎么促进医院信息化建设?
  • sui在windows虚拟化子系统Ubuntu和纯windows下的安装和使用
  • 皇冠CAD(CrownCAD)建模教程:小型风力发电机
  • [逆向工程]什么是HOOK(钩子)技术(二十一)
  • MySQL回表详解!
  • 视频添加字幕脚本分享
  • AI学习路径
  • GrassRoot备份项目
  • 剖析 FFmpeg:从基本功能到过滤器,实现音视频处理的灵活性
  • python编译exe执行时报错:OSError:[WinError6]句柄无效
  • http协议理解
  • LLM 论文精读(三)Demystifying Long Chain-of-Thought Reasoning in LLMs
  • Qt 编译 sqldrivers之psql
  • Linux中的防火墙
  • 【RAG】indexing 中的 Hierarchical Indexing(分层索引)
  • Matlab 四分之一车体被动和模糊控制对比
  • 文件包含 任意文件读取
  • B站搜索关键词全攻略:掌握B站搜索关键词的运作机制
  • 深度学习-160-Dify工具之从模板创建应用示例
  • 评论系统表结构设计--简单模型
  • 每日学习Java之一万个为什么(待完善)
  • [原创](现代Delphi 12指南):[macOS 64bit App开发]: 如何获取自身程序的所在的目录?