前言
虽然日常办公使用 Mac 已经非常便利,但偶尔还是需要使用 Linux 环境进行一些开发工作。为了方便使用,本文使用 VirtualBox 搭建了一个简单的 CentOS 开发环境,同时配置了 Host-Only 和 Nat 两种网络连接方式,保证了虚拟机中的 Linux 服务器,能够同时连接本机和互联网。
准备工作
搭建 CentOS 开发环境之前,需要先完成以下准备工作:
- 安装
VirtualBox 6.1; - 下载
CentOS-7-x86_64-Minimal-1708.iso镜像(官网下载地址)。
创建虚拟机
首先,打开 VirtualBox,然后选择 新建,创建虚拟机,然后填入名称 centos7,并选择虚拟机的类型 Linux 和版本 Red Hat (64-bit)。

然后设置虚拟机的内存大小,该设置按照实际使用场景进行调整即可。

下一步,选择虚拟硬盘的文件类型,因为不需要在其他虚拟化软件中使用,所以我们选择默认的 VDI 文件类型。然后分配文件的大小,我们暂时分配 20 GB。

选择创建,这时候我们就得到了一个 centos7 虚拟机。不过在安装之前,我们还要进行一些设置,来保证虚拟机能够正常启动和运行。
设置虚拟机
首先,我们要对虚拟机的系统启动顺序进行设置。选中列表中的虚拟机,然后选择 设置-系统,并将 软驱 移动到启动顺序的最后。

然后再选择 存储-控制器-没有盘片,点击右侧的光盘图标,分配光驱,选择前面下载的 CentOS-7-x86_64-Minimal-1708.iso 镜像文件。

设置虚拟网卡
在设置虚拟网卡前,先来了解下 VirtualBox 支持的网络模式。VirtualBox 可选的网络模式有七种,分别是 Not attached、Network Address Translation (NAT)、NAT Network、Bridged networking、Internal networking、Host-only networking 和 Generic networking。
Not attached模式相当于没插网线,因此网络是断开的,无法连接主机和外网;Network Address Translation (NAT)模式支持访问主机和外网,但是主机和外网及其他虚拟机都不能直接访问该虚拟机,NAT网络模式是 VirtualBox 默认的网络模式;NAT Network模式和Network Address Translation (NAT)模式类似,唯一的区别是该模式下,虚拟机之间可以相互访问;Bridged networking模式下,虚拟机相当于内网的一台机器,因此可以访问内网中的其他机器以及外网,内网中的其他机器也可以直接访问它,在该模式下,虚拟机之间也可以相互访问;Internal networking模式下,只有虚拟机之间可以相互访问;Host-only networking模式下,只有虚拟机和主机、虚拟机和虚拟机之间可以相互访问;Generic networking模式很少使用,本文暂时忽略;
虚拟机可以同时设置多张网卡,例如设置两张网卡,一张网卡使用 NAT 模式,支持访问外网,另一张网卡选择 Host-only networking 模式,虚拟机、主机以及其他虚拟机可以相互访问。
在不同的网络模式下,虚拟机、主机、局域网/外网之间的可访问规则,可以参考如下的表格。
| Mode | VM→Host | VM←Host | VM1↔VM2 | VM→Net/LAN | VM←Net/LAN |
|---|---|---|---|---|---|
| Host-only | + | + | + | – | – |
| Internal | – | – | + | – | – |
| Bridged | + | + | + | + | + |
| NAT | + | Port forward | – | + | Port forward |
| NATservice | + | Port forward | + | + | Port forward |
在了解了 VirtualBox 支持的网络模式后,我们来进行虚拟网卡的设置,本文采用 Host-Only 和 Nat 组合的配置方式。
选择 菜单-管理-主机网络管理器,然后创建如下的虚拟网卡。

然后配置 centos7 虚拟机的网卡,网卡 1 配置为 Host-Only,网卡 2 配置为 Nat 。

启动虚拟机
完成虚拟机配置后,点击 启动 按钮,启动虚拟机。启动过程中,需要设置 root 用户的密码,以及创建新用户。

启动安装完成之后,点击 reboot 进行重启。

然后使用 root 用户重新登录,并查看 IP 信息,发现获取不到 IP 信息。

虚拟机 IP 设置
重启虚拟机之后,发现获取不到 IP 信息,还需要配合网卡设置虚拟机 IP。首先,进入 /etc/sysconfig/network-scripts/ 目录下,查看该目录下的网卡文件,存在两个网卡 enp0s3,enp0s8。

修改 enp0s3,enp0s8 网卡配置:
1 | # Host-Only网卡,设置成静态ip,用于与主机器通信 |
然后使用如下命令重启网络,发现并没有生效。
1 | service network restart |
查阅资料后,发现需要关闭网络管理器 NetwokManager,才能够使静态 IP 生效。
1 | systemctl stop NetworkManager |
关闭 NetwokManager 之后,再次修改网卡配置,并重启网络服务,发现 IP 已经配置完成。

最后,使用 Mac 命令行连接虚拟机进行测试,输入 ssh root@192.168.56.101,终于成功登录上服务器。

现在,可以享受在 Linux 环境开发的乐趣了。
欢迎关注
欢迎关注「端小强的博客」微信公众号,会不定期分享日常学习和工作经验,欢迎大家关注交流。

