Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]
作者:天齐
一、Windows和linux虚拟机之间联网实现SSH远程连接
假如我们要给主机名为mini1的虚拟机配置ip地址,需要以下几个步骤:
在linux上查看ip地址,如果linux服务器有ip地址,让它的ip地址和windows的ip地址在同一个网段,它们之间才能联网。在linux上查看ip地址的命令为“ifconfig”:
发现eth0网卡没有配置ip地址。所以我们要给它配置网卡。输入“setup”命令弹出配置界面:
选择“网络配置”。
选择“设备配置”。
选择“eth0”。表示linux系统中第0块以太网卡。
在上图中“Name”和“Device”两项保持默认,不要修改。
其中“Use DHCP”表示使用DHCP协议来获取ip地址,也就是自动获取ip地址。我们不要让它自动获取,因为有可能获取不到ip地址。
打开Windows的服务窗口:
因为VMware启动的时候会注册一个windows服务,而这个服务有可能没有启动,必须启动才能自动获取ip地址:
由于我们不使用自动获取ip的方式,按键盘上的空格键可以将DHCP后面的“*”号去掉。我们要自己指定ip地址。那么我们怎么指定ip地址呢?
这里就要说说几种网络模式,先说NAT网络模式。
VMware自己内部会创建一个虚拟的网络交换机,把我们创建的所有虚拟机统统都连到这个内部的虚拟交换机上面,然后再连出去。所以,你要实现linux虚拟机和windows之间联网,你就必须知道VMware内部的那个虚拟的交换机的ip地址网段。
下面是NAT网络模式的原理图:
在上图中,VMware中我们创建的所有的虚拟机都会被连到它的一个虚拟交换机上,这个虚拟交换机有一个网段,而我们创建的所有虚拟机都应该和这虚拟机交换机在同一个网段。而Windows也有一个虚拟网卡(这个虚拟网卡也是VMware创建的),即vmnet8,也是连到这个虚拟交换机的。也要保证这个vmnet8虚拟网卡和我们创建的所有的虚拟机的网卡都在同一个网段,这样,它们相互之间就能连通了。它们之间就相当于组成了一个内网。所以我们要配置虚拟机的ip地址,首先要知道VMware的虚拟交换机的ip地址是多少。
知道了VMware的虚拟交换机的网段和网关ip,接下来我们就可以配置我们的虚拟机的ip地址了。
我们可以为自己的虚拟机配置除了“192.168.71.2”(交换机的网关ip)和“192.168.71.255”(在TCP/IP协议里面,255不是用来表示一台机器的ip地址,而是用来表示整个网段里面的所有机器的,如果你将虚拟机的ip配置成255的话,别的机器是找不到的,所有发给255整个地址的数据都会发送给整个网段中所有的机器)以外的其他ip地址,比如我们可以设置为“192.168.71.11”:
然后是配置子网掩码,这里必须配置成“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命令重启虚拟机。
如果没有生效,原因可能是你使用的是图形界面,需要在图形界面做如下修改:
然后在图形界面的桌面空白处点击鼠标右键,选择“Open in Terminal”打开命令行终端窗口:
使用“ifconfig”命令再次查看,就看到ip地址了:
测试linux虚拟机和windows之间的网络连通情况
在windows上打开一个命令行窗口,使用ping一下我们的linux虚拟机的ip地址:
如能够连通,我们就可能使用远程登录工具来连接我们的linux虚拟机了。
我们使用SecureCRT这个工具来远程连接linux虚拟机。该软件解压就可以使用了。
客户端和服务器端之间建立连接都是有协议的,比如浏览器要访问某个网站,需要通过http协议,这里我们要使用SecureCRT工具访问linux虚拟机,使用的是SSH2这个协议。
勾选“Open in a tab”的话,将来连接多个linux虚拟机的窗口都会以选项卡的方式展示在同一个窗口中,方便切换。
其中Hostname可以填写要连接的那台linux虚拟机的ip地址或者主机名,如果要填写主机名的话,需要在windows的一个hosts文件中添加该主机名和linux虚拟机ip之间的映射关系,否则windows在做域名解析的时候,识别不了这个主机名。
扩展知识:windows在做域名解析的时候,并不是先去找DNS服务器的,而是先找本地的一个配置文件,就是一个域名和ip的映射表,该文件就是“C:\Windows\System32\drivers\etc\hosts”:
打开这个hosts文件,将我们的linux虚拟机的ip地址和主机名的映射关系配置好:
然后测试一下,看windows能够识别linux的主机名:
接下来我们就可以使用SecureCRT工具来登录linux虚拟机了。
如果弹出如下窗口,表示询问是否缓存SSH加密的指纹信息,选择“Accept&Save”,表示同意并保存:
按照提示输入密码,并勾选保存密码,下次登录就不会再提示输入密码了:
二、vmware中的三种联网模式----nat--bridge--hostonly
假如你要把多台电脑彼此联网,怎么办呢?你需要去买一个路由器或者交换机。我们把路由器或者交换机都叫做网关,它是网络枢纽,或者说是网络的出口。
下面是局域网的机构图:
那么我们的多个linux虚拟机以及和我们的windows彼此之间怎么进行网络连通呢?
我们在使用VMware创建linux虚拟机的时候,是可以手动选择网络模式的:
有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”:
第2步:将linux虚拟机的网络模式配置成NAT模式
第3步:检查Windows上的虚拟网卡VMnet8的ip地址
从下图可以看到,我们的VMnet8这块虚拟网卡的ip地址为“192.168.71.1”
第4步:检查要连接外网的linux虚拟机的网络配置情况
注意,linux虚拟机的ip地址、windows上的VMnet8虚拟网卡、都要和VMware的虚拟交换机位于同一个网段,而且保证ip地址不能有相同。
第5步:以上几个关键部分配置好了之后,使用如下命令重启linux虚拟机的网卡:
service network restart
第6步:使用ping命令测试是否能够连接外网
总结: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地址在同一个网段。
我们不建议大家使用这种网络模式,因为你换一个环境,需要重新配置网络,比如你原来在教室里面,你的电脑连接的是教室的交换机,你回到家里面,家里的交换机的ip和教室里面的ip肯定不是一个网段。所以你每换一个环境,都需要重新配置ip地址,很不方便。
但是桥接也有一个好处,比如说老师的笔记本上的所有的虚拟机都配置成桥接模式,那么我的所有的虚拟机的网段就和你们(学生)的电脑都在同一个网段,你们就可以直接ping我的虚拟机了。我在我的虚拟机上部署一个服务,你们就可以直接访问了。比如我在我的linux虚拟机上搞了一个hadoop集群,而且我们的虚拟机都配置成了桥接模式,那么你们都可以直接访问了。如果我使用NAT模式的话,你们就访问不了。因为我和你们的电脑不在同一个网段。
桥接模式的ip配置非常简单,就是将所有虚拟机的ip都配置成真实交换机的网段,而windows电脑则什么都不用修改。
3.Host-only模式
这种模式和NAT极为相似,它内部也有一个
所有的linux虚拟机统统连到Windows上的VMnet1这块虚拟网卡上,这样的话,所有虚拟机的网关都指向VMnet1这个网关。这样windows电脑和所有的虚拟机之间也组成了一个内网,在这个内网里面彼此之间可以互相访问。
那么Host-only模式和NAT模式有什么区别呢?
区别是,VMware不会对VMnet1这个网卡提供地址转换服务,所以,在Host-only模式下,所有的linux虚拟机是连接不了外网的。