Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

时间:2022-02-16 15:23:56

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

作者:天齐

一、Windows和linux虚拟机之间联网实现SSH远程连接

假如我们要给主机名为mini1的虚拟机配置ip地址,需要以下几个步骤:

在linux上查看ip地址,如果linux服务器有ip地址,让它的ip地址和windows的ip地址在同一个网段,它们之间才能联网。在linux上查看ip地址的命令为“ifconfig”:

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

发现eth0网卡没有配置ip地址。所以我们要给它配置网卡。输入“setup”命令弹出配置界面:

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

选择“网络配置”。

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

选择“设备配置”。

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

选择“eth0”。表示linux系统中第0块以太网卡。

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

在上图中“Name”和“Device”两项保持默认,不要修改。

其中“Use DHCP”表示使用DHCP协议来获取ip地址,也就是自动获取ip地址。我们不要让它自动获取,因为有可能获取不到ip地址。

打开Windows的服务窗口:

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

因为VMware启动的时候会注册一个windows服务,而这个服务有可能没有启动,必须启动才能自动获取ip地址:

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

由于我们不使用自动获取ip的方式,按键盘上的空格键可以将DHCP后面的“*”号去掉。我们要自己指定ip地址。那么我们怎么指定ip地址呢?

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

这里就要说说几种网络模式,先说NAT网络模式。

VMware自己内部会创建一个虚拟的网络交换机,把我们创建的所有虚拟机统统都连到这个内部的虚拟交换机上面,然后再连出去。所以,你要实现linux虚拟机和windows之间联网,你就必须知道VMware内部的那个虚拟的交换机的ip地址网段。

下面是NAT网络模式的原理图:

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

在上图中,VMware中我们创建的所有的虚拟机都会被连到它的一个虚拟交换机上,这个虚拟交换机有一个网段,而我们创建的所有虚拟机都应该和这虚拟机交换机在同一个网段。而Windows也有一个虚拟网卡(这个虚拟网卡也是VMware创建的),即vmnet8,也是连到这个虚拟交换机的。也要保证这个vmnet8虚拟网卡和我们创建的所有的虚拟机的网卡都在同一个网段,这样,它们相互之间就能连通了。它们之间就相当于组成了一个内网。所以我们要配置虚拟机的ip地址,首先要知道VMware的虚拟交换机的ip地址是多少。

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

知道了VMware的虚拟交换机的网段和网关ip,接下来我们就可以配置我们的虚拟机的ip地址了。

我们可以为自己的虚拟机配置除了“192.168.71.2”(交换机的网关ip)和“192.168.71.255”(在TCP/IP协议里面,255不是用来表示一台机器的ip地址,而是用来表示整个网段里面的所有机器的,如果你将虚拟机的ip配置成255的话,别的机器是找不到的,所有发给255整个地址的数据都会发送给整个网段中所有的机器)以外的其他ip地址,比如我们可以设置为“192.168.71.11”:

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

然后是配置子网掩码,这里必须配置成“255.255.255.0”。何谓子网掩码?其实我们所说的那个网段“192.168.71.0”是由这个ip地址“192.168.71.11”和子网掩码“255.255.255.0”计算得来的。计算的方法就是,用“255.255.255.0”中的每一段数字去和ip地址“192.168.71.11”中的每一段数字做“与”操作。255与上任意数都等于这个任意数本身,用0与上任意数都等于0。所以要使虚拟交换机的网段是“192.168.71.0”这个网段,就必须将子网掩码配置成“255.255.255.0”。

然后是网关ip地址,这个配置成虚拟交换机的网关ip地址即可。

然后是配置主NS域名服务器的ip地址,这里我们配置成“8.8.8.8”即可。这是谷歌提供了一个公共的域名服务器。当然你也可以填写电线、移动、或者联通提供的DNS域名服务器。如果你不知道DNS是什么,你可以配置成和网关一样的ip地址。因为网关有一个功能,它可以到网络上找到真实的DNS域名服务器,这是TCP/IP协议在底层实现的功能。所以,只要你的网关能够连出去,你这台虚拟机就能够连出去。

DNS域名服务器可以配置多个,有主DNS服务器,还有次DNS服务器。

