应根据系统网络管理方式选择修改DNS的方法。首先检查/etc/resolv.conf是否由NetworkManager或systemd-resolved管理,若使用NetworkManager,则通过nmcli命令修改指定连接的DNS并重新激活;若使用systemd-resolved,可通过resolvectl设置临时DNS或配置.network文件实现永久生效;仅在确认无动态管理时才可手动编辑/etc/resolv.conf,并建议设为不可变防止覆盖。直接编辑风险高,不推荐用于生产环境。

在Linux系统中,/etc/resolv.conf 文件用于配置DNS解析器,指定DNS服务器地址。虽然可以直接编辑该文件,但由于现代系统通常由网络管理服务(如NetworkManager或systemd-resolved)动态管理,直接修改可能被覆盖。以下是几种安全有效的修改方式。
先查看当前 /etc/resolv.conf 内容:
cat /etc/resolv.conf
确认文件是否由其他服务管理。如果看到类似 # Managed by NetworkManager 或指向 systemd-resolved 的提示,说明不应直接编辑。

如果系统使用NetworkManager(大多数桌面和服务器发行版默认启用),推荐通过其配置:
nmcli con show
列出所有连接,找到当前使用的连接名(如 "Wired connection 1" 或 "System eth0")。
设置DNS服务器(例如使用阿里云DNS):
nmcli con mod "Wired connection 1" ipv4.dns "223.5.5.5 223.6.6.6" nmcli con up "Wired connection 1"
这会更新配置并重新激活连接,/etc/resolv.conf 将自动更新。

若系统使用 systemd-resolved,应通过 resolvectl 或修改其配置:
查看当前状态:
resolvectl status
临时设置DNS(重启后失效):
resolvectl dns eth0 223.5.5.5
永久设置需修改 /etc/systemd/network/*.network 文件或通过NetworkManager。

如果确认系统不使用动态管理(如某些最小化安装或容器环境),可直接编辑:
sudo nano /etc/resolv.conf
添加内容:
nameserver 8.8.8.8 nameserver 8.8.4.4 search localdomain
保存后测试解析:
ping google.com
为防止被覆盖,可设置文件为不可变:
sudo chattr +i /etc/resolv.conf
需要修改时再取消:
sudo chattr -i /etc/resolv.conf
基本上就这些。关键是先判断系统使用哪种网络管理方式,再选择对应方法。直接编辑文件虽简单,但容易被覆盖,不推荐在生产环境中使用。
以上就是Linux如何修改resolv.conf配置文件的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号