上一篇《VirtualBox中安装CentOS7过程记录》中讲述了如何安装VirtualBox和在VirtualBox中安装CentOS7,但是限于篇幅有很多问题没有展开,在本篇将展开介绍VirtualBox和CentOS的设置问题。
VirtualBox支持的虚拟机文件类型
VDI: Virtual Disk Image,这是VirtualBox默认使用的虚拟机文件类型。
VMDK:这是VMware默认使用的虚拟机文件类型。
VHD:这是微软出品虚拟机软件默认使用的虚拟机文件类型。
在创建虚拟机时选择哪一种看个人偏好了,不过我一般偏好VMDK,因为预研成功的时候我可以将vmdk文件交给虚拟化管理直接加载到公司的虚拟机资源池中。当然,创建之后也是可以通过VirtualBox提供的VBoxManage.exe在三种格式之间转换,这个文件位于VirtualBox的安装目录下。
VirtualBox支持的虚拟机CPU设置
默认情况下创建的虚拟机只使用了1核,有时候在宿主机硬件比较好的情况下为了有更好的体验,可以设置多核多线程,本人电脑是4核8线程,因此最大可设置为4,如下图所示:
wKioL1kkSszyFN4yAACodFqx5b0101.png-wh_50 
VirtualBox支持的虚拟机网络接入方式
点击“网络”选项时会看到如下界面:
wKioL1kkSuXB_mnwAAC7wyNMLMM821.png-wh_50 
在界面中有四个比较重要的设置:
连接方式。
界面名称。
控制芯片。
混杂模式。

虚拟机网络连接方式
VirtualBox支持7种接入方式:
网络地址转换NAT – Network Address Translation (NAT)
桥接网卡 – Bridged networking
内部网络 – Internal networking
仅主机(Host-Only)适配器 – Host-only networking。
通用驱动 – Generic networking
VirtualBox的网络连接类型设置界面如下:
wKioL1kkSwWT7GJXAACxio1b568954.png-wh_50 
这几种网络连接类型的简单对比如下:
wKioL1kkSxijwcAYAABdNWuyn4o224.png-wh_50 

虚拟机网络连接界面名称
这里其实当前宿主机上的网卡。在桥接模式下,Virtualbox会使用主机中单独的一个驱动来处理网络数据。从网络数据中过滤出虚拟机的数据。因此在桥接模式下,一定要选择当前正在使用的网卡。
虚拟机网络连接控制芯片
在VirtualBox中界面名称有如下几种:
AMD PCNet PCI II (Am79C970A);
AMD PCNet FAST III (Am79C973, the default):
Intel PRO/1000 MT Desktop (82540EM);
Intel PRO/1000 T Server (82543GC);
Intel PRO/1000 MT Server (82545EM);
Paravirtualized network adapter (virtio-net)
AMD PCNet FAST III (Am79C973)是默认推荐的,因为它几乎被所有的操作系统支持,甚至是GNU GRUB boot manager都支持。Intel PRO系列是为了支持那些不再被操作系统提供驱动的系统,如Windows Vista。Intel PRO/1000 MT Desktop 支持Windows Vista及之后的Windows系统,Intel PRO/1000 T Server可以在无需安装驱动的情况下被Windows XP识别,Intel PRO/1000 MT Server支持从其他平台上导入的OVF格式文件。
Paravirtualized network adapter (virtio-net)比较特殊,如果你选择了Paravirtualized network adapter (virtio-net),那么则需要自己保证,有对应的,特殊的软件接口,去实现对应的网络处理的。

虚拟机网络连接混杂模式选择
混杂模式(英语:promiscuous mode)是电脑网络中的术语。是指一台机器的网卡能够接收所有经过它的数据流,而不论其目的地址是否是它。
一般计算机网卡都工作在非混杂模式下,此时网卡只接受来自网络端口的目的地址指向自己的数据。当网卡工作在混杂模式下时,网卡将来自接口的所有数据都捕获并交给相应的驱动程序。

全部允许:所有数据(不论其目的地址是否是自己)都分别发送到虚拟机和主机。
允许虚拟电脑:所有数据(不论其目的地址是否是自己)仅发送到虚拟机。
拒绝:虚拟机和主机都仅接收目的地址是自己的数据。

根据VirtualBox的描述,在桥接模式下虚拟机会直接从宿主机接收到的数据包中过滤属于发送到自己的数据包,为了保证虚拟机能够接收到属于自己的数据包,这里建议选择全部允许。
注意:在宿主机使用WIFI连接到网络时,由于大部分无线网卡不支持混杂模式,所以在宿主机使用无线连接到网络时可能无法上网。网上看过一些人的文章说是通过lookback来实现,本人尝试过几次都没有成功,不知道问题出在哪里。

CentOS7的安全设置
使用桥接模式后,在学习机上建议做如下配置
关闭SELINUX
SELinux是一个安全体系结构,它通过LSM(Linux Security Modules)框架被集成到Linux Kernel 2.6.x中。它是NSA (United States National Security Agency)和SELinux社区的联合项目。在生产环境中根据需要来决定是否关闭,在学习环境中建议还是关闭掉。在CentOS7中这个设置在/etc/sysconfig/selinux文件中,可以通过vim之类的软件将“SELINUX=enforcing”改为” SELINUX=disabled”。

关闭防火墙
在CentOS中也有类似Windows中的防火墙,在CentOS7之前默认用的iptables,在CentOS7之后默认用firewall,可以执行systemctl disable firewalld来禁用防火墙。否则,在默认情况下,即使你安装了Apache或Nginx或Tomcat之类的服务器软件,你会发现在其它终端上你任然无法访问对应的端口,因为默认情况下防火墙开启且开通了较少的端口(如22端口,用SSH连接)。
注意:上面用于关闭SELIUNX和关闭防火墙的办法仅适合学习Linux服务器相关知识的学习用机上,生产环境用机上还是老老实实配置吧。

