最终效果
- 各虚拟机之间能够相互访问
- 主机与虚拟机能够相互访问
- 虚拟机能访问外网(用于下载等)
- 外网无法访问虚拟机
思路
综合不同类型网卡的作用,利用两块网卡。用NAT模式实现效果3,即虚拟机能够连接外网进行软件包的更新下载工作;利用HOST-ONLY模式实现1、2效果,即虚拟机之间、主机与虚拟机之间互通。
VirtualBox/Vmware各种网络适配器模式可以参考 VirtualBox虚拟机网络环境解析和搭建-NAT、桥接、Host-Only、Internal、端口映射
补充
如果想要外部网络也能连接到虚拟机,可以将HOST-ONLY网卡换成Bridged Adapter(桥接模式),但是有一个缺点:需要联网(或者说要插网线)
实验环境
VirtualBox、centos6。其他平台或系统方法类似
具体步骤
新建HOST-ONLY网络
依次选择VirtualBox的File->Preferences->Network->Host->only Networks,点击右边的加号,即可新建一个HOST-ONLY,默认网络地址是192.168.56.1,如有需要可以右键编辑。
可以看到,多了一个网络连接vboxnet0,在用得到的时候VirtualBox会自动连接,不影响主机的正常上网。
给虚拟机添加网卡
选择虚拟机,右键设置,选择Network菜单。可以看到已经默认添加了一个NAT模式网卡,切换到Adapter2 界面,勾选Enable Network Adapter选项,选择Host-only Adapter,点击Advanced,修改Mac Address为唯一值(集群内部唯一,按照理论,统一网络内多台设备MAC地址会出现冲突,我没有实际测试)。
配置虚拟机里(以 centos 为例)
这里采用了静态分配 IP 的形式,自动分配也可以,但是可能会出现 IP 地址分配不一致的问题
1 | cd /etc/sysconfig/network-scripts |
1 | sudo vim ifcfg-eth1 |
重启系统
1 | sudo reboot |
开机之后可以通过
1 | ping baidu.com |
命令检查是否设置成功
补充
ubuntu系统添加网卡设置
VirtualBox添加网卡
ip link查看网卡设备名称
编辑 /etc/network/interfaces
添加如下信息(eth1是第二块网卡设备名称)
1 | auto eth1 |
重启服务
1 | sudo /etc/init.d/network restart |
可能出现的问题
dns解析没问题,但是网络不通
可能原因,双网卡的情况下设置了网关,有时可能会出现这种问题。
解决方案:删掉配置文件里的网关设置,参见 virtualbox虚拟机中nat和host only的网络“冲突”问题
参考
How can I fix “cannot find a valid baseurl for repo” errors on CentOS?
ifconfig command not found on CentOS 7