虚拟机中的网络设置

一. 前言

  在使用虚拟机时碰到的一些关于网络配置的问题,此篇文章进行相关问题的总结与梳理。

二. 关于虚拟机的网络配置问题

  使用的虚拟机软件为VirtualBox(简称VB)。在VB中我们可以看到每台虚拟机在硬件设置中有一个网络选项,该网络选项中的连接方式有

1
2
3
4
5
6
1. 网络地址转换(NAT)
2. NAT网络
3. 桥接网卡
4. 内部网路
5. 仅主机(Host-Only)网络
6. 通用驱动

  起初使用VB时,连接的是无线网,因此是用了桥接网卡的网络设置,在该模式下,虚拟机相当于一台子网中的真实机,其占用真实网段的一个ip地址,因此其可以与我的宿主机互相通信,彼此都可见。   而后来插了网线后,设置了有线网段的静态ip地址,主机所处的网段发生了改变,不再处于无线网的网段中,而由于之前在虚拟机上设置了静态ip上网,所设置的ip网段为无线网网段,且虚拟机中所搭建的ceph集群ip地址都已设置好,此时进行虚拟机ip的修改会比较繁琐。因此虚拟机再使用桥接模式来设置网络已经明显不合适,需要改变网络配置模式。此处将选用NAT网络模式。   在NAT模式下,虚拟机将处于自己的一个虚拟子网,其上网相当于将虚拟子网进行NAT后再对外进行网络数据传输,就如同我们在上网时,内部的局域网要想获取互联网中的信息,需要将我们的ip地址映射成对外上网的公网ip来获取互联网中的数据,从公网角度看我们的内部局域网内部完全是透明的,外部只知道有这么一个公网ip。而NAT网络模式很类似,其对于宿主机所处的真实网段而言,其是透明的,即处于真实网段的主机都无法知道其的存在,而虚拟机可以在其所处的虚拟网段中通过NAT来给我们处于真实网段的主机发送数据。因此通过这一特性,我们就可以另外设置我们的虚拟网段为与我们原来所处无线网段相同的ip网段(但此时虽然ip地址与原来相同,但当前所处的虚拟网段与原来的无线网网段已经是两码事了),并且也不受宿主机所处网段变化的影响。

1. NAT网络模式

新建NAT网络

  我们点击VB的管理->全局设定->网络,然后点击右边的“添加新NAT网络”,新建一个NAT网络:   然后此处我们双击刚新建的NAT网络选项来进行编辑: 此处重要的是网络CIDR,该选项是设置整个虚拟网域范围的一项,此处我设置的为192.168.28.0/22,这是由于我虚拟机上的ip有三种形式192.168.28.x、192.168.30.x以及192.168.31.x,此处为了将这三种ip包括在一个网段,我们应该这么设置,由于前面192.168部分都一样,所以我们可以先将子网掩码的前面相应两部分是255.255,而我们看到28二进制为00011100,29为00011101,30为00011110,31为00011111,可以看出这几个二进制数变动的为最低两位,因此子网掩码的第三部分应设置为11111100,该值对应的十进制为252,因此子网掩码因设置为255.255.252.0,因此对应为/22(即该子网掩码二进制形式有22位1)。

建立端口映射

  由于使用了NAT网络,我们就无法从宿主机往虚拟机上通信(但从虚拟机往宿主机是可以进行数据传输的,这是个单向的过程),而我们却想在宿主机上使用Xshell连接虚拟机,怎么办呢?解决方法就是进行端口映射,此处我们点击NAT网络编辑界面的端口转发选项: 此处,主机IP就是我们的宿主机,此处不需要填写,而主机端口便是我们想要用来映射的端口,我们选择没有使用的端口,一般10000以上的端口都很少被使用,此处我使用了12000后的几个端口,而子系统IP是我们想要从宿主机上连接的虚拟机IP,而子系统端口设置为22,此处发现,我们想从宿主机上连接的虚拟机的端口都设置为了22,这是因为Xshell使用的是ssh连接,而22端口就是用于ssh连接的,因此我们想在宿主机上使用Xshell来连接虚拟机,就需要对应映射到其22端口上,然后我们在Xshell的连接主机的一栏中不再直接输入对应的虚拟机IP(因为此时从宿主机的角度上是看不到虚拟机的),而是填入127.0.0.1:12000,后面跟的是我们之前所设置的映射端口,127.0.0.1为回环地址,代表本机通信,我们也可以写成本机的IP地址。整体的思想就是我们通过将本机的相应端口(在全局设定中设置的端口)与虚拟机的ssh的22号端口做映射,虽然我们无法将数据传递到虚拟机的22号端口,但我们可以将数据传递给本机设置好的映射端口,在端口上将数据转发到相应虚拟机的22号端口,这样就可以间接进行通信了。

网络地址转换(NAT)模式与NAT网络模式

  此处要说一说VB中网络硬件选项里的网络地址转换(NAT)模式与NAT网络模式的区别,前者是VB内部已经指定好的IP网段的NAT模式,而后者是可以自定义网段范围的NAT模式。

三. 末语

  本文讲解了虚拟机软件中的NAT网络模式,并且要使宿主机能与虚拟机通信就需要做端口映射,而端口映射技巧在其他很多情况下也是有很大的用处。

你们的支持是我源源不断创作的动力!!!