在Ubuntu系统中,域名解析(DNS解析)是通过配置DNS服务器实现的,其核心涉及/etc/resolv.conf文件、systemd-resolved服务,以及网络管理工具(如Netplan或NetworkManager)。以下将系统化阐述相关配置与操作。

Ubuntu的域名解析依赖以下组件:
1. /etc/resolv.conf:传统配置文件,通常为符号链接,指向实际管理源(如/run/systemd/resolve/stub-resolv.conf)。
2. systemd-resolved:Ubuntu 17.10及以上版本的默认解析服务,提供动态DNS配置与缓存。
3. Netplan/NetworkManager:网络配置工具,负责生成底层DNS配置并同步至systemd-resolved。
| 配置文件/工具 | 路径/命令 | 作用 |
|---|---|---|
resolv.conf(默认符号链接) |
/etc/resolv.conf | 存储当前生效的DNS服务器地址(可能被系统服务覆盖) |
Netplan配置 |
/etc/netplan/*.yaml | 定义网络接口与DNS服务器(Ubuntu 18.04+默认) |
NetworkManager配置 |
nmcli / GUI工具 | 动态管理DNS服务器(适用于桌面版) |
systemd-resolved状态 |
systemd-resolve --status | 查看当前DNS解析状态与缓存 |
方法1:通过Netplan(服务器版推荐)
编辑Netplan配置文件(如/etc/netplan/01-netcfg.yaml):
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
addresses: [192.168.1.10/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
执行sudo netplan apply使配置生效。
方法2:通过NetworkManager(桌面版推荐)
sudo nmcli con mod "Wired Connection" ipv4.dns "8.8.8.8 1.1.1.1" sudo nmcli con up "Wired Connection"
1. 基础检查命令:
| 命令 | 功能说明 |
|---|---|
nslookup example.com |
直接测试域名解析 |
dig @8.8.8.8 example.com |
指定DNS服务器进行查询 |
systemd-resolve --status |
查看当前DNS配置与缓存 |
ping -c3 google.com |
测试网络连通性+解析 |
2. 常见问题处理:
• resolv.conf被重置:禁用自动生成(修改/etc/resolv.conf为静态文件):
sudo rm /etc/resolv.conf && sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
• 清除DNS缓存:sudo systemd-resolve --flush-caches
通过systemd-resolved启用加密DNS(Ubuntu 20.04+):
# 编辑配置文件 sudo nano /etc/systemd/resolved.conf # 添加以下内容 [Resolve] DNS=9.9.9.9 DNSOverTLS=yes
重启服务:sudo systemctl restart systemd-resolved
总结:Ubuntu域名解析的稳定性依赖配置文件合理性、服务的正确管理以及网络环境合规性。建议优先通过Netplan或NetworkManager配置DNS,避免直接修改/etc/resolv.conf引发冲突。

查看详情

查看详情