温馨提示×

ubuntu虚拟机如何解决网络故障

小樊
36
2025-12-14 11:22:31
栏目: 云计算

Ubuntu 虚拟机网络故障排查与修复

一、快速定位流程

  • 在宿主机确认可上网(例如能访问外网),再检查虚拟机软件的网络适配器:确保已启用,连接方式优先用 NAT 验证连通性,必要时切换到 桥接仅主机 做 A/B 测试。
  • 进入 Ubuntu 检查网卡与地址:运行 ip a,确认有类似 ens33/eth0 的接口且存在 inet 地址;若无地址,执行 sudo dhclient 接口名 触发 DHCP。
  • 检查默认路由:运行 ip route,应存在 default via 网关IP dev 接口名;若网关与子网不匹配或缺失,删除错误默认路由并添加正确网关。
  • 分层测试连通性:先 ping 默认网关,再 ping 外网 IP(如 8.8.8.8),最后 ping 域名(如 google.com)。IP 通而域名不通通常是 DNS 问题。
  • 检查 DNS:查看 /etc/resolv.conf 是否有 nameserver(如 8.8.8.8);若使用 systemd-resolved,用 resolvectl status 查看解析状态。
  • 检查本机防火墙:运行 sudo ufw status,必要时临时关闭验证是否被策略阻断。
  • 仍未恢复时,重启虚拟机、宿主网络与虚拟机软件;必要时重装增强工具(VMware Tools / VirtualBox Guest Additions)。

二、按场景的修复要点

  • NAT 模式
    • 在虚拟机设置中勾选 ConnectedConnect at power on,模式选 NAT;重启后确认 ip a 有地址。
    • 若 IP 正常但外网不通,检查 ip route 的默认网关是否与 NAT 子网匹配(例如 192.168.240.0/24 对应网关 192.168.240.2),不匹配则修正。
    • 在宿主机检查 VMware NAT ServiceVMware DHCP Service 是否运行;在虚拟网络编辑器中核对 VMnet8 的子网与网关。
  • 桥接模式
    • 确认宿主机网络可用,虚拟机设置选 桥接;若桥接突然失效,打开虚拟网络编辑器,核对桥接到正确的宿主机网卡(如 WLAN以太网),不一致请修正后重试。
    • 仍失败时,可在编辑器中选择 还原默认设置,再重新配置桥接。
  • 仅主机模式
    • 该模式默认无法访问外网,仅能与主机通信;需要外网时请改用 NAT桥接
  • 界面无网络图标或“有线连接”消失
    • 多为 NetworkManager 异常:编辑 /etc/NetworkManager/NetworkManager.conf,将 managed=False 改为 managed=True;停止服务并删除状态文件后重启:
      • sudo systemctl stop NetworkManager
      • sudo rm /var/lib/NetworkManager/NetworkManager.state
      • sudo systemctl start NetworkManager

三、配置与持久化

  • 使用 DHCP(推荐)
    • 编辑 Netplan 配置(文件名可能不同,如 /etc/netplan/01-netcfg.yaml50-cloud-init.yaml):
      • network:
        • version: 2
        • ethernets:
          • ens33:
            • dhcp4: true
    • 应用:sudo netplan apply(远程环境可用 sudo netplan try 降低断连风险)。
  • 使用静态 IP
    • 在 Netplan 中设置地址、网关与 DNS(注意接口名与缩进):
      • network:
        • version: 2
        • ethernets:
          • ens33:
            • dhcp4: no
            • addresses: [192.168.1.100/24]
            • gateway4: 192.168.1.1
            • nameservers:
              • addresses: [8.8.8.8, 8.8.4.4]
    • 应用:sudo netplan apply。
  • 仅 DNS 异常
    • 临时写入 DNS:echo “nameserver 8.8.8.8” | sudo tee /etc/resolv.conf;若由 systemd-resolved 管理,优先用 resolvectl 配置或在 Netplan 的 nameservers 中设置以持久化。

四、常见现象与对应处理

  • 有 IP 但 ping 不通外网:多为默认网关错误或缺失,按 ip route 修正为 NAT/桥接网段的网关(如 192.168.240.2)。
  • IP 与网关不在同一网段:删除错误默认路由并添加正确路由(例如 sudo ip route add default via 192.168.240.2 dev ens33)。
  • 能 ping IP 但域名不通:检查 /etc/resolv.confresolvectl status,补充 8.8.8.8/8.8.4.4 等 DNS。
  • 桥接连不上网:虚拟网络编辑器里桥接的宿主机网卡选择错误(如选到未使用的 WLAN),改为当前上网的 WLAN/以太网;必要时“还原默认设置”。
  • 服务未运行:宿主机 VMware NAT/DHCP 服务未启动,启动后再测;虚拟机内 NetworkManager 异常按“界面消失”步骤修复。
  • 防火墙阻断:临时关闭 ufw 验证,若恢复则调整规则放行所需流量。

五、命令清单与最小复测

  • 查看与获取地址
    • ip a
    • sudo dhclient -v ens33
  • 路由与连通性
    • ip route
    • ping -c 4 默认网关IP
    • ping -c 4 8.8.8.8
    • ping -c 4 google.com
  • DNS 与解析
    • cat /etc/resolv.conf
    • resolvectl status
  • 服务与策略
    • sudo ufw status
    • sudo systemctl restart NetworkManager
  • 日志
    • journalctl -u NetworkManager
    • dmesg | grep net
  • 最小复测顺序:ip a → ip route → ping 网关 → ping 8.8.8.8 → ping 域名 → resolvectl status。

0