vm虚拟机配置外网
运维 运维 19

一、第一步:配置VMware 17的虚拟网络(主机侧)

VMware的虚拟网络编辑器(Virtual Network Editor)是管理虚拟网络的核心工具,需确保NAT模式的配置正确(NAT模式是虚拟机通过主机网络访问外网的默认方式)。

1. 打开虚拟网络编辑器

  • 启动VMware 17,点击顶部菜单栏「编辑」→「虚拟网络编辑器」;

  • 若提示「需要管理员权限」,点击「更改设置」(输入主机管理员密码)。

2. 配置NAT模式网络(关键步骤)

VMware默认创建了一个VMnet8虚拟网卡(对应NAT模式),需确认其设置正确:

  • 选中「VMnet8」(类型为「NAT」);

  • 勾选「使用本地DHCP服务将IP地址分配给虚拟机」(允许虚拟机自动获取IP);

  • 点击「NAT设置」,查看NAT网关IP(默认是「192.168.122.1」,记下来,后续虚拟机需要用这个作为网关);

  • 确认「子网IP」(默认是「192.168.122.0/24」,即子网掩码「255.255.255.0」);

  • 点击「确定」保存设置。

3. 验证虚拟网络服务

确保VMware的NAT服务DHCP服务正在运行(主机侧):

  • 打开主机的「服务」(Windows:按Win+R输入services.msc;Linux/Mac:用systemctl命令);

  • 找到「VMware NAT Service」和「VMware DHCP Service」,确认其状态为「正在运行」(若未运行,右键点击「启动」)。

二、第二步:配置虚拟机内部网络(guest OS 侧)

Linux虚拟机(如Ubuntu、CentOS)为例,需确保虚拟机的网络适配器选择了正确的模式(NAT),并配置了正确的IP、网关、DNS

1. 确认虚拟机网络适配器模式

  • 选中目标虚拟机,点击「虚拟机」→「设置」;

  • 切换到「硬件」标签页,选择「网络适配器」;

  • 确保「网络连接」选择「NAT模式(使用VMnet8虚拟网络)」;

  • 点击「确定」保存设置。

2. 配置虚拟机内部网络(Linux系统)

Linux虚拟机需通过DHCP自动获取IP(推荐)或手动设置静态IP(适合固定IP需求)。

方式1:DHCP自动获取IP(推荐,简单高效)
  • 打开虚拟机终端,运行以下命令重新获取DHCP IP

  sudo dhclient -r  # 释放当前IP(可选)
  sudo dhclient     # 从DHCP服务器获取新IP
  • 验证IP是否获取成功:

  ip a  # 查看网络接口IP(通常是eth0或ens33)

正常输出应包含192.168.122.x的IP(如192.168.122.100),子网掩码255.255.255.0

方式2:手动设置静态IP(适合固定IP需求)

若DHCP无法获取IP(如网络环境限制),可手动设置静态IP:

  • 编辑网络配置文件(以Ubuntu 20.04+为例,使用netplan):

  sudo nano /etc/netplan/00-installer-config.yaml  # 打开配置文件
  • 修改配置(替换为VMnet8的子网信息):

  network:
    ethernets:
      ens33:  # 网络接口名(需与`ip a`中的一致)
        addresses: [192.168.122.101/24]  # 静态IP(192.168.122.x,x范围1-254,不与DHCP冲突)
        gateway4: 192.168.122.1  # NAT网关IP(必须与VMnet8的NAT设置一致)
        nameservers:
          addresses: [8.8.8.8, 114.114.114.114]  # DNS服务器(谷歌+国内公共DNS)
    version: 2
  • 应用配置:

  sudo netplan apply  # 应用修改

3. 验证网络连通性(关键)

  • 第一步:ping NAT网关(确认虚拟机与VMware虚拟路由器的连接):

  ping 192.168.122.1  #  ping NAT网关(默认是这个)

正常输出应收到回复(如64 bytes from 192.168.122.1: icmp_seq=1 ttl=64 time=0.5 ms)。

  • 第二步:ping外网IP(确认能否访问外网):

ping 183.2.172.17

正常输出应收到回复(如64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=12.3 ms)。

  • 第三步:ping域名(确认DNS解析正常):

