跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

Ubuntu 22.04 无法连接外网故障排查:DNS 配置问题解决方案

对 Ubuntu 22.04 服务器无法访问外网但能 Ping 通 IP 的问题进行排查。现象显示域名解析失败,确认为 DNS 配置错误。通过检查 systemd-resolved 状态和 Netplan 配置文件,发现 nameservers 字段为空导致解析请求丢失。解决方案是修正 Netplan YAML 配置,添加正确的内网及公网 DNS 地址,并重新应用配置。同时验证了 resolv.conf 软链接及 systemd-resolved 服务状态。最终通过 dig 命令确认 DNS 解析恢复正常,解决了网络连接问题。

机器人发布于 2026/3/24更新于 2026/9/1183 浏览
Ubuntu 22.04 无法连接外网故障排查:DNS 配置问题解决方案

Ubuntu 22.04 无法连接外部网络的故障排查与解决

我在一次例行巡检中遇到了这样一个棘手的问题:一台 Ubuntu 22.04 服务器无法访问外部网络,但本地网络与内网服务正常,ping 外网 IP OK,却无法解析域名。通过本篇文章,我将结合真实现场数据、命令示例、配置细节以及评测表格,分享'DNS 配置导致无法访问外网'的完整排查思路和解决方案。


一、问题现象描述

在数据中心机房内,我们监控到一台 Ubuntu 22.04 服务器网络异常:

  • ping 8.8.8.8 成功,丢包率 <1%
  • ping www.google.com 失败,提示 Temporary failure in name resolution
  • curl http://example.com 报 DNS 解析错误
  • 内网 DNS 服务器(如 10.0.0.53)可达

初步判断是 DNS 解析问题。


二、现场环境与硬件配置

项目配置/参数
服务器型号Dell PowerEdge R650
CPU2× Intel Xeon Gold 5318Y @ 2.10GHz
内存64GB DDR4
存储2× 1TB NVMe SSD(RAID1)
操作系统Ubuntu 22.04.3 LTS x86_64
核心网络2×10Gbps CN2 高速链路
内网 DNS10.0.0.53(Bind9 + 转发)
外网 DNS8.8.8.8 / 1.1.1.1
网络管理Netplan + systemd-resolved

三、故障排查流程

3.1 网络连通性确认
# 验证外网 IP 可以连通
ping -c 5 8.8.8.8
# 检查默认路由
ip route show

现场输出:

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 5 packets transmitted, 5 received, 0% packet loss

确认 外网链路正常。


3.2 DNS 解析测试
# 使用 dig 明确测试 DNS 服务器解析
dig @10.0.0.53 example.com
dig @8.8.8.8 example.com
# 测试 systemd-resolved 当前解析状态
resolvectl status

输出显示:

;; connection timed out; no servers could be reached

表明 DNS 无响应。


3.3 检查 systemd-resolved 与 Netplan

Ubuntu 22.04 默认使用 systemd-resolved 和 netplan 管理网络和 DNS:

# 查看 systemd-resolved 状态
systemctl status systemd-resolved
# 查看当前 Netplan 配置
cat /etc/netplan/00-installer-config.yaml

错误的 Netplan 配置示例:

network:
  ethernets:
    ens160:
      dhcp4: no
      addresses: [10.0.0.10/24]
      gateway4: 10.0.0.1
      nameservers:
        addresses: []
# ❌ 空 DNS
version: 2

空 nameservers 会导致解析请求丢失。


四、DNS 原理与解决方案详解

4.1 Ubuntu 22.04 的 DNS 架构

在 Ubuntu 22.04 中:

  • Netplan 负责解析 YAML 配置 → 生成 systemd-networkd 配置
  • systemd-resolved 负责 DNS 解析服务
  • /etc/resolv.conf 通常为指向 /run/systemd/resolve/stub-resolv.conf

4.2 正确的 Netplan 配置示例

编辑 /etc/netplan/00-installer-config.yaml:

network:
  version: 2
  ethernets:
    ens160:
      dhcp4: no
      addresses: [10.0.0.10/24]
      gateway4: 10.0.0.1
      nameservers:
        search: [example.local]
        addresses: [10.0.0.53, 1.1.1.1, 8.8.8.8]

保存后应用:

netplan generate
netplan apply

4.3 验证 DNS 配置是否生效
resolvectl status

示例输出:

Global Protocols: +LLMNR +mDNS +DNSOverTLS
DNSSEC=no/unsupported
resolv.conf mode: stub
Link 2(ens160) Current Scopes: DNS DefaultRoute setting: yes LLMNR setting: yes MulticastDNS setting: no DNSOverTLS setting: opportunistic
DNS Servers: 10.0.0.53 1.1.1.1 8.8.8.8
DNS Domain: example.local

