常見原因:DNS服務器配置錯誤(如/etc/resolv.conf中nameserver無效)、網絡連接中斷(無法訪問DNS服務器)、/etc/hosts文件配置錯誤(手動解析記錄有誤)、DNS緩存包含過期或錯誤結果。
解決方法:
cat /etc/resolv.conf確認nameserver是否為有效地址(如8.8.8.8、114.114.114.114);若使用systemd-resolved,編輯/etc/systemd/resolved.conf添加DNS=8.8.8.8,然后重啟服務:sudo systemctl restart systemd-resolved。ping 8.8.8.8,若不通則檢查網絡接口(ip a)、路由(ip route)或防火墻設置。/etc/hosts文件:確保無錯誤的域名映射(如127.0.0.1 example.com會覆蓋DNS解析)。sudo systemd-resolve --flush-caches(或sudo resolvectl flush-caches)。常見原因:DNS服務器響應慢(如公共DNS擁堵)、DNS緩存未更新(舊記錄導致重復查詢)、解析順序不合理(優先查詢慢速DNS)。
解決方法:
/etc/resolv.conf(臨時)或/etc/systemd/resolved.conf(永久),添加國內公共DNS(如114.114.114.114、223.5.5.5),并設置options timeout:1 attempts:2(縮短超時時間)。sudo systemd-resolve --flush-caches,避免舊記錄影響解析速度。/etc/nsswitch.conf中的hosts行,確保為hosts: files dns(優先查詢本地/etc/hosts文件,再查詢DNS)。常見原因:未正確應用netplan配置(Ubuntu 20.04+默認使用netplan)、/etc/resolv.conf被systemd-resolved覆蓋、NetworkManager未同步配置。
解決方法:
/etc/netplan/*.yaml(如00-installer-config.yaml),在對應網卡下添加nameservers: {addresses: ["8.8.8.8", "114.114.114.114"]},然后執行sudo netplan apply。nmcli connection show查看連接名稱,執行nmcli connection up <連接名稱>重新激活連接。systemctl status systemd-resolved,確保服務運行正常;若未運行,執行sudo systemctl enable --now systemd-resolved。常見原因:本地DNS緩存未及時更新(如修改DNS記錄后仍返回舊IP)、緩存服務異常(如systemd-resolved緩存損壞)。
解決方法:
sudo systemd-resolve --flush-caches(Ubuntu 22.04+)或sudo service systemd-resolved restart(舊版本)。nslookup或dig命令重新查詢域名(如nslookup example.com),驗證是否返回最新結果。/etc/systemd/resolved.conf,添加Cache=no,然后重啟服務。常見原因:內網DNS服務器響應慢、DNS查詢循環(如內網DNS轉發到公網DNS導致延遲)、網絡路徑丟包(如DNS服務器與客戶端之間網絡不穩定)。
解決方法:
/etc/hosts文件,添加<內網IP> <域名>(如10.14.1.30 nx-cpu030.deepscience.cn),優先使用本地解析。/etc/resolv.conf,將內網DNS放在首位(如nameserver 10.14.1.1),備用公網DNS(如223.5.5.5)。mtr -n <DNS服務器IP>跟蹤路徑,檢查是否有丟包(如Loss%列不為0),若有丟包需聯系網絡管理員修復。常見原因:Ubuntu防火墻(ufw/iptables)默認禁止UDP 53端口(DNS查詢端口),導致DNS請求無法發送到服務器。
解決方法:
sudo ufw status,若顯示active,則允許DNS端口:sudo ufw allow 53/udp。sudo iptables -L -v -n | grep 53,若存在DROP規則,添加允許規則:sudo iptables -A INPUT -p udp --dport 53 -j ACCEPT(需持久化規則,如使用iptables-save)。