注:
文章所述内容结合我当前环境,不保证向前或向后兼容,如有问题请检查软件环境是否一致(包括软件版本、操作系统)
Virtual Box
版本:6.1.22
客户机操作系统:
CentOS 7.x
理论上软件大版本号相同的环境文章所述方式都适用
参考:
Virtual Box用户手册
写在前面
首先科普下Virtual Box
虚拟机的几种主流的网络设置方式,先上图(来源官方文档)
这里我给解读下,上图说明的是不同的网络设置方式对应于宿主机、宿主机同网段的其他主机、外网、虚拟机之间的互访性。
Host-only
:仅主机模式虚拟机和宿主机、虚拟机之间能互通,但是不能访问外网,虚拟机和宿主机同网段的其他主机不能互通
这种模式相对来说比较专业,如果计算机网络基础比较好的同学可以定制实现所有其他网络模式能实现的 功能
Internal
:内网模式虚拟机之间能互通、不能访问外网、虚拟机宿主机之间不能互通、虚拟机和宿主机同网段的其他主机不能 互通
Bridged
:桥接模式功能最全面的,真实的模拟局域网环境,虚拟机和物理主机拥有对等的地位,能访问外网,和同一网段的 主机/虚拟机之间都能互通
会占用局域网
IP
地址,如果办公电脑频繁的接入不通网络,可能会导致虚拟机IP
冲突,需要频繁 的配 置虚拟机IP
NAT
:地址解释默认可以访问外网,可以访问宿主机、宿主机同网段的其他主机,但宿主机、宿主机同网段的其他主机不 能访问虚拟机,虚拟机之间也不能互通
如果只是简单的希望虚拟机能联网这种模式最简单,而且是默认的网络设置模式
NATservice
:这个我也还没搞清楚,看名称应该和NAT
模式差不多略
VM
:虚拟机
Host
:宿主机
Net/LAN
:外网/局域网
+
代表具有互访能力,Port forward
代表可以通过配置宿主机的端口转发实现
目标
我们的目标是实现类似于桥接模式的那种局域网虚拟机主机互通并且能够访问外网的网络模式,以满足我们日常架设本地服务器测试环境的需求。但是又不想使用桥接模式,因为会占用真实局域网的IP
地址,这点对于管理严格一点的公司内网来说非常棘手;切换网络容易产生IP
冲突,就要针对虚拟机更改IP
配置,非常的麻烦。
那哪种模式才能满足我们的需求呢?
以上介绍的单纯任何一种模式都无法满足,就算能满足也要做相应的设置,而不是默认配置完就能支持。比如Host-only
模式就可以通过配置宿主机物理网卡和虚拟的网卡之间进行网络共享实现。但是考虑到不通操作系统(例如:Mac OS X、Windows)设置的方式肯定存在差异,没法做到跨平台,换一个操作系统部署同一套环境免不了学习成本,所以这种方式不予考虑。
那还有没有其他方式呢?
答案是有的,不过需要结合几种网络模式来实现。
这里我们采用双网卡+Host-only+NAT
网络模式来实现。
行动
虚拟机管理软件是支持定制硬件的(当然这里所说的硬件是指软件模拟的),所以添加网卡就可以满足。
假设你已经拥有了一台安装好CentOS 7.x
的虚拟机
Virtual Box
侧边栏选中你要配置的虚拟机,我这里是centos7-origin
,点击右边的设置
选中侧边栏的网络一栏,点击”网卡1“标签页,配置连接方式为“仅主机网络”,界面名称选默认的就好
点击“网卡2”标签页,配置连接方式为“网络地址转换”,注意要勾上“启用网络连接”的选框。如果有需要,你也还可以配置“网卡3”、“网卡4”。这里我们只需要配置两张网卡
按以上步骤添加好网卡启动虚拟机
输入ip addr
命令,此时能看到两张网卡,依次为前面我们设置的Host-only
、NAT
模式
cd /etc/sysconfig/network-scripts && ls
可以看到存在ifcfg-enp0s3
这个网卡的配置文件,后缀对应的就是前面看到的网卡名
cp ifcfg-enp0s3 ifcfg-enp0s8
拷贝ifcfg-enp0s3
命名ifcfg-enp0s8
(对应前面的第二张网卡名)
nmcli con show
(使用这个命令需要NetworkManager
这个服务是开启的)查看网卡的UUID
并通过nmcli con show > ~/uuid.txt
记录到文件以备修改网卡配置用(这里文件名和路径自己定,也可以同我一样放在家目录,因为我没有用ssh
工具连接虚拟机,到时候给网卡设置上对应的UUID
没法复制粘贴,输入会比较麻烦,所以先把查看到的UUID
信息输出到文件,修改网卡配置文件时可以读入文件的内容方便编辑)
我们采用静态IP
的方式配置Host-only模式的网卡,也就是enp0s3
这块
回到Virtual Box主界面点击菜单管理->主机网络管理器,弹出对话框如下
这里采用固定IP
配置,网络选项卡->手动配置如上
ipv4地址:192.168.56.1
ipv4网络掩码:255.255.255.0
配置虚拟机Host-only
模式的网卡vi ifcfg-enp0s3
BOOTPROTO=none // 不使用动态IP服务DHCP
ONBOOT=yes // 开机启动网卡
IPADDR=192.168.56.104 // 静态IP地址
GATEWAY=192.168.56.1 // 网关地址
NETMASK=255.255.255.0 // 子网掩码
注意,网段需要跟上面主机网络配置的网卡处于同一网段,网关地址这里设置为主机网络配置的网卡地址一致
接着编辑enp0s8
这张网卡,vi ifcfg-enp0s8
命令模式下光标移动到最后一行读入我们之前保存的网卡UUID
文件: r ~/uuid.txt
方便修改。因为这里是NAT模式,所以只要修改以上四个地方。
NAME=epn0s8
DEVICE=epn0s8 // 网卡名
// 细心的读者可能会发现,这两个配置项跟我们要配置的网卡名是相同的,实际上也是如此
systemctl restart network
重启网络
ip addr
查看网卡是否配置成功,如上说明配置没问题
依次测试Host-only
模式访问宿主机、NAT
模式访问宿主机、访问外网
测试宿主机访问虚拟机
总结
这样,整个网络便搭建好了,接着就可以欢乐的搭建本地服务器测试环境了
参考:
Virtual Box用户手册