1. 首页 > 服务器系统 > Ubuntu

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

一、前言

作者是刚学习操作系统的小白,安装Ubuntu 20.04.3VMware、且虚拟机搭好之后

发现自己是有线状态(右上角形如“品”的图标)但是不能上网

校园网和个人热点都不行

寻求各种文章方案都以失败而终

最后在人工智能的帮助下解决了问题

本文提供一个思路,希望能帮助各位

前言

图1 安装好的Ubuntu界面

前言_图2

图2 搜狐浏览器搜百度失败

前言_图3

图3 有线成功连接状态

二、排查接口

既然是有线状态,那么网络是互通的,我们来确认一下

排查接口

图4 总览

1)在控制面版-网络和Internet-网络连接,右键WLAN点击属性

排查接口_图2

图5 打开WLAN属性

勾选两个选项

排查接口_图3

图6 WLAN属性

2)查看虚拟网络,点击编辑-虚拟网络编辑器

排查接口_图4

图7 虚拟网络编辑器打开操作

可以看到只有V1和V8是连接的,且被选中且子网IP不是 0.0.0.0

排查接口_图5

图8 虚拟网络编辑器界面

也对应了网络连接界面的V1和V8

排查接口_图6

图9 网络连接界面

3)VMware网络连接

点击虚拟机-设置-网络适配器可以选择网络模式,根据前文,只能选NAT模式主机模式,这里我们选择NET模式

排查接口_图7

排查接口_图8

图10 虚拟机设置界面

确保接口设置没问题,接下来开始排查问题!

三、排查问题

1.检查 VMware 的虚拟网络编辑器和服务

VMware 的 NAT 和 DHCP 服务可能没有正常运行。

重启 VMware 的相关服务(在Windows 主机上操作)

Win + R 键,输入 services.msc 并回车,打开“服务”窗口。

找到所有以 VMware 开头的服务。

重点重启以下两个服务,选择“重新启动”

VMware NAT Service

VMware DHCP Service

1.检查 VMware 的虚拟网络编辑器和服务

图11 服务界面

2.检查 Ubuntu 内部的网络配置

桌面右键,点击“在终端中打开”

2.检查 Ubuntu 内部的网络配置

图12 打开终端操作

在终端输入

ip addr show

找到你的主网卡(通常是 ens33 或 eth0)。

查看它是否有一个 inet 地址,格式通常是 192.168.x.x 或 172.16.x.x。

如果只有 inet6(IPv6)地址或者根本没有 inet 地址,

说明它没有从 VMware 的DHCP服务器成功获取IP。

我们可以看到Ubuntu虚拟机已经成功获取到了IP地址 192.168.40.128/24

并且网卡ens33的状态是UP,这说明网络连接在虚拟机内部是正常的

2.检查 Ubuntu 内部的网络配置_图2

图13 终端界面

既然网络接口和IP地址都正常,那么问题几乎可以肯定是出在 DNS 解析 上

虚拟机可以连接到网关和网络,但无法将域名(如 www.google.com)翻译成IP地址

四、修复 DNS

1. 测试网络连通性

首先,我们 ping 一个公网 IP 地址,来确认网络通道确实是通的。发现一直在发送

ping -c 4 8.8.8.8

1. 测试网络连通性

图14 ping公网IP

再ping一下百度,回复ping www.baidu.com出现暂时性错误

ping -c 4 www.baidu.com

1. 测试网络连通性_图2

图15 ping域名

能够ping通IP地址(8.8.8.8),但无法解析域名,确实是DNS问题

2)强制将 DNS 服务器切换为 Google 公共 DNS

eth33是图13显示的网卡名

sudo resolvectl dns eth33 8.8.8.8 8.8.4.4

会输出localomain,再ping一下百度,还是不行

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:域名解析出现暂时性错误

DNS Domain: localdomain 导致域名解析失败。

说明系统会自动在域名后添加 .localdomain

导致实际解析 www.baidu.com.localdomain(不存在的域名),而非 www.baidu.com

