点击查看【music163】
无论世界怎么变,唯有不变还是你,静态IP

VirtualBox网卡设置

虚拟机的网卡设置

选择其中一个虚拟机,例如master,打开设置→网络,如下图
图片1.png

设置静态IP仅有一张网卡是无法同时实现连接到外网和内网的。
外网指的是通过使用主机的网络,在虚拟机中进行上网操作,例如ping www.baidu.com
内网指的是虚拟机与虚拟机之间的互通,以及Xshell的使用,都是通过内网的IP来连接使用的。
所以接下来我们要开多一张网卡,为了方便记住,将网卡1改成内网IP。
将连接方式改成“仅主机(Host-Only)网络”;
混杂模式改成“全部允许”;
点击“MAC地址”后面的按钮进行刷新;
接入网线”复选框打钩,如果不开可能会导致虚拟机中的网络连接开关消失;
图片2.png

接下来点击“网卡2”,并启用网络连接,将连接方式改成“桥接网卡”;
同样将混杂模式改成“全部允许”;
注意“接入网线”的复选框的勾选
图片3.png

VirtualBox的主机网络管理器

网卡设置好了之后,点开管理→主机网络管理器,也可以直接快捷键Ctrl+H来打开
图片4.png

点击属性可以看到网卡的设置,选择手动设置网卡
其中在IPv4中,192.168.x.1,其中的x可以自己手动设置,支持的频段是1~254,例如192.168.45.1
图片5.png

接着将“启用服务器”关闭,DHCP服务器的作用是在虚拟机中自动分配IP,但也可能会出现自动分配的IP出现变动的情况,例如分配到的master虚拟机为101,slave为102,但下次启动的时候master可能会变成103等情况,为了保险起见将其关闭
图片6.png

虚拟机中的网络设置(20版本)

在阅读之前,确保VirtualBox网卡设置均已完成。

系统设置

注意:以下针对的是Ubuntu 20版本的设置,由于20版本与16版本系统和界面不一样,所以分开讲解。

网卡和网络管理器都设置好之后,接着先启动master的虚拟机,并打开设置→网络,可以看到有两个网卡连接了,根据上文提到的,enp0s3为第一张网卡,也就是负责内网的IP;enp0s8则为第二张网卡,负责外网的IP
图片7.png

接着进入到enp0s3(以下称为第一张网卡)的设置中,点击IPv4,将看到如下画面
图片8.png

将IPv4方式改成手动并输入如下设置,需要注意的是网关输入即为主机网络管理器中的IPv4地址;
地址默认从101开始,此处也可自行设置,最大不超过255即可;
子网掩码即为IPv4网络掩码;
DNS默认为114.114.114.114;
设置完成后点击应用
图片9.png
图片10.png

应用之后,将两个开关同时关闭,再依次开启。建议先开启第二张网卡,等网络连接的图标出现已连接时,再开启第一张网卡,目的是外网的连接有时候不一定成功,受主机电脑连接WiFi质量的影响,而如果先开启第一张网卡的话,网络连接一定是成功的,这样就无法得知外网连接的情况
若不行则可尝试重启虚拟机
图片11.png

系统文件设置

接着就是进入到hosts文件里面修改虚拟机本机的IP地址,因为考虑到master和slave要搭建完全分布式系统,所以这里都要修改到对应的IP地址

  1. sudo vim /etc/host

图片12.png
图片13.png

保存文件后,尝试如下代码,检测是否能都ping通

ping www.baidu.com
ping master
ping slave1

图片14.png
图片15.png

输入ifconfig查看虚拟机的IP,可以看到第一张网卡的IP成功连接上了,只要在FTP或Xshell上输入该网址便能成功连接
图片16.png

至此,Ubuntu 20版本的静态IP设置好了。

虚拟机中的网络设置(16版本)

在阅读之前,确保VirtualBox网卡设置均已完成。

系统设置

注意:以下针对的是Ubuntu 16版本的设置

启动虚拟机,打开系统设置(右上角的齿轮图标)→网络,可以看到有两个网络连接
16-3.png

在这里可能会出现一种情况,点击“选项”时会有以下报错,方法是重启虚拟机,输入以下代码

sudo reboot

16-4.png

重启后再打开系统设置(右上角的齿轮)→网络,可以看到消失的开关出现了
默认按顺序,第一个有线连接为第一张网卡(内网)控制,第二个有线连接为第二张网卡(外网)控制
这里选择第一张网卡为内网卡,点击“选项
16-10.png

点击IPv4设置,方法选择为“手动”,点击“添加
16-11.png

输入如下设置,需要注意的是网关输入即为主机网络管理器中的IPv4地址;
地址默认从101开始,此处也可自行设置,最大不超过255即可;
子网掩码即为IPv4网络掩码;
DNS默认为114.114.114.114;
设置完成后点击保存
16-12.png
16-21.png

