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

Ubuntu 22.04 无法连接外网的故障排查与 DNS 配置修复

针对 Ubuntu 22.04 服务器无法访问外网但能 Ping 通 IP 的故障,分析原因为 DNS 配置缺失或错误。排查流程包括验证网络连通性、测试 DNS 解析状态、检查 systemd-resolved 及 Netplan 配置。解决方案为修正 Netplan YAML 中的 nameservers 地址列表,确保包含内网及公网 DNS 服务器,并重启相关服务。同时提供了 DNS over TLS 等进阶安全配置建议及性能对比数据。

竹影清风发布于 2026/2/9更新于 2026/9/1180 浏览
Ubuntu 22.04 无法连接外网的故障排查与 DNS 配置修复

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

在一次例行巡检中遇到一台 Ubuntu 22.04 服务器无法访问外部网络,但本地网络与内网服务正常。通过本文分享'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: false
      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: false
      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. 七、总结

更多推荐文章

查看全部
  • 2026 年前端技术演进趋势与核心面试题解析
  • 宇树 Go2 机器人强化学习(RL)开发实操指南
  • DeepSeek + Ollama + Open-WebUI 本地化部署显存需求与配置指南
  • Windows 下 ComfyUI 环境配置与常见启动问题排查
  • Python 科学计算核心库 NumPy 详解
  • 前端 JS 加载失败的处理方案与多源备份策略
  • Whisper-CTranslate2 高性能语音识别与翻译工具
  • 2023 年全国职业院校技能大赛网络建设与运维赛项样题解析
  • Arthas 实战:结合 IDEA 的 Java 线上排查流程
  • DeepSeek-R1 大模型基于 MS-Swift 框架部署推理与微调实践
  • synchronized 关键字详解:从字节码到对象头与锁升级
  • Git 核心知识体系:从原理到实战演进
  • OpenClaw+Qwen3.5:本地部署开源 AI 助手实战指南
  • Linux 进程信号机制详解
  • AI 工具快速生成 PPT 与动漫风格漫画
  • GitHub Copilot 性能优化:提升 AI 代码建议响应速度 15%
  • HarmonyOS ArkUI Toolbar 组件通用属性与实战用法
  • Spec-Kit 与 Copilot 实现 AI 规格驱动开发
  • 前端三年成长复盘:从迷茫到互联网实战
  • Java 线程安全核心:synchronized、volatile 与 wait/notify

相关免费在线工具

  • 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