ping www.baidu.com

正常输出应收到回复(如64 bytes from 180.101.49.12: icmp_seq=1 ttl=56 time=20.1 ms)。

三、常见问题排查(若仍无法连通)

若上述步骤完成后仍出现“Network is unreachable”,检查以下几点:

1. 虚拟机网络接口未启用

  • 运行ip link show,确认网络接口(如ens33)状态为UP(如<BROADCAST,MULTICAST,UP,LOWER_UP>);

  • 若为DOWN,运行sudo ip link set ens33 up启用接口。

2. 默认网关未配置

  • 运行ip route show default,确认默认网关为192.168.122.1(NAT网关);

  • 若未配置,运行sudo ip route add default via 192.168.122.1 dev ens33添加网关(临时)。

3. 主机防火墙阻止

  • 主机的Windows防火墙或第三方安全软件可能阻止VMware虚拟网络的通信;

  • 暂时关闭主机防火墙(如Windows:「控制面板」→「防火墙」→「关闭防火墙」),测试是否能连通。

4. VMware虚拟网络编辑器重置

  • 若虚拟网络配置混乱,可点击虚拟网络编辑器中的「还原默认设置」,重置所有虚拟网络(注意:会删除现有虚拟网络配置,需重新设置)。

总结

解决虚拟机“Network is unreachable”的核心是确保VMware虚拟网络(NAT模式)配置正确,并让虚拟机获取到正确的IP、网关、DNS。通过上述步骤,90%以上的网络问题都能解决。

若仍有问题,建议重启虚拟机重新安装VMware Tools(增强虚拟机与主机的网络交互),通常能解决剩余问题。

xshell无法连接到虚拟机解决:

修复虚拟机网络(获取 IP 地址)

1. 确认网络模式

确保 VMware 虚拟机网络适配器已设置为 NAT 模式(推荐)或 桥接模式

  • 关闭虚拟机 → 右键虚拟机 → 设置网络适配器 → 选择 NAT 模式 → 启动虚拟机。

2. 通过 DHCP 自动获取 IP

在 CentOS 7.9 终端执行以下命令,强制网卡 ens33 获取 IP:

# 释放旧 DHCP 配置(如有) 
dhclient -r ens33 
# 重新从 DHCP 服务器获取 IP 
dhclient ens33 
# 再次检查 IP(此时应显示 inet 字段) 
ip addr show ens33

成功标志:输出中出现类似 inet 192.168.124.xxx/24 的 IPv4 地址(如 192.168.124.130)。

3. 若 DHCP 失败,手动配置静态 IP

编辑网卡配置文件(CentOS 7 路径固定):

vi /etc/sysconfig/network-scripts/ifcfg-ens33

修改以下关键配置(按实际网络环境调整,以 NAT 模式为例):

BOOTPROTO=static # 静态 IP 模式 
ONBOOT=yes # 开机启用网卡(必须) 
IPADDR=192.168.124.100 # 静态 IP(NAT 模式下建议 192.168.124.x 网段) 
NETMASK=255.255.255.0 # 子网掩码 

保存后重启网络服务:

systemctl restart network # 检查 IP 是否生效 ip addr show ens33

永久配置DHCP

sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=dhcp
ONBOOT=yes

配置DNS(否则docker无法下载镜像):

vi /etc/resolv.conf

nameserver 114.114.114.114
nameserver 8.8.8.8

永久关闭防火墙

  sudo systemctl stop firewalld
  sudo systemctl disable firewalld
  sudo systemctl mask --now firewalld
  sudo systemctl status firewalld  # 验证

容器开机自启

#创建容器时设置
docker run -d --name my_container --restart=always nginx


#更新已有容器
docker update --restart=always 容器名

ens33网络不存在了,导致无法访问到虚拟机ip

ip a show ens33  #查看ens33网络是否开启
ip link set ens33 up   #开启ens33网络
dhclient -v ens33 #手动触发DHCP获取
ip a  #查看全部网络

vm虚拟机配置外网
http://111.180.147.175:37008/archives/vmxu-ni-ji-pei-zhi-wai-wang
作者
iYll
发布于
更新于
许可