改了DNS还是不生效?Ubuntu 24.04的这个坑我帮你踩过了

今天在服务器上拉取 docker 镜像时,死活都拉取不下来,更改了国内镜像源也依旧无法拉下来,最后就怀疑不是 docker 镜像源的问题,于是就干脆 ping 了一下某度,发现竟然是服务器上 DNS 解析的问题。

其中也遇到了一些问题,折腾了好几个小时,于是将解决方案分享给到大家,希望有类似问题时,对你们有所帮助。

问题起源

当我去 ping 某度时

bash 复制代码
ping www.baidu.com

报错如下:

bash 复制代码
ping: www.baidu.com: Temporary failure in name resolution

为了验证是 DNS 的问题导致的,我们可以尝试直接先 ping IP 地址或者通过其他的命令行来验证

我们可以看到,当我们直接 ping IP 地址时,网络是通的,但是使用 nslookup baidu.com 来访问时,一直连接超时,那么多半就是 DNS 解析导致的无法上网。

以往的解决方案

我们知道,通常在 Ubuntu 系统中修改 dns 可以通过修改 /etc/resolv.conf 配置文件来解决,但是在 Ubuntu 24.04 LTS 系统中,我发现,不管怎么修改这个配置文件,域名解析都在往 127.0.0.53 这个地址发送

我们通过查看 /etc/resolv.conf 配置文件可以看到 /etc/resolv.conf 配置文件软连接到了 /run/systemd/resolve/stub-resolv.conf 配置文件,那么,我们直接修改 /run/systemd/resolve/stub-resolv.conf 是否就可以解决问题呢?然而,经过尝试,依旧不行。

那么,如何解决呢?

解决方案

先修改 DNS 配置

打开 /etc/systemd/resolved.conf 文件

bash 复制代码
vim  /etc/systemd/resolved.conf

/etc/systemd/resolved.conf 中修改 DNS 配置信息,比如我这里修改成了:

bash 复制代码
[Resolve]
DNS=1.1.1.1 233.6.6.6 114.114.114.114 8.8.8.8

备份旧的配置文件

bash 复制代码
# 直接备份一下,怕出问题
mv /etc/resolv.conf /etc/resolv.conf.alexbak

建立软连接

bash 复制代码
ln -s /run/systemd/resolve/resolv.conf /etc/

现在的软连接关系就是这样

重启网络

bash 复制代码
systemctl restart systemd-resolved

检验一下,发现可以正常访问了,大功告成!

查看缓存文件是否已经生效

bash 复制代码
cat /run/systemd/resolve/resolv.conf
相关推荐
无相求码6 小时前
为什么 printf 可以接受任意数量参数?变长参数的底层真相
后端
郡杰6 小时前
Boot:MP|测验|结果封装|异常处理|前后联调|拦截器
后端
团团崽_七分甜6 小时前
后端基础概念 - 前端开发者指南(进程、线程、事务)
后端
倔强的石头_7 小时前
从5万次到日均2000万次调用:大模型推理服务的性能工程实践V2.1
后端
环境栈笔记7 小时前
多账号浏览器选型检查清单:Profile、权限、Session 和任务日志怎么评估
前端·人工智能·后端·自动化
shepherd1117 小时前
一次把 Spring MVC 文件上传参数“查没了”的排查:multipart、Filter 与 request body 的连环坑
java·spring boot·后端
mONESY7 小时前
Node.js fs 文件系统模块 四种读写方案全解析
javascript·后端
Larcher7 小时前
从回调地狱到优雅异步:Node.js 文件操作进化史
javascript·后端·架构
Java编程爱好者7 小时前
深入浅出Agent: Harness最全调研与原理解析(持续更新中)
后端
huy1n97 小时前
Ubuntu 22.04部署Claude Code并接入DeepSeek-V4模型完整教程
linux·ubuntu·deepseek·claude code