说明 DNS Server 配置已正确下发。


五、性能与稳定性评测

我们对不同 DNS 配置进行响应时间和成功率测试(使用 dig 并统计 100 次查询平均延迟):

DNS 服务器平均响应时间 (ms)成功率
10.0.0.53(内网)12.4100%
1.1.1.1(Cloudflare)15.2100%
8.8.8.8(Google DNS)18.7100%

评测命令示例:

for i in {1..100}; do
  dig @10.0.0.53 example.com +time=1 +tries=1 +stats | grep "Query time" >> dns_local.txt
done

如上表所示,内网 DNS 性能优于公网 DNS。


六、常见误区与进阶设置

6.1 遗漏 systemd-resolved 启动

若服务未启动:

systemctl enable --now systemd-resolved
6.2 /etc/resolv.conf 非指向 stub

有时存在错误的软链接:

# 重新建立正确的软链
rm /etc/resolv.conf
ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
6.3 DNS over TLS

若需要启用 DNS over TLS 以增强安全性:

修改 Netplan:

nameservers:
  addresses: [1.1.1.1]
  options:
    edns0: true
    rotate: true

并启用:

resolvectl dns ens160 1.1.1.1
resolvectl edns ens160 yes

七、总结

在 Ubuntu 22.04 中常见'无法访问外网'的问题,很大一部分情况是DNS 配置错误或丢失导致。本文通过现场故障复现,从现象定位、底层原理、具体配置、工具验证到性能评测,一步一步教你排查与解决:

  1. 确认连通性(IP 可达)
  2. 检查 DNS 解析结果(dig / resolvectl)
  3. 修正 Netplan 配置并重新应用
  4. 确保 systemd-resolved 正常运行
  5. 验证 /etc/resolv.conf 是否正确链接

如果你在现场遇到类似问题,按照本文步骤逐项检查,一般能在 30 分钟内定位并解决问题。

目录

  1. Ubuntu 22.04 无法连接外部网络的故障排查与解决
  2. 一、问题现象描述
  3. 二、现场环境与硬件配置
  4. 三、故障排查流程
  5. 3.1 网络连通性确认
  6. 验证外网 IP 可以连通
  7. 检查默认路由
  8. 3.2 DNS 解析测试
  9. 使用 dig 明确测试 DNS 服务器解析
  10. 测试 systemd-resolved 当前解析状态
  11. 3.3 检查 systemd-resolved 与 Netplan
  12. 查看 systemd-resolved 状态
  13. 查看当前 Netplan 配置
  14. ❌ 空 DNS
  15. 四、DNS 原理与解决方案详解
  16. 4.1 Ubuntu 22.04 的 DNS 架构
  17. 4.2 正确的 Netplan 配置示例
  18. 4.3 验证 DNS 配置是否生效
  19. 五、性能与稳定性评测
  20. 六、常见误区与进阶设置
  21. 6.1 遗漏 systemd-resolved 启动
  22. 6.2 /etc/resolv.conf 非指向 stub
  23. 重新建立正确的软链
  24. 6.3 DNS over TLS
  25. 七、总结

更多推荐文章

查看全部
  • 计算机专业就业真相:数据怎么说,个人怎么选
  • Topaz Photo AI 核心功能解析:AI 降噪、锐化与无损放大技术
  • ComfyUI Photoshop 插件配置指南:实现 AI 绘画工作流
  • 风险管控而非修补:金仓 SQL 防火墙体系化实践
  • 华为OD机试真题:日志解析算法题解
  • Stable Diffusion 部署实战:Stability Matrix 与 LiblibAI 使用指南
  • AI一键生成爆款短视频!2026最强提示词模板+实战案例
  • 后端视角下的 HTML 前端基础入门
  • Python+UniApp 博物馆文创产品推荐商城系统
  • AI 绘画在商业设计中的应用与版权解析
  • BeyondCompare 安装与本地试用状态管理
  • AI 产品经理学习路线:从零基础到专家的进阶指南
  • 通义万相 2.1 多模态生成技术解析与部署实践
  • 运维工程师职业瓶颈分析及向网络安全或研发转型建议
  • Sora 2 / Veo 3.1来了!2026 AI视频生成技术最新突破解读
  • 跳表核心原理与 C++ 实现深度解析
  • AI 模型调优与 Python 实战
  • C++ Connector 与 MySQL:配置陷阱与性能优化深度解析
  • MVP 至千万级并发:AI 在前后端开发中的差异化落地指南
  • Veristand 环境安装教程:Linux RT 与 Windows 平台

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online