一、前言

作为一个开发人员,为了提升自身能力,需要不断学习新技术和模拟问题场景尝试解决问题。

使用虚拟机作为演练环境是个不错的方案,默认情况下宿主机与虚拟机不能正常通信,本篇将介绍具体步骤解决通信问题。

二、宿主机设置

安装好 VMWare Workstation 时会自动在宿主机中安装 2 块虚拟网卡:VMnet1 和 VMnet8。

VMnet1 用于主机模式,VMnet8 用于 NAT 模式,它们的区别请读者自行百度。

这里我们使用 VMnet8 网卡进行设置,如下图:

我们给虚拟网卡设置 192.168.2 网段配置。

三、虚拟机设置

主界面 -> 编辑 -> 虚拟网络编辑器

同样的,此处我们也选择 VMnet8 进行网段设置。

由于我们在宿主机的虚拟网卡中设置默认网关为 192.168.2.1,因此为了可以正常通信,虚拟机的网段必须在 192.168.2 网段。

如果上边截图步骤3无法修改网关,那么需要修改图中左下角子网的网段。

四、虚拟机系统设置

测试使用 Centos 7 系统

4.1 设置静态 IP

1
vim /etc/sysconfig/network-scripts/ifcfg-ens33 

注意:ifcfg-ens33 中,ens33 为网卡名称,读者可通过 ifconfig 查看。

向文件添加/修改如下内容:

1
2
3
4
5
6
7
BOOTPROTO=static
IPADDR=192.168.2.3
GATEWAY=192.168.2.1
NETMASK=255.255.255.0
DNS1=8.8.8.8
DNS2=8.8.4.4
ONBOOT=yes

其中,子网掩码和默认网关的值与宿主机设置的一致;IP 地址设置在 2 网段即可。

保存文件,重启网卡:

1
systemctl restart network.service

五、测试

在宿主机 ping 虚拟系统 ip 或反向 ping 。

如果 ping 通,说明设置成功,宿主机和虚拟机系统可以正常通信。

如果 ping 不通,可尝试关闭防火墙:

1
chkconfig iptables off 或 systemctl stop firewalld.service

六、补充

1)如果配置多台虚拟机系统,还需要修改主机名:

1
vim /etc/hostname

修改名称保存即可。

2)将主机名和 IP 进行绑定:

1
vim /etc/hosts

3)命令行和桌面模式切换

1
2
3
4
5
# 切换成命令行模式
systemctl set-default multi-user.target

# 切换成桌面模式
systemctl set-default graphical.target

执行命令后重启系统即可。