作者用的是win10的主机上VmWare装Centos7.6,在同一无线网络连接下,实现其他主机ssh连接虚拟机内的linux。
一般装完VmWare虚拟机都需要与局域网中其他机器互联互通,在安装虚拟机的时候就要先考虑好用哪种模式进行连接。VmWare支持3种网络连接模式,我们先简单介绍一下3种模式然后再说具体的配置。
1、桥接模式:
所谓桥接就是把两个本来分开的网段连接起来,连接之后成为了一个更大的网络。vmware提供了一个虚拟的桥接器,他就像一座桥一样把虚拟机的网络环境和物理机的网络环境连在了一起。
所以桥接之后虚拟机就是物理机网络环境的一部分了,此时虚拟机就像和局域网中其他机器一样,它可以访问网络中的任何机器,网络中其他机器也可以访问虚拟机,当然虚拟机也可以上外网。所以这种模式下天然就是可以互联互通的,在桥接模式下,虚拟机ip地址需要与主机在同一个网段,如果需要联网,则网关与DNS需要与主机网卡一致。所以在这种模式下虚拟机必须占用局域网的IP资源,MAC地址也要唯一。
2、Host-only模式:
Host-Only模式其实就是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机通信的,Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。其网络结构如下图所示:
这种又叫“仅主机模式”,此时,虚拟机最多只能跟宿主机传输数据,但所有虚拟机之间是可以相互访问的。这种模式下虚拟机和真实的物理网络是隔离开来的,所有虚拟机可以互相访问,但局域网其他机器不可以访问虚拟机。这种模式安全限制是最严的,虚拟机不会对网络中其他机器产生任何影响,一般用于局部测试。这种模式下虚拟机没法上网,虚拟机需要的资料可以通过宿主机拷贝进去。
3、NAT模式:
如果你的网络ip资源紧缺,但是你又希望你的虚拟机能够联网,这时候NAT模式是最好的选择。NAT模式借助虚拟NAT设备和虚拟DHCP服务器,使得虚拟机可以联网。NAT模式在VMware下又称VMnet8。在这种模式下,宿主机有两块网卡,一块是真实的物理网卡(即NAT device),连接Network;一块是 VMware Network Adapter VMnet8,通过虚拟交换机(VMnet8)与虚拟机网卡进行通信。
VMnet8:VMware用于虚拟NAT网络下的虚拟交换机;
VMware Network Adapter VMnet8:这是宿主机用于与NAT虚拟网络进行通信的宿主机使用的虚拟网卡;
由于NAT device有网络地址转换功能,虚拟机网卡的数据通过 VMware Network Adapter VMnet8转发,进行地址转换后,由真实的物理网卡再转发到NetWork。此外,在NAT模式下,宿主计算机相当于一台开启了DHCP功能的路由器,而虚拟机则是内网中的一台真实主机,通过路由器(宿主计算机)DHCP动态获得网络参数。因此在NAT模式下,虚拟机可以访问外部网络,反之则不行(注:如果我们在VMware下做了NAT设置,则可以实现从外部网络访问虚拟机,下文将会讲述)。
所谓NAT就是网络地址映射,虚拟机对外访问的时候是先映射到宿主物理机上,物理机再对外进行转发,反过来,也是类似的过程。所以想实现虚拟机和其他物理机的互联互通就需要配置相应的网关代理或端口转发。此时,如果宿主物理机可以上网,那么虚拟机也是可以的。
在系统菜单下选择”虚拟机”->”设置”,网络适配器选择”自定义”:VMnet8(NAT模式)。
虚拟机CentOS7.6系统下,ifconfig命令查询IP时,发现只有ens33,没有eth0的,这不是很符合大部分人的习惯。
解决办法
编辑网卡的配置文件之前,先去vwmare 编辑>>虚拟网络编辑器>>NAT模式>>NET设置,查看虚拟机ip网关,这里是192.168.131.1,然后关闭虚拟机防火墙:切换root用户,输入以下命令
service iptables stop
chkconfig iptables off
进入目录
cd /etc/sysconfig/network-scripts/
将文件ifcfg-ens33重命名为ifcfg-eth0;(建议先备份)权限不够,可以su root切换至root用户
mv ifcfg-ens33 ifcfg-eth0
编辑ifcfg-eth0,将下面几个属性进行更改,没有就增加
NAME="eth0",
DEVICE="eth0",
BOOTPROTO="static", #这里要改为静态,就要自己增加下面四个属性
IPADDR="192.168.131.2" #ip地址的网段和网关保持一致
NETMASK="255.255.255.0"
GATEWAY="192.168.131.1" #注意网关和虚拟机的网关保持一致
DNS1="114.114.114.114"
ONBOOT="yes"
修改grub文件
cd /etc/default
vi grub
在GRUB_CMDLINE_LINUX原有的参数后面加上"net.ifnames=0 biosdevname=0",注意要与原有参数空格隔开,并放在引号内,保存退出
GRUB_CMDLINE_LINUX="rhgb quiet net.ifnames=0 biosdevname=0"
命令行运行命令
grub2-mkconfig -o /boot/grub2/grub.cfg
重启计算机,
reboot
vmware相应地会在宿主机上生成一个虚拟网卡VMware Network Adapter VMnet8
在控制面板>>网络和 Internet>>网络连接中,选中VMnet8网卡,更改其ipv4属性,打开IP设置界面,手动配置IP地址(最后一位自己选择,和虚拟机的不同即可),其中注意网段改成和虚拟机IP地址同一个网段的,网关要和虚拟机的一致,如下图所示
通过上面的设置,虚拟机可以访问局域网中其他机器,但是局域网里其他机器这时候还是不能直接访问虚拟机的,如果要访问,需要设置端口映射。当然了如果你的虚拟机是装在公用服务器上,你也可以远程连接到服务器然后连接虚拟机,否则的话还是要进行端口映射的。再次打开“虚拟网络编辑器”,如下所示。
界面是灰色的先点右下角的更改设置,这里注意192.168.131.0是虚拟交换机VMnet8的子网ip,要与之前的虚拟机ip和虚拟网卡VMware Network Adapter VMnet8区分开来,当然这三个的网关要是同一个192.168.131.1,进入NAT设置后,在端口转发下点添加,主机端口选择宿主主机没有被占用的任意端口,这里为9995,虚拟机ip地址就是eth0中的ip地址,一般ssh连接选择虚拟端口22。
Windows Defender 防火墙设置
最直接的方式是关闭防火墙,这样局域网的其他物理主机可以访问宿主主机内的虚拟机,不会被阻拦。
如果不想关闭防火墙,就要让宿主主机的防火墙允许映射的端口
依次进入 开始菜单→Windows系统→控制面板→Windows Defender防火墙→高级设置,如下图所示:
接下来按引导操作即可,选择TCP,然后端口设置为9995,当然你也可以选择允许的端口范围,根据具体情况设置,剩下的都默认下一步,最后起名字,自己随意,这里写了ssh连接。
局域网内其他物理主机连接虚拟机,这里为了方便截图,还是用本主机,不过是去连接其他主机上的虚拟机,除了虚拟机网段不同,其他配置是一样的。
首先要查看主机的局域网id,在win10的终端执行代码查看
ipconfig
这里示范的图是本机的,要连接的那个主机的地址是192.168.3.40,可以看出是同一个网段的局域网,使用Xshell连接,这时是连接其他主机的虚拟机,需要端口转换,选择9995,如下图:
至此,一切就都连接成功了,可以开始远程操作虚拟机内的系统了。