Ubuntu 18.04 DNS无法解析的详细解决方案
在使用Ubuntu 18.04的过程中,遇到DNS无法解析的问题会严重影响网络访问体验,本文将从多个角度分析可能的原因,并提供详细的解决步骤,以下是针对该问题的全面指南:
确认基础网络连接状态
在排查DNS问题前,需先验证系统的网络连通性是否正常,可通过以下命令测试与公共DNS服务器(如Google的8.8.8.8)的通信:
ping c 4 8.8.8.8
若收到回复包,则说明网络物理链路正常;若无响应,应优先检查路由器、防火墙或网线接口等硬件设备,此步骤可排除因断网导致的虚假“DNS故障”。
检查并修改/etc/resolv.conf文件
这是Linux系统中最直接的DNS客户端配置文件,其内容决定了本地使用的DNS服务器列表,操作流程如下:
- 备份原始文件(防止误操作):
sudo cp /etc/resolv.conf /etc/resolv.conf.bak
- 编辑文件:
sudo nano /etc/resolv.conf
- 添加主流公共DNS条目(推荐组合使用以提高可靠性):
nameserver 8.8.8.8 # Google Public DNS nameserver 114.114.114.114 # 中国电信DNS nameserver 223.5.5.5 # 阿里云DNS
- 保存退出后生效配置:部分环境下可能需要执行
sudo chattr +i /etc/resolv.conf
锁定文件避免自动覆盖。注意:某些情况下系统会自动生成新的resolv.conf覆盖手动修改的内容(见后续Netplan部分),此时需配合其他方法固定设置。
通过Netplan实现持久化配置
Ubuntu 18.04引入了基于YAML的网络管理工具Netplan,它负责控制网络接口和DNS服务,正确配置步骤如下:
- 定位配置文件路径:通常位于
/etc/netplan/
目录下,常见文件名为01networkmanagerall.yaml
或自定义名称。 - 修改示例模板:
network: version: 2 renderer: NetworkManager ethernets: enp0s3: # 根据实际网卡名调整(可用ip link查看) dhcp4: true nameservers: addresses: [8.8.8.8, 114.114.114.114, 223.5.5.5]
- 应用变更:运行
sudo netplan apply
使配置生效。 - 关键细节处理:为确保Netplan完全接管DNS解析,建议删除原有的符号链接并创建新的软连接:
sudo rm rf /etc/resolv.conf # 移除旧链接 sudo ln s /run/systemd/resolve/resolv.conf /etc/resolv.conf # 建立新关联
这一步解决了部分用户反馈的“Netplan设置不生效”问题。
同步系统时间与NTP服务校准
时间偏差超过阈值会导致TLS握手失败及DNS协议异常,具体操作包括:
- 安装校时工具:
sudo apt install ntpdate
- 立即同步时间:
sudo ntpdate pool.ntp.org
- 重启相关服务刷新状态:
sudo systemctl restart systemdresolved.service
该服务负责本地缓存解析记录,重启后将基于新的时间戳重新请求权威DNS服务器。
切换国内软件源镜像加速依赖项下载
部分地区的用户可能因国际带宽瓶颈导致包管理器工作异常间接影响DNS组件更新,推荐方案如下表所示:
| 操作步骤 | 命令示例 | 作用说明 |
||||
| 备份原清单 | sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
| 保留默认配置以便回滚 |
| 编辑源文件 | sudo nano /etc/apt/sources.list
| 替换为清华大学开源镜像站地址 |
| 典型镜像节点 | deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
| 适配Ubuntu 18.04代号Bionic Beaver |
| 更新缓存 | sudo apt update && sudo apt upgrade
| 确保获取最新网络库补丁 |
诊断工具验证修复效果
完成上述调整后,可通过以下命令进行功能测试:
| 工具名称 | 用法示例 | 预期结果 |
||||
| ping | ping c 4 google.com
| 成功接收ICMP回应包 |
| nslookup | nslookup www.baidu.com
| 显示对应IP地址及递归查询路径 |
| dig | dig @8.8.8.8 example.com
| 输出详细的权威解答记录 |
若所有测试均正常返回IP信息,则表明DNS解析已恢复;若仍有错误提示,建议检查防火墙规则是否拦截了UDP/TCP端口53的流量。
相关问题与解答
Q1: 为什么修改了/etc/resolv.conf后依然无效?
A: 这通常是因为Netplan在启动时自动生成了新的resolv.conf覆盖了手动更改的内容,解决方法是按照第三部分第四步的操作,删除原有符号链接并建立指向/run/systemd/resolve/resolv.conf
的新链接,确保Netplan的配置优先生效,还需检查YAML文件中是否正确设置了nameservers
字段。
Q2: 如何彻底清除过时的DNS缓存?
A: Ubuntu使用systemdresolved
服务管理本地缓存,除了常规的重启操作外,还可以通过以下命令强制刷新所有条目:
sudo systemctl stop systemdresolved sudo systemctl start systemdresolved
或者直接执行:
sudo systemctl restart systemdresolved.service
对于顽固的缓存问题,可以尝试清空缓存目录:
sudo rm /var/cache/systemdresolved/*
但需注意此操作可能导致短暂的解析延迟,因为系统需要重新积累热点域名