系统文件设置

打开终端,进入到interfaces文件里面编辑,可以看到以下内容。这是之前设置静态IP所输入的内容,但现在需要在系统设置中重新设置,所以这部分内容需要删掉。

sudo vim /etc/network/interfaces

16-5.png

删除到如下即可
16-6.png

接着进入到hosts文件修改本机的IP,由于这是伪分布式的虚拟机,所以只需要修改master的信息即可
对于master和slave的文件修改,也是同样的修改方法。

sudo vim /etc/hosts

16-7.png

这里输入的内容即为自己手动输入的频段,频段可以参考前文中的建议,即为本虚拟机的网络IP地址,例如这里是192.168.121.103,修改后保存并退出
16-9.png

保存之后,将两个开关同时关闭,再依次开启。建议先开启第二张网卡,等网络连接的图标出现已连接时,再开启第一张网卡,目的是外网的连接有时候不一定成功,受主机电脑连接WiFi质量的影响,而如果先开启第一张网卡的话,网络连接一定是成功的,这样就无法得知外网连接的情况
若不行则可尝试重启虚拟机
16-13.png
16-14.png

尝试输入网址,显示已成功ping通

ping www.baidu.com

16-15.png

若出现ping不通的情况,除了尝试重启虚拟机,还可以尝试以下命令来重启网络服务:

sudo /etc/init.d/networking restart
sudo dhclient

最后在Xshell和ftp中,只要输入第一张网卡的IP地址,也就是enp0s3的网卡,即可连接成功
16-20.png
16-18.png

至此,Ubuntu 16版本的静态IP设置好了。

关于网卡设置的那些事儿

在最开始接触到虚拟机网络的时候,网卡默认使用的网络地址转换(NAT),这种连接方式的作用是能够使用到电脑主机的网络,也就是能在虚拟机里上网,但是却不能进行SSH有关服务,例如连接ftp。所以需要将网卡设置为桥接网卡,这样可以同时兼顾到虚拟机上网和SSH服务

但是在本章介绍的内容中,只有一张桥接网卡是不能做到静态IP的,无论在虚拟机中怎么修改IP地址,只有网络一变,虚拟机的IP就极有可能发生变动,也就是动态IP

以下是网卡工作的示意图,图中的虚拟机软件为VMware,但是工作原理与VirtualBox一致。
NAT图解.png

桥接网卡网络地址转换(NAT),本质上前者是,把电脑主机的物理网卡逻辑切分一部分给虚拟机使用(动态的),网络地址转换(NAT)就类似于VPN/代理服务器,也就是同时启动了DHCP服务器。也就是在上文“VirtualBox的主机网络管理器”中所提到的,作用是在指定的频段内自动分配IP地址,图中的192.168.62.(158~160)就是在设定的158~254的频段下依次分配的。

下图中箭头是单开一张设置为网络地址转换(NAT)网卡的走向,是直接通过主机网卡来连接的,也可以理解为有N台虚拟机,路由器就要同时分配N+1个设备(包括电脑主机)的IP地址,也就是虚拟机的地位与电脑主机的地位相等。然而这个走向也恰恰像前文所说的,多台虚拟机之间是不能互相ping通的,且只能通过虚拟机连接到主机,无法从主机连接到虚拟机,这也是无法使用SSH的原因。
NAT网络地址转换.jpg

下面图中箭头是单开一张设置为桥接网络网卡的走向。桥接网卡可以理解为,虚拟机直接使用电脑主机的网卡。由于桥接网卡可以直接使用你电脑里面多个网卡中的其中一个,所以可以直接将内网打通,也就能实现与电脑主机交互、与虚拟机之间交互。但是一旦主机的IP改变了,虚拟机中的IP也会随之变动。
桥接.png

无论是NAT方法还是桥接网卡的方法,只使用一个都无法做到静态IP,所以才需要再开一张Host-Only的网卡,以确保将分配到虚拟机中的IP地址是固定的。

只要有了Host-Only的网卡作为内网网卡,外网的网卡无论选择是NAT还是桥接都能实现与电脑主机的互通唯一最大的不同就是,NAT的方式还可以支持插网线的方式来连接到外网,而桥接只能通过WiFi等热点形式才能够连接到外网。所以在第二张网卡的设置中,可以直接将桥接网卡的设置改为网络地址转换(NAT)的设置。

如下图,修改完之后在虚拟机中查看,网络是可以正常连接的。
16-16.png
16-17.png

总的来说,NAT的优势是,不管使用的是WiFi还是网线,都能通过图中的VMware Network Adapter VMnet8虚拟服务器转接过来,即兼容性很强。VIrtualBox的原理也与VMware一致。