服務器能 Ping 通網關、外網 IP,卻無法解析域名,經典「unknown host」故障。本文建立標準化排查決策樹,從配置文件到協議層逐層定位。
[root@localhost ~]# ping www.pythontab.com
ping: unknown host www.pythontab.com
[root@localhost ~]# ping 192.168.1.1 # 網關通
PING 192.168.1.1 ... 64 bytes from ... icmp_seq=1 ttl=64 time=2.96 ms
# 檢查當前配置
cat /etc/resolv.conf
# 典型錯誤:僅有 search localdomain,無 nameserver
# 修復:添加可用 DNS (推薦內網 DNS + 公共 DNS 備用)
vi /etc/resolv.conf
search localdomain
nameserver 192.168.1.2 # 內網 DNS (首選)
nameserver 223.5.5.5 # 阿里云公共 DNS
nameserver 114.114.114.114 # 114 DNS
驗證: dig @192.168.1.2 www.pythontab.com 或 nslookup www.pythontab.com 192.168.1.2。
# 檢查默認網關
grep GATEWAY /etc/sysconfig/network-scripts/ifcfg-*
# 輸出:/etc/sysconfig/network-scripts/ifcfg-eth0:GATEWAY=192.168.1.1
# 臨時添加 (重啟失效)
route add default gw 192.168.1.1
# 永久生效
vi /etc/sysconfig/network-scripts/ifcfg-eth0
# 確保包含
GATEWAY=192.168.1.1
# 重啟網絡
systemctl restart network # 或 service network restart
# 檢查 hosts 行
grep hosts /etc/nsswitch.conf
# 正確:hosts: files dns
# 錯誤:hosts: files (缺少 dns,將不查詢 DNS 服務器)
# 修復
sed -i 's/^hosts:.*/hosts: files dns/' /etc/nsswitch.conf
# 1. 解析測試
dig www.pythontab.com +short
nslookup www.pythontab.com
getent hosts www.pythontab.com # 走 nsswitch 流程
# 2. 連通性測試
ping -c 3 www.pythontab.com
curl -I https://www.pythontab.com # 應用層驗證
# 3. 追蹤解析路徑
dig +trace www.pythontab.com # 從根域遞歸追蹤
| 場景 | 現象 | 根因 | 對策 |
|---|---|---|---|
| DHCP 覆蓋 resolv.conf | 重啟 network 後 DNS 丟失 | /etc/sysconfig/network-scripts/ifcfg-eth0 中 PEERDNS=yes | 設 PEERDNS=no 或在 /etc/dhcp/dhclient.conf 中 supersede domain-name-servers 192.168.1.2; |
| systemd-resolved 托管 | /etc/resolv.conf 是指向 /run/systemd/resolve/stub-resolv.conf 的鏈接 | systemd-resolved 服務接管 DNS | 配置 /etc/systemd/resolved.conf [Resolve] DNS=...;或 systemctl disable systemd-resolved 回歸傳統 |
| IPv6 優先導致解析慢/失敗 | dig 返回 AAAA 但無 IPv6 路由 | glibc 默認並行查 A/AAAA | /etc/gai.conf 取消註釋 precedence ::ffff:0:0/96 100 強制 IPv4 優先 |
| 容器 / Kubernetes Pod | Pod 內解析失敗 | CoreDNS 故障 / /etc/resolv.conf ndots:5 導致過度查詢 | 檢查 CoreDNS 日誌;調整 dnsConfig options ndots:1 |
dig @ +time=2 +tries=1 成功率 > 99.9%域名解析是服務發現的基石,將 DNS 健康度納入基礎設施 SLA 監控,而非事後排查。