答案:Linux中DNS配置主要通过编辑/etc/resolv.conf实现,包含nameserver、search和options三项内容,使用nano或vim修改后需防止被NetworkManager或systemd-resolved覆盖,可通过对应工具或锁定文件解决,验证可用nslookup、dig、ping命令,长期配置应使用系统推荐方式如Netplan、ifcfg文件等以确保重启生效。

在Linux系统中,DNS配置主要通过编辑 /etc/resolv.conf 文件来实现。这个文件定义了系统用于解析域名的DNS服务器地址和其他相关选项。虽然现代Linux发行版可能使用NetworkManager或systemd-resolved动态管理该文件,但了解如何手动编辑它仍然非常有用。
1. 编辑 resolv.conf 配置DNS
你可以使用任意文本编辑器(如 nano 或 vim)打开并修改该文件:
sudo nano /etc/resolv.conf
在文件中添加或修改以下内容:
- nameserver:指定DNS服务器IP地址,最多可配置3个
- search:设置默认搜索域,便于简化主机名查询
- options:配置解析器行为,如超时、重试次数等
示例配置:
nameserver 8.8.8.8
nameserver 8.8.4.4
search example.com local.home
options timeout:2 attempts:3 rotate
保存并退出编辑器。
2. 防止配置被覆盖
如果你发现修改后配置自动恢复,可能是被NetworkManager、DHCP客户端或systemd-resolved覆盖了。以下是几种应对方法:
- 对于使用 NetworkManager 的系统,建议通过其配置工具设置DNS,例如在 nm-connection-editor 中为连接设置“自动(DHCP)仅限地址”并手动指定DNS
- 对于使用 systemd-resolved 的系统,应编辑 /etc/systemd/resolved.conf,然后重启服务
- 可临时锁定 resolv.conf 防止修改:
sudo chattr +i /etc/resolv.conf(取消锁定用 chattr -i)
3. 验证DNS配置是否生效
修改完成后,使用以下命令测试DNS解析是否正常:
- nslookup google.com:查看域名是否能解析出IP
- dig google.com:获取详细的DNS查询结果
- ping google.com:测试网络连通性和域名解析
如果无法解析,检查DNS服务器是否可达,或尝试更换为公共DNS如 8.8.8.8、1.1.1.1。
4. 永久配置建议(根据发行版)
不同系统推荐的配置方式略有不同:
- Ubuntu(使用Netplan):修改 /etc/netplan/*.yaml 文件,在network配置中指定dns-nameservers
- CentOS/RHEL:编辑 /etc/sysconfig/network-scripts/ifcfg-ethX,添加 DNS1=8.8.8.8 等
- Debian(使用/etc/network/interfaces):在iface配置中加入 dns-nameservers 8.8.8.8
这些方式能确保DNS设置在重启后依然有效,避免直接编辑 resolv.conf 被覆盖。
基本上就这些。直接改 resolv.conf 适合临时调试,长期使用应结合系统网络管理工具配置,才能稳定生效。