CentOS7的网络设置
设置CentOS7的IP
根据本人的经历,在CentOS7下默认网络IP配置文件名可能有变化,可以通过查看/etc/sysconfig/network-scripts目录下的文件:
命令如下:
ls -lh /etc/sysconfig/network-scripts
在本人虚拟机上效果如下:
wKiom1kkS2GCb2_GAADBZoBkksE708.png-wh_50 

这个配置文件一般以“ifcfg-enp”开头的文件,在本人的虚拟机上为“ifcfg-enp0s3”,可以通过vim来进行编辑。因为本人家里架设有路由器,为方便操作所以VirtualBox使用了桥接模式,路由器IP地址为12.168.60.1,所以CentOS的静态IP地址也是在192.168.60网段(采用静态IP的原因是可不希望每次通过SSH登录到CentOS7的时候还要先看一下它的动态IP)。
下图是本人在上一篇中讲到在VirtualBox安装CentOS7时默认情况下/etc/sysconfig/network-scripts/ifcfg-enp0s3的内容:
wKioL1kkS3jzXgDWAACrgo-m0FE239.png-wh_50 

这是另一个可以正常访问虚拟网络的CentOS上的配置信息:
wKiom1kkS4mwfGC3AAAtYk3Za2Y074.png-wh_50 
与上图相比主要有如下区别:
“BOOTPROTO=dhcp”改为“BOOTPROTO=static”,表示由动态分配IP地址改为固定IP地址(不然每次IP地址变化了,还得改SSH客户端设置里的IP地址,相当麻烦);
“ONBOOT=no”改为“ONBOOT=yes”,表示系统启动后自动连接到现有网络;
新增“IPADDR=192.168.60.148”,由于将获取IP模式从动态模式改为固定IP,所以需要指定固定IP地址。注意:实际IP地址请根据当前网段设定来设置。
新增“PREFIX=24”,表示子网掩码。我们知道IP4是由4个字节表示,为方便识别在使用时会将其转换为10禁止,如192.168.1.1,而每个字节是8bit,这里的24表示如果网段中另一个IP的前24bit与其严格匹配,那么这两个IP就是在同一个子网段中,在配置Windows网络时表达同样含义的子网掩码为:255.255.255.0。
新增“GATEWAY=192.168.60.1”,表示网关地址。注意:实际IP地址请根据当前网段设定来设置,本人将家里路由器设置成192.168.60网段,而不是路由器默认的192.168.1网段。
设置域名解析
CentOS7的域名解析服务器设置信息保存在/etc/resolv.conf文件中,可以通过vim /etc/resolv.conf来修改,下图是本人当前虚拟机里的域名解析设置:
wKioL1kkS6aQIoYjAAAjY8inGnM560.png-wh_50 
域名解析服务器的查找原则和一般程序中事件处理规则一致:如果就近的规则定义能处理,那么就由就近的处理程序处理,否则就冒泡给上一级处理程序。在宿主机和虚拟机中均未使用DNS服务,虽然设置了192.168.1.1和192.168.60.1为DNS服务器,但是对于外部域名它们是没有办法解析的,就会尝试向上寻找可以解析外部域名的DNS服务器。为保险起见,还是建议将本市所在的电信运营商提供的DNS添加进去。
设置主机名
CentOS的主机名设置存放在/etc/hostname中,可以通过vim /etc/hostname来修改,如下:
[root@centos7 ~]# vim /etc/hostname
centos7

和Windows中图形用户界面设置不同,通过上面的方式更改了虚拟机的IP配置之后,需要重启网络才能生效,重启网络的命令为:

systemctl restart network.service


VirtualBox的多网卡设置
在VirtualBox中可以支持多个网卡的,一般情况下可能用处不大,但在某些情况下这个还是有用的,比如本人现在的情况:家里拉了一根电信宽带,为方便全家人手机上网无线路由器架设在客厅,而笔记本在书房,前文说过WIFI条件下使用桥接模式时不支持混杂模式,即无法从宿主机接收到的数据包中过滤外部网络发送给虚拟机的数据包(宿主机和虚拟机可以在桥接模式下通讯)。此时面临两个选择:一、使用NAT模式虚拟机和宿主机均可上网,但在宿主机上无法通过SSH客户端访问虚拟机,使用上极大不便;二、使用Bridged networking(桥接)是宿主机可以访问虚拟机和上网(可以用SSH客户端),但虚拟机无法上网了。
无意中发现电信宽带的光猫为照顾一般家庭情况提供了两个接入口,分别支持上网和iTV。这iTV本人曾经用了几年,如今没用了,于是在光猫处一根网线接到客厅无线路由器上,一根接到书房网线插槽里并最终连接笔记本。这样书房里的笔记本可以同时使用WIFI和有线,于是给虚拟机里的CentOS7配置了双网卡,这样在虚拟机使用WIFI情况下,宿主机和虚拟机均可上网,且宿主机可通过SSH等访问虚拟机。
这就是在前面执行ls -lh /etc/sysconfig/network-scripts时可以两个网络配置的原因(分别是ifcfg-enp0s3和ifcfg-Wired_connection_1)。
下面是本篇所有配置的动画演示:

wKiom1kkTFXBldV0AAn5ysAd8Ak827.gif-wh_50


声明:本文首发于本人个人微信订阅号:zhoujinqiaoIT,其后会同时在本人的CSDN、51CTO及oschina三处博客发布,本人会负责在此四处答疑。

wKiom1j-owzQqrSXAABqxYT8jsM825.jpg