我在 VMware Workstation 上运行的 Kali Linux 虚拟机中,网络突然无法正常使用。起初虚拟机可以通过 NAT 模式连接网络,但由于某些原因,外网访问失败。为了解决问题,我进行了多次尝试,最终成功恢复了网络连接。
这是我Kali上出现的问题:
- 无法访问外部网站(如百度)。
ping 8.8.8.8
成功,但ping www.baidu
提示“域名解析失败”。- 表明问题可能与 DNS 配置或虚拟机网络设置有关。
- 使用
nmcli device status
查看设备状态,发现eth0
未托管且未连接。/etc/resolv.conf
文件内容错误,DNS 配置可能被覆盖。
解决过程
第一步:重新配置虚拟机网络
经过排查,问题可能源自虚拟机的网络配置。以下操作恢复了虚拟机的网络连接:
- 确保网络适配器选择为 NAT 模式。
- 如果之前修改为桥接模式或其他模式,将其恢复为 NAT 模式。
- 在虚拟机中运行以下命令重启 NetworkManager:
sudo systemctl restart NetworkManager
- 检查网络设备是否已连接:
结果显示nmcli device status
eth0
已连接,Wired connection 1
正常激活。
第二步:修复 DNS 配置
在重新配置虚拟机网络后,为确保 DNS 配置正确:
- 检查
/etc/resolv.conf
文件内容:cat /etc/resolv.conf
- 如果发现 DNS 配置错误或缺失,手动编辑该文件:
添加以下内容:sudo nano /etc/resolv.conf
nameserver 223.5.5.5 nameserver 114.114.114.114
- 防止配置被覆盖,将文件设置为只读:
sudo chattr +i /etc/resolv.conf
第三步:验证网络连接
通过以下步骤验证网络恢复情况:
- 测试连通性:
ping 8.8.8.8 ping www.baidu
- 打开 Firefox 浏览器,访问百度等网站,确认页面正常加载。
结果
- 恢复 NAT 模式后,虚拟机网络恢复正常,
eth0
网络接口成功连接。 - 通过
nmcli
激活了Wired connection 1
。 - 修改
/etc/resolv.conf
后,域名解析问题解决。 - 测试
ping
和浏览器访问均通过,网络恢复正常。
经验总结
- 遇到网络问题时,首先检查虚拟机的网络模式:
- NAT 模式适合大多数场景。
- 桥接模式适合直接使用主机物理网络。
- 检查网络设备状态:
nmcli device status
- 测试连通性:
ping
测试网关和外部 IP。- 检查路由表:
ip route
- 验证 DNS 配置:
cat /etc/resolv.conf
- 常用命令与操作:
- 重启网络服务:
sudo systemctl restart NetworkManager
- 修改 DNS 配置:
sudo nano /etc/resolv.conf
- 设置只读:
sudo chattr +i /etc/resolv.conf
- 重启网络服务:
最终解决方案步骤
也就是在你尝试了前面的所有步骤都无效时,可通过以下方法解决问题:
别放弃,HOLD住!^ ^
1. 重置 VMware 的网络配置
- 打开 VMware Workstation,点击 编辑 -> 虚拟网络编辑器。
- 点击右下角的 恢复默认设置。
- 确保
VMnet8
的配置如下:- 子网 IP:
192.168.46.0
- 网关:
192.168.46.1
- 启用了 NAT 模式。
- 子网 IP:
- 应用更改并重启 VMware Workstation。
2. 重启 VMware 的 NAT 和 DHCP 服务
-
在主机(Windows)中,按
Win + R
输入services.msc
,打开服务管理器。
-
找到以下服务并分别重启:
VMware NAT Service
VMware DHCP Service
3. 确保主机的网络连接正常
- 在主机上运行以下命令:
ping baidu ping 223.5.5.5
- 如果主机网络异常,检查是否启用了 VPN 或代理,暂时禁用后重试。
4. 清理虚拟机网络配置
在虚拟机中运行以下命令:
sudo dhclient -r eth0
sudo dhclient eth0
sudo systemctl restart NetworkManager
5. 测试桥接模式
如果 NAT 模式仍无效,切换到桥接模式:
- 在 VMware 中将网络适配器设置为桥接模式。
- 在 Kali 中运行以下命令:
sudo dhclient -r eth0 sudo dhclient eth0
- 测试连通性:
ping baidu ping 223.5.5.5
6. 最后尝试:重启虚拟机和主机
- 重启虚拟机,确保最新配置已应用。
- 必要时重启主机(Windows),再启动 VMware 和 Kali Linux。
最终测试
- 检查网络接口:
ip a
- 测试路由和 DNS:
ip route cat /etc/resolv.conf
- 确认可以访问外网:
ping baidu ping 223.5.5.5
关于网络配置保存
-
确保
/etc/resolv.conf
文件不被意外修改:sudo chattr +i /etc/resolv.conf
如果需要临时修改 DNS 配置,可以取消只读限制:
sudo chattr -i /etc/resolv.conf
修改完成后再重新设置为只读。
-
备份配置文件:
- 对关键文件如
/etc/resolv.conf
和/etc/network/interfaces
做备份,方便问题排查时快速恢复:sudo cp /etc/resolv.conf /etc/resolv.conf.bak sudo cp /etc/network/interfaces /etc/network/interfaces.bak
- 对关键文件如
避免常见问题
-
避免多重网络冲突:
- 如果主机使用 VPN,确保虚拟机的网络模式与主机网络兼容。
- 如果使用桥接模式,请选择主机的有效物理网卡(如 Wi-Fi 或以太网)。
-
避免频繁切换网络模式:
- 如果当前模式稳定连接,不建议频繁切换 NAT 和桥接模式,避免引发新的问题。
-
保持网络服务运行:
- 确保虚拟机的 NetworkManager 和主机的 VMware 服务(NAT 和 DHCP)始终正常运行。
-
使用国内 DNS 服务:
- 在中国使用虚拟机时,建议配置国内公共 DNS 服务器,如:
nameserver 223.5.5.5 nameserver 114.114.114.114
- 在中国使用虚拟机时,建议配置国内公共 DNS 服务器,如:
总结
网络连接问题可能来源于多个层面,包括主机网络、虚拟机网络配置和 DNS 配置等。通过以下步骤,问题可以有效解决:
- 检查并重置 VMware 的 NAT 配置,确保虚拟网络服务正常运行。
- 检查虚拟机的网络模式(NAT 或桥接)是否配置正确。
- 清理并重置虚拟机的网络配置,确保接口激活。
- 根据需要调整 DNS 配置,避免域名解析失败。
- 测试网络连通性,确保每一步配置都正常生效。
通过这些方法,即使面对复杂的网络问题,咱也可以耐心排查并解决,避免因重装系统浪费时间和精力。希望本指南能为你提供帮助,让你在后续使用虚拟机时更加得心应手!加油!