环境要求

最近在使用VirtualBox搭建一个实验环境,由于公司规定了所有的机器都不能使用固定IP,都必须由DHCP自动获取。

为了不影响公司整理的网络环境,只能把实验用的网络环境限制在使用内部IP上。因此,这个实验环境必须满足如下的需求(注意这三个需求是AND的关系,必须同时满足):
需求1:从主机可以通过静态IP访问到每一个虚拟机,从虚拟机中可以访问主机(主机也有一个固定的静态IP)
需求2:虚拟机之间组成一个由静态IP构成的网络,而且虚拟机之间可以互相访问
需求3:从主机,从虚拟机都可以访问internet
类似于这样:

基本思路

为了满足上面的三个需求,我准备在虚拟机里面加三个网卡来完成,思路如下:
eth0: 网卡1,使用 仅主机(Host-Only)适配器 的连接方式,完成 需求1,即:从主机可以通过一个静态IP访问到每一个虚拟机,从虚拟机中可以访问主机(主机也有一个固定的静态IP)
eth1: 网卡2,使用 内部网络 的连接方式,完成 需求2,即:虚拟机之间组成一个由静态IP构成的网络,而且虚拟机之间可以互相访问
eth2: 网卡3,使用 网络地址转换(NAT) 的连接方式,完成 需求3,即:从主机,从虚拟机都可以访问internet
说了这么多,其实还差一块,那么到底主机与虚拟机之间是怎么连接的呢?

细心的人可能会发现,在我们安装好VirtualBox之后,主机的系统里面会多出一个连接,VirtualBox Host-Only Network,这个是VirtualBox自动生成的一个连接;而另外一个 本地连接 就是实际的网卡的连接:

上图的两个连接,以及虚拟机里面的三块网卡互相配合,组成了下面的网络结构图:

配置主机的内网静态IP

打开 Orcale VM VirtualBox管理器,从菜单中选择 管理 – 全局设定;在弹出的窗口中选择 网络,然后再选择 仅主机(Host-Only)网络(H) 标签页,双击 VirtualBox Host-Only Ethernet Adapter, 修改里面的IP地址,为了尊重传统,我选择192.168.1.1,如下图所示;

接着,关闭DHCP服务器,如下图所示:

也就是说,现在主机由一个静态IP:192.168.1.1。之后,虚拟机就可以通过这个IP地址来访问主机了。

上述设定完成后,查看主机的地址,可以看到如下的信息;

配置虚拟机的网卡

加入第一块网卡 eth0,将 eth0 配置成如下图的方式:

接着加入第二块网卡 eth1,将 eth1 配置成如下图的方式:

注意,虚拟机之间的内网名字可以随便起,这里叫做 neta。如果在配置在第二个虚拟机的时候,也要记得选择 netca 这个内网名字,这样虚拟机之间才可以互相通信。

最后,加入第三块网卡 eth2,配置如下:

保存,启动虚拟机,安装系统。

在虚拟机内部配置网卡

在这里我使用了Oracle Linux(其实和CentOS,RHEL是一毛一样的)。在配置IP的时候,用命令行来配置各个网卡的IP信息,如果你喜欢,也可以使用GUI(NetworkManager)。

首先 eth0,这里要与主机保持的一个网段(192.168.1.),把 eth0 的IP地址配置为 192.168.1.2:

其次,配置 eth1,要注意内网我们选择 192.168.0. 这个网段,eth1 的IP地址配置为 192.168.0.2:

再次,配置 eth2, 因为是NAT地址转换的,这块网卡使用DHCP来自动获取IP,具体如下:

最后,重新启动一下网络服务:
# service network restart
查看一下我们配置后的结果:

也就是说,现在这台虚拟机有三个IP:
192.168.1.2: 和主机通信使用
192.168.0.2: 和其他的虚拟机通信使用
10.0.4.15: 是自动获取的,通过VirtualBox的地址转换功能,用来访问外网internet
如果再新建一台虚拟机,还是需要参考上面的步骤,为每个虚拟机都设置三块网卡。

对需求1的验证
通过主机来 ping 虚拟机,结果如图,成功!

需求2的验证
虚拟机之间互 ping,结果如图,成功!

需求3的验证
从虚拟机直接上外网,如图,成功!(注意:请确认你的主机和虚拟机都使用了相同的代理服务器设置)

