山窝窝 發表於 2025-11-29 00:00:00

Ubuntu DNS无法解析怎么办?Ubuntu DNS解析失败的终极解决方法

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>一、前言</li><li>二、排查接口</li><li>三、排查问题<ul class="second_class_ul"><li>1.检查 VMware 的虚拟网络编辑器和服务</li><li>2.检查 Ubuntu 内部的网络配置</li></ul></li><li>四、修复 DNS<ul class="second_class_ul"><li>1. 测试网络连通性</li><li>2)强制将 DNS 服务器切换为 Google 公共 DNS</li><li>3)清空 DNS 域名后缀</li><li>4)配置 systemd-resolved 持久化</li><li>5) 终极方案</li></ul></li><li>Ubuntu永久配置DNS的教程<ul class="second_class_ul"><li>找到 Netplan&nbsp;配置文件:</li><li>编辑配置文件:</li><li>应用配置:</li><li>验证网络设置</li><li>如果使用&nbsp;DHCP</li></ul></li></ul></div><p class="maodian"></p><h2>一、前言</h2>
<p>作者是刚学习操作系统的小白,安装<strong>Ubuntu 20.04.3</strong>和<strong>VMware</strong>、且虚拟机搭好之后</p>
<p>发现自己是<strong>有线状态(右上角形如&ldquo;品&rdquo;的图标)但是不能上网</strong></p>
<p><strong>校园网和个人热点都不行</strong></p>
<p>寻求各种文章方案都以失败而终</p>
<p>最后在人工智能的帮助下解决了问题</p>
<p>本文提供一个思路,希望能帮助各位</p>
<p><img alt="前言" src="https://zhuji.jb51.net/uploads/allimg/20251128/2-25112Q1494Y22.png" /></p>
<p>图1 安装好的Ubuntu界面</p>
<p><img alt="前言_图2" src="https://zhuji.jb51.net/uploads/allimg/20251128/2-25112Q1494YW.png" /></p>
<p>图2 搜狐浏览器搜百度失败</p>
<p><img alt="前言_图3" src="https://zhuji.jb51.net/uploads/allimg/20251128/2-25112Q1494V36.png" /></p>
<p>图3 有线成功连接状态</p>
<p class="maodian"></p><h2>二、排查接口</h2>
<p>既然是<strong>有线状态</strong>,那么网络是互通的,我们来<strong>确认一下</strong></p>
<p><img alt="排查接口" src="https://zhuji.jb51.net/uploads/allimg/20251128/2-25112Q1494a12.png" /></p>
<p>图4 总览</p>
<p>1)在<strong>控制面版-网络和Internet-网络连接</strong>,右键WLAN点击<strong>属性</strong></p>
<p><img alt="排查接口_图2" src="https://zhuji.jb51.net/uploads/allimg/20251128/2-25112Q14949515.png" /></p>
<p>图5 打开WLAN属性</p>
<p>勾选两个选项</p>
<p><img alt="排查接口_图3" src="https://zhuji.jb51.net/uploads/allimg/20251128/2-25112Q1494a11.png" /></p>
<p>图6 WLAN属性</p>
<p>2)查看<strong>虚拟网络</strong>,点击编辑-虚拟网络编辑器</p>
<p><img alt="排查接口_图4" src="https://zhuji.jb51.net/uploads/allimg/20251128/2-25112Q1494aI.png" /></p>
<p>图7 虚拟网络编辑器打开操作</p>
<p>可以看到只有V1和V8是连接的,且被选中且子网IP不是 <strong>0.0.0.0</strong></p>
<p><img alt="排查接口_图5" src="https://zhuji.jb51.net/uploads/allimg/20251128/2-25112Q14949101.png" /></p>
<p>图8&nbsp;虚拟网络编辑器界面</p>
<p>也对应了<strong>网络连接</strong>界面的V1和V8</p>
<p><img alt="排查接口_图6" src="https://zhuji.jb51.net/uploads/allimg/20251128/2-25112Q14949C9.png" /></p>
<p>图9 网络连接界面</p>
<p>3)VMware网络连接</p>
<p>点击<strong>虚拟机-设置-网络适配器</strong>可以选择<strong>网络模式,</strong>根据前文,只能选<strong>NAT模式</strong>和<strong>主机模式</strong>,这里我们选择<strong>NET模式</strong></p>
<p><img alt="排查接口_图7" src="https://zhuji.jb51.net/uploads/allimg/20251128/2-25112Q14950260.png" /></p>
<p><img alt="排查接口_图8" src="https://zhuji.jb51.net/uploads/allimg/20251128/2-25112Q14950237.png" /></p>
<p>图10 虚拟机设置界面</p>
<p>确保接口设置没问题,接下来开始排查问题!</p>
<p class="maodian"></p><h2>三、排查问题</h2>
<p class="maodian"></p><h3>1.检查 VMware 的虚拟网络编辑器和服务</h3>
<p>VMware 的 NAT 和 DHCP 服务可能没有正常运行。</p>
<p><strong>重启 VMware 的相关服务(在Windows 主机上操作)</strong></p>
<p>按 <strong>Win + R </strong>键,输入 <strong>services.msc</strong> 并回车,打开&ldquo;服务&rdquo;窗口。</p>
<p>找到所有以 VMware 开头的服务。</p>
<p>重点重启以下两个服务,选择<strong>&ldquo;重新启动&rdquo;</strong></p>
<p><strong>VMware NAT Service</strong></p>
<p><strong>VMware DHCP Service</strong></p>
<p><img alt="1.检查 VMware 的虚拟网络编辑器和服务" src="https://zhuji.jb51.net/uploads/allimg/20251128/2-25112Q14950401.png" /></p>
<p>图11 服务界面</p>
<p class="maodian"></p><h3>2.检查 Ubuntu 内部的网络配置</h3>
<p>桌面右键,点击&ldquo;<strong>在终端中打开&rdquo;</strong></p>
<p><img alt="2.检查 Ubuntu 内部的网络配置" src="https://zhuji.jb51.net/uploads/allimg/20251128/2-25112Q14951416.png" /></p>
<p>图12 打开终端操作</p>
<p>在终端输入</p>
<div class="dxycode"><pre class="brush:bash;">ip addr show</pre></div>
<p>找到你的<strong>主网卡</strong>(通常是 ens33 或 eth0)。</p>
<p>查看它是否有一个<strong> inet 地址</strong>,格式通常是 192.168.x.x 或 172.16.x.x。</p>
<p>如果只有 inet6(IPv6)地址或者根本没有 inet 地址,</p>
<p>说明它没有从 VMware 的DHCP服务器成功获取IP。</p>
<p>我们可以看到Ubuntu虚拟机<strong>已经成功获取到了IP地址</strong>&nbsp;192.168.40.128/24</p>
<p>并且网卡ens33的状态是<strong>UP</strong>,这说明网络连接在虚拟机内部是正常的</p>
<p><img alt="2.检查 Ubuntu 内部的网络配置_图2" src="https://zhuji.jb51.net/uploads/allimg/20251128/2-25112Q14951549.png" /></p>
<p>图13 终端界面</p>
<p><strong>既然网络接口和IP地址都正常,那么问题几乎可以肯定是出在&nbsp;DNS 解析&nbsp;上</strong></p>
<p><strong>虚拟机可以连接到网关和网络,但无法将域名(如&nbsp;www.google.com)翻译成IP地址</strong></p>
<p class="maodian"></p><h2>四、修复 DNS</h2>
<p class="maodian"></p><h3>1. 测试网络连通性</h3>
<p>首先,我们 ping 一个公网 IP 地址,来确认网络通道确实是通的。发现一直在发送</p>
<div class="dxycode"><pre class="brush:bash;">ping -c 4 8.8.8.8</pre></div>
<p><img alt="1. 测试网络连通性" src="https://zhuji.jb51.net/uploads/allimg/20251128/2-25112Q14951H2.png" /></p>
<p>图14 ping公网IP</p>
<p>再ping一下百度,回复ping www.baidu.com出现暂时性错误</p>
<div class="dxycode"><pre class="brush:bash;">ping -c 4 www.baidu.com</pre></div>
<p><img alt="1. 测试网络连通性_图2" src="https://zhuji.jb51.net/uploads/allimg/20251128/2-25112Q14952458.png" /></p>
<p>图15&nbsp;ping域名</p>
<p>能够ping通IP地址(8.8.8.8),但无法解析域名,确实是DNS问题</p>
<p class="maodian"></p><h3>2)强制将 DNS 服务器切换为 Google 公共 DNS</h3>
<p><strong>eth33是图13显示的网卡名</strong></p>
<div class="dxycode"><pre class="brush:bash;">sudo resolvectl dns eth33 8.8.8.8 8.8.4.4</pre></div>
<p>会输出localomain,再ping一下百度,还是不行</p>
<div class="dxycode"><pre class="brush:bash;">pluton@pluton:$ resolvectl status | grep -A 5
DNS ServersDNs Servers: 8.8.8.8 8.8.4.4
DNS Domain: localdomain
pluton@pluton:$ ping -c 4 www.baidu.com
ping:www.baidu.com:域名解析出现暂时性错误</pre></div>
<p>DNS Domain: localdomain 导致域名解析失败。</p>
<p>说明系统会自动在域名后添加 .localdomain</p>
<p>导致实际解析 www.baidu.com.localdomain(不存在的域名),而非 www.baidu.com</p>
<p class="maodian"></p><h3>3)清空 DNS 域名后缀</h3>
<p>使得去除后缀,直接解析原始域名</p>
<div class="dxycode"><pre class="brush:bash;">sudo resolvectl domain ens33 ~.</pre></div>
<p>检验</p>
<div class="dxycode"><pre class="brush:bash;">resolvectl status | grep -A 5 "DNS Servers"</pre></div>
<p>输出</p>
<div class="dxycode"><pre class="brush:bash;">DNS Servers: 8.8.8.8 8.8.4.4
DNS Domain: ~.</pre></div>
<p>再ping一下域名还是不行</p>
<p class="maodian"></p><h3>4)配置 systemd-resolved 持久化</h3>
<p>输入</p>
<div class="dxycode"><pre class="brush:bash;">sudo nano /etc/systemd/resolved.conf</pre></div>
<p>在resolve修改,记得去掉<strong>#</strong>号,非常重要</p>
<div class="dxycode"><pre class="brush:bash;">
DNS=8.8.8.8 8.8.4.4
Domains=~.</pre></div>
<p><strong>然后Ctrl+O,按Enter去保存!!!Ctrl+X退出</strong></p>
<p><strong>此时文件已永久写入 /etc/systemd/resolved.conf</strong></p>
<p><strong>接着必须重启systemd-resolved服务</strong></p>
<div class="dxycode"><pre class="brush:bash;">sudo systemctl restart systemd-resolved</pre></div>
<p>然后检验</p>
<div class="dxycode"><pre class="brush:bash;">sudo systemctl restart systemd-resolved</pre></div>
<p>再验证,必须看到 8.8.8.8</p>
<div class="dxycode"><pre class="brush:bash;">cat /run/systemd/resolve/resolv.conf | grep "nameserver"</pre></div>
<p>最后ping百度</p>
<p>如果还是不行,/etc/systemd/resolved.conf 配置未生效</p>
<p>原因可能是 NetworkManager 覆盖了 DNS 设置</p>
<p class="maodian"></p><h3>5) 终极方案</h3>
<p>首先确认:cat /run/systemd/resolve/resolv.conf | grep &quot;nameserver&quot; &nbsp;</p>
<p>&nbsp;若输出 192.168.137.2说明问题存在</p>
<div class="dxycode"><pre class="brush:bash;"># 1. 删除旧配置(避免冲突)
sudo rm -f /etc/systemd/resolved.conf
# 2. 重建正确配置(直接复制执行)
echo -e "\nDNS=8.8.8.8 8.8.4.4\nDomains=~." | sudo tee /etc/systemd/resolved.conf
# 3. 禁用 NetworkManager 的 DNS 管理
echo -e "\ndns=none" | sudo tee /etc/NetworkManager/NetworkManager.conf</pre></div>
<p>然后再重启验证,记得分条复制</p>
<div class="dxycode"><pre class="brush:bash;">sudo systemctl restart systemd-resolved NetworkManager
sudo rm -f /etc/resolv.conf &amp;&amp; sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
ping -c 4 www.baidu.com</pre></div>
<p><strong>Ubuntu 将永久使用 Google DNS(8.8.8.8),不再依赖路由器 DNS</strong></p>
<p><strong><img alt="5) 终极方案" src="https://zhuji.jb51.net/uploads/allimg/20251128/2-25112Q14952W5.png" /></strong></p>
<p>图16 ping通了</p>
<p><img alt="5) 终极方案_图2" src="https://zhuji.jb51.net/uploads/allimg/20251128/2-25112Q14952395.png" /></p>
<p>图17 胜利结算画面</p>
<p class="maodian"></p><h2>Ubuntu永久配置DNS的教程</h2>
<p class="maodian"></p><h3>找到 Netplan&nbsp;配置文件:</h3>
<div class="dxycode"><pre class="brush:bash;">ls /etc/netplan/
# 通常文件名类似 00-installer-config.yaml 或 50-cloud-init.yaml</pre></div>
<p class="maodian"></p><h3>编辑配置文件:</h3>
<div class="dxycode"><pre class="brush:bash;">sudo nano /etc/netplan/50-cloud-init.yaml
添加 DNS 配置:</pre></div>
<div class="dxycode"><pre class="brush:yaml;">network:
version: 2
renderer: networkd
ethernets:
    ens3:# 使用您的网卡名称(使用 ip a 命令查看)
      dhcp4: no
      addresses: # 替换为你的静态 IP
          routes:
         - to: default
                  via: 192.168.1.1          # 替换为你的网关
      nameservers:
      addresses:
      search:       # 可选搜索域</pre></div>
<p class="maodian"></p><h3>应用配置:</h3>
<div class="dxycode"><pre class="brush:bash;">sudo netplan apply</pre></div>
<p class="maodian"></p><h3>验证网络设置</h3>
<div class="dxycode"><pre class="brush:bash;"># 检查默认路由
ip route show default
# 检查 DNS 设置
systemd-resolve --status
# 测试 DNS 解析
nslookup hub-mirror.c.163.com
nslookup registry-1.docker.io</pre></div>
<p class="maodian"></p><h3>如果使用&nbsp;DHCP</h3>
<p>如果你使用的是 DHCP 获取&nbsp;IP&nbsp;地址,只需设置 DNS:</p>
<div class="dxycode"><pre class="brush:yaml;">network:
version: 2
renderer: networkd
ethernets:
    ens3:# 您的网卡名称
      dhcp4: yes
      nameservers:
      addresses: </pre></div>
<p>以上就是【Linux】Ubuntu有线但不能上网怎么办?DNS解析失败终极解决方案:从 ping域名失败到通网的详细内容,更多相关资料请阅读琼殿技术社区其它文章!</p>
頁: [1]
查看完整版本: Ubuntu DNS无法解析怎么办?Ubuntu DNS解析失败的终极解决方法