说明:ip地址其实是8位二进制的数字,最大就是8个1,也就是十进制的2的8次方,即256(从0到255)。

配置好ip地址之后,重启网卡:

srvice network restart

通过ifconfig命令再次查看ip地址,如果还是看不到ip地址的话,就使用reboot命令重启虚拟机。

如果没有生效,原因可能是你使用的是图形界面,需要在图形界面做如下修改:

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

然后在图形界面的桌面空白处点击鼠标右键,选择“Open in Terminal”打开命令行终端窗口:

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

使用“ifconfig”命令再次查看,就看到ip地址了:

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

测试linux虚拟机和windows之间的网络连通情况

在windows上打开一个命令行窗口,使用ping一下我们的linux虚拟机的ip地址:

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

如能够连通,我们就可能使用远程登录工具来连接我们的linux虚拟机了。

我们使用SecureCRT这个工具来远程连接linux虚拟机。该软件解压就可以使用了。

客户端和服务器端之间建立连接都是有协议的,比如浏览器要访问某个网站,需要通过http协议,这里我们要使用SecureCRT工具访问linux虚拟机,使用的是SSH2这个协议。

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

勾选“Open in a tab”的话,将来连接多个linux虚拟机的窗口都会以选项卡的方式展示在同一个窗口中,方便切换。

其中Hostname可以填写要连接的那台linux虚拟机的ip地址或者主机名,如果要填写主机名的话,需要在windows的一个hosts文件中添加该主机名和linux虚拟机ip之间的映射关系,否则windows在做域名解析的时候,识别不了这个主机名。

扩展知识:windows在做域名解析的时候,并不是先去找DNS服务器的,而是先找本地的一个配置文件,就是一个域名和ip的映射表,该文件就是“C:\Windows\System32\drivers\etc\hosts”:

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

打开这个hosts文件,将我们的linux虚拟机的ip地址和主机名的映射关系配置好:

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

然后测试一下,看windows能够识别linux的主机名:

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

接下来我们就可以使用SecureCRT工具来登录linux虚拟机了。

如果弹出如下窗口,表示询问是否缓存SSH加密的指纹信息,选择“Accept&Save”,表示同意并保存:

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

按照提示输入密码,并勾选保存密码,下次登录就不会再提示输入密码了:

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

二、vmware中的三种联网模式----nat--bridge--hostonly

假如你要把多台电脑彼此联网,怎么办呢?你需要去买一个路由器或者交换机。我们把路由器或者交换机都叫做网关,它是网络枢纽,或者说是网络的出口。

下面是局域网的机构图:

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

那么我们的多个linux虚拟机以及和我们的windows彼此之间怎么进行网络连通呢?

我们在使用VMware创建linux虚拟机的时候,是可以手动选择网络模式的:

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

有3种网络模式可供我们选择:桥接模式、NAT模式和仅主机模式。

1.NAT模式

我们创建的多个linux虚拟机的网卡的名称都叫做“eth0”,而NAT模式下,它有一个虚拟交换机,就是前面我们所说的VMware内部创建的一个虚拟交换机。所有的linux虚拟机都会连接到这个虚拟交换机。Windows也会通过VMnet8这块虚拟网卡连接到这个虚拟交换机。这个虚拟交换机的网段和网关ip(我们一般会把网关ip的最后一位数配置成1,这只是一个约定俗称的做法)都是可以修改的。只要知道了这个虚拟交换机的网段和网关ip,那么所有连到虚拟交换机的机器的网卡,只要都在一个网段就可以。

通过NAT模式,在windows的VMnet8这块网卡和所有的linux虚拟机的网卡之间就组成了一个虚拟的网络。而这个虚拟的网络对我们的windows的本地连接是没有任何干扰的,因为它们是两个完全不同的网络。这个虚拟网络就相当于一个内网,而我们windows的本地连接就相当于是外网。

而且在这种NAT模式下,VMware还有一个功能,就是可以让这个内网中的所有机器都能够访问外网。也就是说,只要你的windows机器能连上外网,VMware就能让这个内网中的集机器也能连上外网。因为VMware能够做一个地址转发,NAT本身就地址转发的意思。当内网中的linux虚拟机连上外网之后,外网看到的地址都是windows的本地连接的地址。

