VirtualBox中CentOS7主机适配器(Host-only Adapter)网络配置

最近使用 VirtualBox 安装 CentOS 7 虚拟集群环境,为实现主机网络访问虚拟机、虚拟机与虚拟机之间网络互访,VirtualBox 默认的 NAT 网络链接方式是确定不能知足了,之前经常使用的桥接网络方式此次也不行不通了,缘由是我在公司的网络环境下搭建,我写了个脚本把我主机网段的IP都跑了一遍,发现剩余的可用IP都是被限制了的,我只能研究 Host-only Adapter/主机适配器 模式来解决,借鉴不少相关的博文,写得乱七八糟的,害我走了很多弯路,折腾了三个晚上,终于配置完成,我以为颇有必要将此次的配置过程及时总结下来。shell

使用 CentOS 7 NetInstall(最小安装盘)安装的CentOS默认是没有配置网络的,VirtualBox 默认 NAT 网络链接方式都有还没能连通网络的,请先看这篇文章:编程

CentOS 7 网络设置及静态IP配置vim

1、配置搭建流程

  • VirtualBox 管理 --> 全局设定 --> 网络 ,全局添加一个 Host-only Adapter ,本质其实就是在主机新增一个虚拟网卡,添加完成后会发现主机多出了一个网卡(这一步必须配置,不然下一步将会找不到界面名称):服务器

    • 配置示意图以下所示:
    • 主机多出一个网卡,地址即为上面设置的网关:
  • 在虚拟机关闭状态下,去到虚拟机的 设置 --> 网络 --> 链接方式 , 选择 仅主机(Host-only Adapter)适配器 ,配置以下所示:
    网络

  • 同上的方式再去另一台虚拟机配置;.net

  • 打开两台虚拟机, 再次使用 ip address 查看 IP ,能够看到两台虚拟机自动分配了不一样的 IP ,这两个 IP 都是第一步配置主机虚拟网卡 ipv4 网段下的,且虚拟机与虚拟机之间可以 ping 通,以下所示:rest

    细心留意的会发现,两个 IP 是相邻的,这是由于我两台虚拟机都是使用的 dhcp 自动分配 IP , IP 为何是从101开始呢?这是由于我第一步配置主机虚拟网卡的时候服务地址默认是100,我没有改,以下图所示:code

  • 使用主机向两台虚拟机之间 ping ,搭建成功确定是可以 ping 通的,以下图所示:blog

2、Host-only Adapter 没法访问外网的解决

默认的 NAT 网络链接模式顺利配置联网后是能够访问到外网的,搭建主机适配器(Host-only Adapter)模式以后,发现是不能访问外网的, ping baidu.com 没法 ping 通, cat /etc/resolv.conf 发现以前联网自动生成的DNS解析也空了,缘由是更改联网方式后,重启系统时,网卡重启时没法链接到外网也就不存在自动生成的DNS解析了(验证这个缘由也很简单: ping 一个外网IP,或者将DNS手动配置以后重启网卡,仍是同样的状况天然也就不是DNS的缘由,因此不少博文建议配置DNS解决这个问题彻底就是没有实践过的错误方式):dns

以前能够访问外网,更改主机适配器(Host-only Adapter)模式以后为何又不能访问外网了呢?其实 host-only 意思就很明确了,就是仅仅主机模式,这种技术提供的是主机和虚拟机之间的网络互访,虚拟机与主机的之间就至关于构成了一个局域网,在一些特殊的场景下,这个模式就是为了提供一个无外网干预的内网模拟环境,而不是提供虚拟机访问Internet的技术;

不过,真要将 Host-only Adapter 连上Internet也不是不能够,Windows 作主机的可使用其自带的网络共享的设置,将网络共享到虚拟机内(Windows 不适合作编程,仍是尽早脱坑,Windows 怎么作网络共享我这篇文章就不细说了,可自行百度)。Linux 下实现原理也是网络共享,只是共享的方式须要本身手动配置一下将主机网卡和虚拟网卡实现网络共享,实现方式一样有 NAT 模式和桥接模式,NAT 模式是最简单的,我给出 NAT 模式的实现方式(个人主机是Ubuntu):

  • 主机上打开IP转发, sudo vim /etc/sysctl.conf 打开编辑,在文件最后加入:

    #1表示转发;0表示不转发
    net.ipv4.ip_forward = 1
  • :wq 保存退出以后, sudo sysctl -p /etc/sysctl.conf 生效IP转发,sudo /etc/init.d/networking restart 重启网络,IP转发就生效了;

  • 开启 NAT , sudo vim /etc/rc.local 打开编辑,在文件 exit 0 以前加入:

    iptables -F #清除掉以前全部的iptables规则
    iptables -P INPUT ACCEPT #容许接收数据包
    iptables -P FORWARD ACCEPT #容许数据包IP转发
    #我主机是Ubuntu 14.05,网卡为eth0,最新的Ubuntu使用新的Linux内核,网卡名字可能不同
    #另外,无线网的网卡也是不同的,因此随本身的实际的网卡而变化
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  • :wq 保存退出以后, 须要重启才能生效(在 /etc/rc.local 中配置是为了主机重启后能自动开启NAT),若是想要马上生效,依次将上面写入文件的命令在shell中执行完成就马上生效了。

  • 主机配置完成后,虚拟机必定要配置静态IP,不然仍是没法连到外网(不知为什么必定要配置静态IP才行,有知道的麻烦给我留下评论),静态IP配置方式:

    • vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 打开编辑(这个文件名可能会因不通计算机硬件而不一样),修改以下内容:

      BOOTPROTO=static #默认dhcp,改成static,表示启用静态IP地址
      ONBOOT=yes #开启自动启用网络链接
      IPADDR=192.168.56.166 #静态IP地址,静态IP必定要和最开始主机适配器配置的在同一个网段,且IP惟一未被使用
      GATEWAY=192.168.56.1 #网关,需和最开始主机适配器配置的网关一致
      NETMASK=255.255.255.0 #子网掩码,需和最开始主机适配器配置的网关一致
      DNS1=8.8.8.8 #第一个dns服务器,BOOTPROTO=static 的时候不会自动生成DNS解析,最好在这里也一并配置上
      #8.8.8.8 是Google提供的一个免费DNS服务器ip
    • :wq 保存退出以后,service network restart/etc/init.d/network restart 重启网络以后就生效了

在虚拟机向主机发起 ping 验证是否 ping 通, ping baidu.com 验证可否 ping 通,都能 ping 通,那么至此 VirtualBox 中 Host-only Adapter/主机适配器 模式的网络链接就搭建起来了。

相关文章
相关标签/搜索