news 2026/10/28 17:27:33

Ubuntu 22.04 DNS解析故障排查与解决方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ubuntu 22.04 DNS解析故障排查与解决方案

1. 问题现象与初步诊断

那天早上,我像往常一样启动Ubuntu 22.04准备开始工作,却发现浏览器打不开任何网页。终端里执行ping 8.8.8.8能通,但ping google.com却提示"Name or service not known"。这种典型的DNS解析失败问题,在Linux系统中其实很常见,但每次遇到都需要系统性地排查。

首先确认基本网络状态:

ip a

这个命令显示我的网卡已经获取到了IP地址,说明物理连接和DHCP服务是正常的。接着测试基础连通性:

ping -c 4 8.8.8.8

得到正常响应,证明TCP/IP协议栈工作正常,能够到达外部网络。问题显然出在域名解析环节。

2. DNS配置深度检查

2.1 查看当前DNS配置

现代Ubuntu使用systemd-resolved管理DNS,首先检查它的状态:

systemd-resolve --status

输出显示DNS服务器被正确设置为路由器IP(192.168.1.1),但奇怪的是解析就是不工作。进一步验证:

cat /etc/resolv.conf

这个本该包含DNS配置的文件,现在只显示了一行注释:

# This is a dynamic resolv.conf file...

原来systemd-resolved通过/run/systemd/resolve/stub-resolv.conf管理实际配置,查看真实配置:

cat /run/systemd/resolve/stub-resolv.conf

这里确实包含了正确的DNS服务器地址。

2.2 手动测试DNS解析

使用dig工具直接测试DNS查询:

dig @8.8.8.8 google.com

这次能正常返回结果,说明问题不是出在外部DNS服务器,而是本地解析器的配置或缓存出了问题。

3. 解决方案实施

3.1 临时解决方案

最快速的解决方法是直接修改/etc/resolv.conf:

sudo nano /etc/resolv.conf

添加:

nameserver 8.8.8.8 nameserver 8.8.4.4

保存后立即生效。但这是个临时方案,因为NetworkManager或systemd-resolved可能会覆盖这个文件。

3.2 永久解决方案

对于Ubuntu 22.04,正确的永久配置方式是通过Netplan。检查/etc/netplan/下的YAML文件:

network: version: 2 renderer: networkd ethernets: enp0s3: dhcp4: true nameservers: addresses: [8.8.8.8, 8.8.4.4]

应用配置:

sudo netplan apply

3.3 验证systemd-resolved

确保systemd-resolved服务正常运行:

sudo systemctl restart systemd-resolved sudo systemctl enable systemd-resolved

检查解析状态:

systemd-resolve --statistics

4. 深度问题排查

4.1 检查DNS劫持

有时候问题可能出在ISP的DNS劫持上。使用以下命令检测:

dig +short porttest.dns-oarc.net TXT

如果返回结果包含"DNS Recursion"字样,说明存在DNS放大攻击风险。

4.2 测试不同DNS协议

现代DNS支持TCP和DoT/DoH协议,测试不同协议下的解析:

# 传统UDP dig +short google.com @8.8.8.8 # 强制TCP dig +short google.com @8.8.8.8 +tcp # DoT测试 kdig -d @8.8.8.8 +tls-ca +tls-host=dns.google.com google.com

4.3 检查MTU问题

不合适的MTU设置可能导致DNS包被丢弃:

ping -s 1472 -M do 8.8.8.8

如果能ping通1472字节(1500-28包头),说明MTU设置正常。

5. 高级配置方案

5.1 配置DNS over TLS

编辑/etc/systemd/resolved.conf:

[Resolve] DNS=8.8.8.8 8.8.4.4 DNSOverTLS=opportunistic

重启服务:

sudo systemctl restart systemd-resolved

5.2 使用本地DNS缓存

安装并配置dnsmasq:

sudo apt install dnsmasq

编辑/etc/dnsmasq.conf:

server=8.8.8.8 server=8.8.4.4 cache-size=1000

重启服务:

sudo systemctl restart dnsmasq

5.3 网络管理器配置

对于使用NetworkManager的桌面环境:

nmcli con show nmcli con mod "连接名" ipv4.dns "8.8.8.8 8.8.4.4" nmcli con up "连接名"

6. 疑难问题处理

6.1 处理resolv.conf被覆盖

如果/etc/resolv.conf不断被重置,可以将其设为不可变:

sudo chattr +i /etc/resolv.conf

要修改时先取消属性:

sudo chattr -i /etc/resolv.conf

6.2 诊断DNS泄漏

使用在线工具检查DNS泄漏:

curl ifconfig.me

比较返回的IP与DNS查询的实际出口IP。

6.3 处理IPv6问题

有时IPv6 DNS会导致问题,可以临时禁用:

sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1 sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

7. 最佳实践建议

  1. 多DNS服务器配置:至少配置两个不同的DNS服务器,如一个本地ISP DNS和一个公共DNS(如Cloudflare的1.1.1.1)

  2. 定期清理缓存:

sudo systemd-resolve --flush-caches
  1. 日志监控:定期检查DNS查询日志
journalctl -u systemd-resolved -f
  1. DNS性能测试:使用dnsping比较不同DNS响应速度
dnsping -c 10 8.8.8.8
  1. 应急方案准备:在~/.bashrc中添加别名快速切换DNS
alias fixdns='sudo resolvectl dns eth0 8.8.8.8 8.8.4.4'

经过这样全面的排查和配置后,Ubuntu 22.04的网络连接应该能稳定工作。我在实际运维中发现,90%的DNS问题都源于配置错误或服务异常,系统性的排查能快速定位问题根源。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/28 17:26:54

深入解析for循环:从基础语法到性能优化

1. 循环语句基础概念解析循环结构是编程语言中最基础也最重要的控制结构之一。作为一名有十年开发经验的工程师,我见过太多初学者在循环语句上栽跟头,也见证过无数资深开发者因为对循环的深入理解而写出优雅高效的代码。循环的本质是让计算机重复执行某段…

作者头像 李华
网站建设 2026/10/28 17:26:30

深度学习入门指南:从基础概念到实战应用

1. 深度学习入门:从零到一的认知跃迁第一次接触深度学习时,我被那些晦涩的数学符号和复杂的网络结构图吓得不轻。直到自己动手训练了第一个手写数字识别模型,看到准确率从30%慢慢提升到95%以上,才真正理解这个领域的魔力。深度学习…

作者头像 李华
网站建设 2026/10/28 17:26:24

矩阵跃动稳定性:分布式系统升级与SDK优化的关键

1. 从6次升级回滚看矩阵跃动稳定性最近在技术圈里,矩阵跃动(Matrix Dynamics)这个术语开始频繁出现。作为分布式系统架构中的关键概念,它指的是服务集群在动态扩展、收缩和版本更新时的整体行为表现。我经历过6次完整的系统升级回…

作者头像 李华
网站建设 2026/10/28 17:24:20

MoE混合专家模型:动态路由与负载均衡实践

1. MoE混合专家模型:让AI学会"术业有专攻"的底层逻辑第一次接触MoE架构时,我正被传统大模型的资源消耗问题困扰。当时训练一个20B参数的文本生成模型,每次推理都要加载全部参数,显存占用直接爆掉8张A100。直到发现Googl…

作者头像 李华
网站建设 2026/10/28 17:23:47

CPU与外设交互:程序查询、中断与DMA控制方式详解

计算机组成原理里有个特别容易被讲成"背概念"的知识点,就是CPU和外设之间到底怎么打交道。很多教材一上来就甩出程序查询、中断、DMA三个名词,配几张时序图,看完感觉懂了,合上书又说不清它们到底差在哪、为什么要有三种…

作者头像 李华
网站建设 2026/10/28 17:23:45

minimumAnswers:基于贝叶斯可信区间的众包标注动态终止机制

简介:本资源是一个面向众包系统设计者与Java开发者的算法研究型项目,聚焦于科学估算众包任务所需的最少答案数量,以在成本可控前提下保障结果准确率与可靠性。项目采用统计建模与模拟验证思路,融合任务复杂度分析、工作者可信度评…

作者头像 李华