下面是我们的笔记本上的linux虚拟机通过NAT模式连接外网的配置:

第1步:检查VMware的虚拟交换机的网段和网关IP

从下图可以看出,VMware的虚拟交换机所处的网段是“192.168.71.0”,网关IP地址为“192.168.71.2”:

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

第2步:将linux虚拟机的网络模式配置成NAT模式

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

第3步:检查Windows上的虚拟网卡VMnet8的ip地址

从下图可以看到,我们的VMnet8这块虚拟网卡的ip地址为“192.168.71.1”

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

第4步:检查要连接外网的linux虚拟机的网络配置情况

注意,linux虚拟机的ip地址、windows上的VMnet8虚拟网卡、都要和VMware的虚拟交换机位于同一个网段,而且保证ip地址不能有相同。

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

第5步:以上几个关键部分配置好了之后,使用如下命令重启linux虚拟机的网卡:

service network restart

第6步:使用ping命令测试是否能够连接外网

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

总结:linux虚拟机要想连接外网的话,需要注意的几个关键点。

(1)连接外网的那台虚拟机的网卡必须使用NAT网络模式(在VMware中设置);

(2)必须确定VMware的虚拟交换机的网段和网关ip;

  比如我们的VMware的虚拟交换机的网段为"192.168.71.0",网关ip为"192.168.71.2"。

(3)必须保证linux虚拟机的ip地址、Windows的VMnet8这个虚拟网卡的ip地址、上面说的虚拟交换机的ip、这3者都在同一个网段;

  比如我们的Windows笔记本的VMnet8虚拟网卡的ip地址为"192.168.71.1",它和VMware虚拟机的网关都在"192.168.71.0"这个网段内。

(4)linux虚拟机的eth0网卡的网关(需要修改"/etc/sysconfig/network-scripts/ifcfg-eth0"文件)要设置成和VMware虚拟交换机的网关一样,
或者设置成谷歌的公共DNS,也就是8.8.8.8。子网掩码必须是"255.255.255.0"。   比如我们的linux虚拟机的eth0网卡的网关设置为了"192.168.71.2",和VMware虚拟交换机的网关一样。
(5)保证我们的Windows电脑必须能够连接外网,因为linux虚拟机是通过Windows来连接外网的。

2.桥接模式

在桥接模式下,我们的所有的linux虚拟机不再是连接到一个虚拟的交换机,而是直接连接到我们windows电脑的本地连接所连接的那个真实的物理交换机。所以,我们所有的linux虚拟机的ip地址都要和那个真实的物理交换机的ip地址在同一个网段。

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

我们不建议大家使用这种网络模式,因为你换一个环境,需要重新配置网络,比如你原来在教室里面,你的电脑连接的是教室的交换机,你回到家里面,家里的交换机的ip和教室里面的ip肯定不是一个网段。所以你每换一个环境,都需要重新配置ip地址,很不方便。

但是桥接也有一个好处,比如说老师的笔记本上的所有的虚拟机都配置成桥接模式,那么我的所有的虚拟机的网段就和你们(学生)的电脑都在同一个网段,你们就可以直接ping我的虚拟机了。我在我的虚拟机上部署一个服务,你们就可以直接访问了。比如我在我的linux虚拟机上搞了一个hadoop集群,而且我们的虚拟机都配置成了桥接模式,那么你们都可以直接访问了。如果我使用NAT模式的话,你们就访问不了。因为我和你们的电脑不在同一个网段。

桥接模式的ip配置非常简单,就是将所有虚拟机的ip都配置成真实交换机的网段,而windows电脑则什么都不用修改。

3.Host-only模式

这种模式和NAT极为相似,它内部也有一个

所有的linux虚拟机统统连到Windows上的VMnet1这块虚拟网卡上,这样的话,所有虚拟机的网关都指向VMnet1这个网关。这样windows电脑和所有的虚拟机之间也组成了一个内网,在这个内网里面彼此之间可以互相访问。

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

那么Host-only模式和NAT模式有什么区别呢?

区别是,VMware不会对VMnet1这个网卡提供地址转换服务,所以,在Host-only模式下,所有的linux虚拟机是连接不了外网的。

[文章结束]