VirtualBox搭建1主2从虚拟机的更多相关文章

  1. virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续)

    virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续) 第一次接触到 linux,不知道linux的确很强大,然后用virtualbox ...

  2. hadoop搭建杂记:Linux下虚拟机集群网络搭建

    VirtualBox搭建hadoop伪分布式模式 VirtualBox搭建hadoop伪分布式模式 master: ip:192.168.56.120 机器名: master 启动NameNode 启 ...

  3. 沉淀,再出发——手把手教你使用VirtualBox搭建含有三个虚拟节点的Hadoop集群

    手把手教你使用VirtualBox搭建含有三个虚拟节点的Hadoop集群 一.准备,再出发 在项目启动之前,让我们看一下前面所做的工作.首先我们掌握了一些Linux的基本命令和重要的文件,其次我们学会 ...

  4. 利用Vagrant and VirtualBox搭建core os环境

    利用Vagrant and VirtualBox搭建core os环境 系统环境 ubuntu 14.04 x64 vagrant 1.7.4 virtualbox 4.3.10 git 1.9.1 ...

  5. Mac OS X系统下利用VirtualBox安装和配置Windows XP虚拟机

    准备工作 下载并安装VirtualBox for Mac到https://www.virtualbox.org/wiki/Downloads下载VirtualBox <版本> for OS ...

  6. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:2.搭建环境-2.1创建虚拟机

    2.1.创建虚拟机 2.1.1. 创建虚拟机节点1 2.1.2.  创建虚拟机节点2 操作如节点1. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境所有链 ...

  7. CENTOS6.5 安装 mysql5.6 以及搭建双主

    一.Mysql5.6.10安装 1.1.必要软件 yum -y install gcc gcc-c++ autoconf automake bison ncurses-devel libtool-lt ...

  8. Mac OS X 10.10.5 中 VirtualBox 5.0 里的 Win7 虚拟机无法使用 USB 3.0 设备的解决办法(补充说明)

    上一篇文章中,我说到了如何在Mac OS X 10.10.5 中让 VirtualBox 5.0 里的 Win7 虚拟机使用 USB 3.0.最近碰巧升级 MacBook Pro 为最新的 15 吋 ...

  9. RocketMQ学习笔记(16)----RocketMQ搭建双主双从(异步复制)集群

    1. 修改RocketMQ默认启动端口 由于只有两台机器,部署双主双从需要四个节点,所以只能修改rocketmq的默认启动端口,从官网下载rocketmq的source文件,解压后使用idea打开,全 ...

随机推荐

  1. 转:String数组初始化

    近日,笔者在java编程中因为疏忽对String数组的初始化定义错误,导致程序运行出错.现将所理解的String数组在此进行说明,并对String数组初始化进行分析. //一维数组String[] s ...

  2. html5开发手机打电话发短信功能

    原文:http://www.open-open.com/code/view/1449843459332 在很多的手机网站上,有打电话和发短信的功能,对于这些功能是如何实现的呢.其实不难,今天我们就用h ...

  3. Linux中断处理驱动程序编写

    本章节我们一起来探讨一下Linux中的中断 中断与定时器:中断的概念:指CPU在执行过程中,出现某些突发事件急待处理,CPU暂停执行当前程序,转去处理突发事件,处理完后CPU又返回原程序被中断的位置继 ...

  4. 去掉小程序textarea上的完成按钮栏

    小程序textarea上会自动多一个完成按钮,如下图所示,如果是mpVue,在textarea添加     :show-confirm-bar="false"     即可.  

  5. PHP 按位与或 (^ 、&)

    今天朋友群里朋友问了下 按位与或的问题.. 按位于主要是对二进制数操作. <?php $a = 1; $b = 2; $c = $a^b; ?> 这里不是单纯的相加关系 十进制 1换算成二 ...

  6. CodeForces - 344D Alternating Current (模拟题)

    id=46667" style="color:blue; text-decoration:none">CodeForces - 344D id=46667" ...

  7. 在 Ubuntu 开启 GO 程序编译之旅

    本文将使用 putty 连接到一台阿里云 Ubuntu 16.04 服务器,在其上安装 go 语言的编译环境,旨在呈现从安装到"你好,世界!"涉及的方方面面,希望完成这个过程无须觅 ...

  8. 微博试水卖车社交电商怎样令4S“颤抖”?

        微博对社交电商的探索一直在深入,年初.微博上线了"支付"产品.从而使社交产业链实现了闭环,随后,微博又尝试售卖多种商品,不断扩大移动电商的试水范围,近期微博大规模汽车销售收 ...

  9. Selenium 工具介绍、安装、配置及使用

    概念 selenium是一款跨平台开源工具,用于web的功能完整性測试,想做压力測试的能够换软件了 先看一眼官方站 http://docs.seleniumhq.org/download/ 首先要FQ ...

  10. nhibernate实体类主键ID赋值问题

    有个同事忽然来找我,说他遇到了一个问题,在调用nhibernate 进行update数据的时候报错,说是有数据行锁定. 看代码,没啥问题. 直接在PL/SQL developer里对数据库进行插入,也 ...