别担心,我们可以系统地一步步排查和解决这个问题。
DNS(Domain Name System)的作用是将域名(如www.google.com
)解析为 IP 地址(如142.251.42.206
),虚拟机出现 DNS 问题,通常源于以下几个原因:
1、网络连接模式设置不当:虚拟机的网络适配器模式(NAT、桥接等)会影响它如何获取 DNS 信息。
2、DNS 服务器地址配置错误:虚拟机内的 DNS 设置可能指向了错误或无效的 DNS 服务器。
3、虚拟机软件的网络服务异常:VMware 或 VirtualBox 的虚拟 NAT 和 DHCP 服务可能没有正常运行。
4、宿主机防火墙或安全软件拦截:少数情况下,宿主机的安全软件可能会阻止虚拟机的 DNS 查询请求。
5、Guest Additions / VMware Tools 未安装或有问题:这些工具提供了虚拟机与宿主机之间更好的集成,包括网络功能。
请按照以下步骤逐一尝试,每一步完成后都测试一下是否解决。
我们需要确认问题是出在 DNS 解析上,还是根本的网络连接上。
1、 Ping 一个外网 IP 地址:
ping 8.8.8.8
如果成功说明虚拟机的网络通路是好的,问题百分之百出在DNS 解析 上,请继续执行步骤 2。
如果失败说明虚拟机的根本网络连接有问题,请直接跳转到步骤 5 检查网络连接模式。
2、 Ping 一个域名:
ping www.baidu.com
如果提示unknown host
或 无法解析确认是 DNS 问题。
如果成功恭喜你,DNS 已经正常工作,问题可能已经间歇性修复或只是临时故障。
这是最常出现问题的地方。
对于 Linux 虚拟机 (Ubuntu, CentOS 等):
1、 检查当前使用的 DNS 服务器:
cat /etc/resolv.conf
查看nameserver
后面跟的地址是什么。
* 如果使用的是虚拟机 NAT 模式,这里通常应该显示的是虚拟机网关的 IP(例如192.168.xx.1
或10.0.xx.1
)。
你也可以手动修改它为公共 DNS,例如
谷歌 DNS8.8.8.8
和8.8.4.4
Cloudflare DNS1.1.1.1
国内 DNS114.114.114.114
注意:直接修改/etc/resolv.conf
可能重启后失效,因为它通常由系统服务管理。
2、持久化修改 DNS(推荐):
Ubuntu (使用 netplan)
编辑/etc/netplan/01-netcfg.yaml
或类似名称的 YAML 文件,在相应的网络接口下添加nameservers
部分。
network: ethernets: ens33: # 你的网卡名,可能不同 dhcp4: no addresses: [192.168.1.100/24] # 你的静态IP gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 114.114.114.114] version: 2
保存后应用更改:sudo netplan apply
CentOS / RHEL (使用 NetworkManager)
编辑网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0
(eth0 为你的网卡名),添加:
DNS1=8.8.8.8 DNS2=114.114.114.114
或者使用nmcli
命令修改。
重启网络服务:sudo systemctl restart NetworkManager
对于 Windows 虚拟机:
1、 打开控制面板
->网络和 Internet
->网络和共享中心
。
2、 点击你正在使用的网络连接(如“以太网”)。
3、 点击“属性”,然后双击“Internet 协议版本 4 (TCP/IPv4)”。
4、 选择“使用下面的 DNS 服务器地址”,并填入公共 DNS,
首选 DNS 服务器8.8.8.8
备用 DNS 服务器114.114.114.114
5、 点击“确定”保存。
修改完成后,打开命令提示符 (cmd
),执行ipconfig /flushdns
来清空本地 DNS 缓存,然后再次测试ping www.baidu.com
。
在虚拟机内操作:
Linux:
# 通用重启网络命令(根据系统不同选择) sudo systemctl restart systemd-networkd # 对于 systemd-networkd sudo systemctl restart NetworkManager # 对于 NetworkManager sudo service networking restart # 对于较老的 Debian/Ubuntu
Windows:
在命令提示符中运行:
ipconfig /release ipconfig /renew
步骤 4:检查虚拟机软件的网络服务(宿主机上操作)
虚拟机软件(如 VMware 或 VirtualBox)在宿主机上运行着虚拟的 DHCP 和 NAT 服务,它们负责给虚拟机分配 IP 和 DNS 地址。
VMware Workstation:
1. 在宿主机上,按Win + R
,输入services.msc
打开服务管理器。
2. 找到以下服务,确保它们正在运行,如果没有,请启动它们。
VMware DHCP Service
VMware NAT Service
3. 重启这两个服务。
VirtualBox:
VirtualBox 的相关服务通常会自动管理,你可以尝试完全关闭 VirtualBox 程序(包括后台进程),然后重新打开。
这是另一个非常关键的点,在虚拟机的设置 ->网络适配器中,你有几种选择:
1、NAT 模式(最常用):
工作原理虚拟机共享宿主机的 IP 地址上网,虚拟机软件会充当一个虚拟路由器,为虚拟机分配一个内网 IP(如192.168.xx.xx
),并自动提供 DNS 服务(通常是宿主机的 DNS)。
建议如果你是个人用户,只是想上网,首选此模式,它通常能自动处理好 DNS。
2、桥接模式:
工作原理虚拟机会像一台真机一样,直接连接到你的物理局域网中,它会从你物理路由器的 DHCP 服务器获取 IP 和 DNS 地址。
排查如果在此模式下出问题,你需要检查你的路由器是否工作正常,或者尝试在虚拟机内手动设置与宿主机在同一网段的静态 IP 和 DNS(DNS 可以设置为路由器的 IP 或公共 DNS)。
3、仅主机模式:
工作原理虚拟机只能与宿主机通信,不能上外网。
注意如果你需要上网,不要使用此模式。
请确保你的虚拟机设置在了正确的模式(推荐先尝试 NAT 模式)。
检查宿主机防火墙/安全软件临时完全关闭宿主机的 Windows Defender 防火墙或其他第三方安全软件(如 360、火绒等),然后测试虚拟机 DNS 是否恢复,如果恢复,说明是被规则拦截了,需要在安全软件里添加允许规则。
重新安装 VMware Tools / VirtualBox Guest Additions这些工具包包含了优化的网卡驱动,确保你已安装最新版本。
重置虚拟机网络设置(VMware)
在 VMware Workstation 菜单中,点击编辑
->虚拟网络编辑器
,点击右下角的还原默认设置
。注意:这会重建所有虚拟网络,现有的网络配置可能会被重置。
为了方便你操作,可以遵循这个简易流程图:
graph TD A[虚拟机DNS问题] --> B{ping 8.8.8.8 通不通?}; B -- 不通 --> C[检查网络模式(首选NAT)]; B -- 通 --> D{ping www.baidu.com 通不通?}; D -- 通 --> E[问题解决!]; D -- 不通 --> F[明确是DNS问题]; F --> G[检查虚拟机内DNS配置<br>(cat /etc/resolv.conf)]; G --> H[修改为公共DNS<br>(8.8.8.8/114.114.114.114)]; H --> I[重启虚拟机网络服务]; I --> J[问题是否解决?]; J -- 否 --> K[重启宿主机上的VMware/VBox服务]; K --> L[检查宿主机防火墙]; L --> M[重装VM Tools/Guest Additions]; M --> N[最终手段:重置虚拟网络编辑器];
希望这些步骤能帮助你解决问题!绝大多数情况下,问题都出在步骤 2 (DNS配置) 和步骤 5 (网络模式)。
文章摘自:https://idc.huochengrm.cn/dns/16231.html
评论