目录
一、前言
作者是刚学习操作系统的小白,安装 ubuntu 20.04.3 和、且虚拟机搭好之后
发现自己是 有线状态(右上角形如“品”的图标)但是不能上网
校园网和个人热点都不行
寻求各种文章方案都以失败而终
最后在人工智能的帮助下解决了问题
本文提供一个思路,希望能帮助各位
图1 安装好的Ubuntu界面
图2 搜狐浏览器搜百度失败
图3 有线成功连接状态
二、排查接口
既然是 有线状态 ,那么网络是互通的,我们来 确认一下
图4 总览
1)在 控制面版-网络和Internet-网络连接 ,右键WLAN点击 属性
图5 打开WLAN属性
勾选两个选项
图6 WLAN属性
2)查看 虚拟网络 ,点击编辑-虚拟网络编辑器
图7 虚拟网络编辑器打开操作
可以看到只有V1和V8是连接的,且被选中且子网IP不是
图8虚拟网络编辑器界面
也对应了 网络连接 界面的V1和V8
图9 网络连接界面
3)VMware网络连接
点击 虚拟机-设置-网络适配器 可以选择 网络模式, 根据前文,只能选 NAT模式 和 主机模式 ,这里我们选择 NET模式
图10 虚拟机设置界面
确保接口设置没问题,接下来开始排查问题!
三、排查问题
1.检查 VMware 的虚拟网络编辑器和服务
VMware 的 NAT 和 DHCP 服务可能没有正常运行。
重启 VMware 的相关服务(在Windows 主机上操作)
按键,输入 services.msc 并回车,打开“服务”窗口。
找到所有以 VMware 开头的服务。
重点重启以下两个服务,选择 “重新启动”
VMware NAT Service
VMware DHCP Service
图11 服务界面
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的状态是,这说明网络连接在虚拟机内部是正常的
图13 终端界面
既然网络接口和IP地址都正常,那么问题几乎可以肯定是出在DNS 解析上
虚拟机可以连接到网关和网络,但无法将域名(如www.google.com)翻译成IP地址
四、修复 DNS
1. 测试网络连通性
首先,我们 ping 一个公网 IP 地址,来确认网络通道确实是通的。发现一直在发送
ping -c 4 8.8.8.8
图14 ping公网IP
再ping一下百度,回复ping www.baidu.com出现暂时性错误
ping -c 4 www.baidu.com
图15ping域名
能够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 5DNS ServersDNs Servers: 8.8.8.8 8.8.4.4DNS Domain: localdomainpluton@pluton:$ ping -c 4 www.baidu.comping: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.4DNS Domain: ~.
再ping一下域名还是不行
4)配置 systemd-resolved 持久化
输入
sudo nano /etc/systemd/resolved.conf
在resolve修改,记得去掉号,非常重要
[Resolve]DNS=8.8.8.8 8.8.4.4Domains=~.
然后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 NetworkManagersudo rm -f /etc/resolv.conf && sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.confping -c 4 www.baidu.com
Ubuntu 将永久使用 Google DNS(8.8.8.8),不再依赖路由器 DNS
图16 ping通了
图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: 2renderer: networKDEthernets:ens3:# 使用您的网卡名称(使用 ip a 命令查看)dhcp4: noaddresses: [192.168.1.100/24]# 替换为你的静态 IProutes:- to: defaultvia: 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.comnslookup registry-1.docker.io
如果使用DHCP
如果你使用的是 DHCP 获取IP地址,只需设置 DNS:
network:version: 2renderer: networkdethernets:ens3:# 您的网卡名称dhcp4: yesnameservers:addresses: [223.5.5.5, 223.6.6.6, 8.8.8.8]
以上就是【Linux】Ubuntu有线但不能上网怎么办?DNS解析失败终极解决方案:从 ping域名失败到通网的详细内容,更多相关资料请阅读主机测评网其它文章!














发表评论