在 Ubuntu 中配置域名解析主要有两种方式:静态修改 /etc/hosts
文件 和 动态修改 DNS 解析服务器配置。以下是详细操作指南:
建议优选:二、永久方案:修改 DNS 解析服务(推荐)中的方法1
一、临时方案:修改 /etc/hosts
文件(适合本地测试)
-
打开 hosts 文件
sudo nano /etc/hosts
-
添加域名解析记录
格式:IP地址 域名 [别名]
示例:# 本地服务 127.0.0.1 myapp.local 192.168.1.100 nas.local # 屏蔽网站(指向空地址) 0.0.0.0 ads.example.com
-
保存并测试
按Ctrl+O
保存 →Ctrl+X
退出 → 验证:ping nas.local # 应返回 192.168.1.100
✅ 特点:立即生效,仅对当前设备有效。
二、永久方案:修改 DNS 解析服务(推荐)
▌ 方法 1:配置 systemd-resolved
(Ubuntu ≥18.04 默认方式)
-
修改主配置
编辑配置文件:sudo nano /etc/systemd/resolved.conf
取消注释并设置 DNS 服务器(多个用空格分隔):
[Resolve] DNS=8.8.8.8 1.1.1.1 # Google + Cloudflare DNS Domains=~example.com # 为特定域名指定搜索域
-
重启服务生效
sudo systemctl restart systemd-resolved
▌ 方法 2:修改 resolvconf
(老系统兼容)
-
修改配置
编辑/etc/resolvconf/resolv.conf.d/head
:sudo nano /etc/resolvconf/resolv.conf.d/head
添加自定义 DNS:
nameserver 223.5.5.5 # 阿里 DNS nameserver 114.114.114.114
-
更新配置
sudo resolvconf -u # 更新 cat /etc/resolv.conf # 检查是否生效
三、验证 DNS 解析结果
- 使用
dig
(推荐)dig example.com +short # 返回示例:93.184.216.34
- 使用
nslookup
nslookup ubuntu.com # 返回结果应包含正确的 IP 地址
- 检查连接性
curl -v https://your-domain.com # 看是否正常访问
四、高级场景:按网卡指定 DNS
编辑 Netplan 配置(如 /etc/netplan/*.yaml
):
network:
version: 2
ethernets:
eth0:
addresses: [192.168.1.10/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4] # 指定该网卡的DNS
search: [home] # 搜索域
应用配置:
sudo netplan apply
⚠️ 常见问题解决
-
修改 hosts 后不生效?
→ 检查是否输入错误 → 清空浏览器 DNS 缓存 → 重启服务sudo systemd-resolve --flush-caches
-
DNS 查询缓慢?
→ 通过dig
测试不同 DNS 响应速度 → 替换为更快的公共 DNS(如腾讯119.29.29.29
)。 -
解析优先级冲突
修改/etc/nsswitch.conf
中hosts
行顺序:hosts: files dns # 优先使用 hosts 文件,再走 DNS
📌 总结表:配置方式对比
方法 | 适用场景 | 生效范围 | 持久性 |
---|---|---|---|
/etc/hosts | 本地开发/域名拦截 | 单机生效 | 立即生效 |
resolvconf | Ubuntu ≤16.04 系统 | 全局生效 | 永久 |
systemd-resolved | Ubuntu ≥18.04 系统 | 全局/按网卡 | 永久 |
Netplan 配置 | 多网卡需不同 DNS 的服务器 | 按网卡指定 | 永久 |
💡 日常建议:优先使用
/etc/hosts
本地测试 + 修改systemd-resolved
配置全局 DNS。