在 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: 2ethernets:eth0:addresses: [192.168.1.10/24]gateway4: 192.168.1.1nameservers:addresses: [8.8.8.8, 8.8.4.4] # 指定該網卡的DNSsearch: [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。