3)清空 DNS 域名后缀

使得去除后缀,直接解析原始域名

sudo resolvectl domain ens33 ~.

检验

resolvectl status | grep -A 5 "DNS Servers"

输出

DNS Servers: 8.8.8.8 8.8.4.4
DNS Domain: ~.

再ping一下域名还是不行

4)配置 systemd-resolved 持久化

输入

sudo nano /etc/systemd/resolved.conf

在resolve修改,记得去掉#号,非常重要

[Resolve]
DNS=8.8.8.8 8.8.4.4
Domains=~.

然后Ctrl+O,按Enter去保存!!!Ctrl+X退出

此时文件已永久写入 /etc/systemd/resolved.conf

接着必须重启systemd-resolved服务

sudo systemctl restart systemd-resolved

然后检验

sudo systemctl restart systemd-resolved

再验证,必须看到 8.8.8.8

cat /run/systemd/resolve/resolv.conf | grep "nameserver"

最后ping百度

如果还是不行,/etc/systemd/resolved.conf 配置未生效

原因可能是 NetworkManager 覆盖了 DNS 设置

5) 终极方案

首先确认:cat /run/systemd/resolve/resolv.conf | grep "nameserver"  

 若输出 192.168.137.2说明问题存在

# 1. 删除旧配置(避免冲突)
sudo rm -f /etc/systemd/resolved.conf
# 2. 重建正确配置(直接复制执行)
echo -e "[Resolve]\nDNS=8.8.8.8 8.8.4.4\nDomains=~." | sudo tee /etc/systemd/resolved.conf
# 3. 禁用 NetworkManager 的 DNS 管理
echo -e "[main]\ndns=none" | sudo tee /etc/NetworkManager/NetworkManager.conf

然后再重启验证,记得分条复制

sudo systemctl restart systemd-resolved NetworkManager
sudo rm -f /etc/resolv.conf && sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
ping -c 4 www.baidu.com  

Ubuntu 将永久使用 Google DNS(8.8.8.8),不再依赖路由器 DNS

5) 终极方案

图16 ping通了

5) 终极方案_图2

图17 胜利结算画面

Ubuntu永久配置DNS的教程

找到 Netplan 配置文件:

ls /etc/netplan/
# 通常文件名类似 00-installer-config.yaml 或 50-cloud-init.yaml

编辑配置文件:

sudo nano /etc/netplan/50-cloud-init.yaml
添加 DNS 配置:
network:
  version: 2
  renderer: networkd
  ethernets:
    ens3:  # 使用您的网卡名称(使用 ip a 命令查看)
      dhcp4: no
      addresses: [192.168.1.100/24]  # 替换为你的静态 IP
	  routes:
         - to: default
          	via: 192.168.1.1          # 替换为你的网关
      nameservers:
        addresses: [223.5.5.5, 223.6.6.6, 8.8.8.8]
        search: [localdomain]        # 可选搜索域

应用配置:

sudo netplan apply

验证网络设置

# 检查默认路由
ip route show default
# 检查 DNS 设置
systemd-resolve --status
# 测试 DNS 解析
nslookup hub-mirror.c.163.com
nslookup registry-1.docker.io

如果使用 DHCP

如果你使用的是 DHCP 获取 IP 地址,只需设置 DNS:

network:
  version: 2
  renderer: networkd
  ethernets:
    ens3:  # 您的网卡名称
      dhcp4: yes
      nameservers:
        addresses: [223.5.5.5, 223.6.6.6, 8.8.8.8]

以上就是【Linux】Ubuntu有线但不能上网怎么办?DNS解析失败终极解决方案:从 ping域名失败到通网的详细内容,更多相关资料请阅读主机测评网其它文章!

本文由主机测评网发布,不代表主机测评网立场,转载联系作者并注明出处:https://zhujiwo.jb51.net/ubuntu/8789.html

联系我们

在线咨询:点击这里给我发消息

Q Q:2220678578