VirtualBox 虚拟机网络连接之桥接模式

目录
[隐藏]

接上篇“VirtualBox 虚拟机网络连接之NAT”。上篇提到了在网络地址转换(NAT)模式下,因为不在同一个网段,宿主机是无法ping通虚拟机的。本文将解决该问题,同时学习一种新的连接方式--桥接模式。  对上文有兴趣的请戳这里:VirtualBox 虚拟机网络连接之NAT

1、环境配置

    宿主机系统:Windows 10

    虚拟机系统:CentOS 7.3-1611-Minimal

    虚拟机软件:VirtualBox

    基于上文已经安装好的系统,在Virtual中修改其网络设置,将 网卡1 的网络地址转换(NAT)停用,然后将网卡2 连接方式设置为“桥接网卡”,如下图:

                             

                             

设置“桥接网卡”模式时,假设你此时电脑是插着以太网网线的,那“界面名称”这一项对应的应该是宿主机中连接以太网的适配器(在宿主机的 设置->网络和Internet->更改适配器选项 中可以看到),如图

               

可以看到VirtualBox网络设置的“界面名称”对应的就是 宿主机适配器。

2、桥接模式 以太网连接

  按上述设置好虚拟机网络连接方式后,进入系统,执行 “ip addr”查看下网卡信息,如下:

                  

 可以看到,有一张名为 "enp0s8" 的新网卡了!但并没有相应的ip地址的信息,所以"enp0s8"这张网卡目前是无法ping任何地址的。原因何在呢?进“/etc/sysconfig/network-scripts/”目录看一下就知道了:

                        

该目录下没有网卡2 "enp0s8" 对应的网卡配置文件!只有网卡1 "enp0s3" 的配置文件,所以这个"enp0s8"当然不会有IP地址等信息了。怎么解决?当然是手动创建对应网卡配置文件啦!

2.1 手动创建 桥接模式 网卡配置文件

  这里倒不用完全自己写配置文件,已经有一个"enp0s3"的网卡配置文件了,所以用"cp ifcfg-enp0s3 ifcfg-enp0s8" 命令复制后再修改即可。注意:配置文件命名为 "ifcfg-网卡名"。然后"vim ifcfg-enp0s8"编辑配置文件,主要修改下图所示红线标明处:

                                                   

因为是联网的,所以IP地址可以由DHCP动态分配,BOOTPROTO="dhcp"。NAME 和 DEVICE 都要改成"enp0s8",HWADDR 是硬件地址即网卡的MAC地址,可通过"ip addr"查看。ONBOOT="yes"是必须的,怎么也得启动网卡吧。UUID 的值怎么修改呢?执行命令 "nmcli con" 即可查看所有网卡的UUID,然后修改就好了。动了配置文件一定要记得重启服务!所以修改后先执行"systemctl restart network.service"重启下。然后就有问题咯!看图

    

2.2 网络服务重启失败原因及解决方法

上图提示说存在错误代码了!可以通过"systemctl status network.service" 来查看,一般都是如下:

                     

简单粗暴的告诉你启动LSB失败了,,LSB(Linux Standards BASE)就是一系列标准。但这里看不出具体原因的,具体原因看得看日志,执行 "cat /var/log/messages | grep network " 来查看最近的关于network

服务的日志,如下图

                        

划红线那句表示 没有找到跟 enp0s3 适配的设备。再回想下前面的操作,在VirtualBox中停用了网卡1,但是虚拟机中依旧存在 网卡1 对应的配置文件"ifcfg-enp0s3",所以系统根据配置文件去找 enp03s 就找不到了,就启动失败了咯。

    怎么解决?难道要删掉这个配置文件?当然不用,只要将 ifcfg-enp0s3 这个配置文件中的 ONBOOT 的值修改为 no即可。ONBOOT="no",这样就禁用了 enp0s3 这张网卡啦。再重启服务,查看下网卡地址

                        

已经给 enp0s8 自动分配ip啦,然后互ping一下:

    

虚拟机ping宿主机,宿主机ping虚拟机都成功了!网络地址转换(NAT)模式留下的问题在这里得到解决啦!

    其实,上面那个问题导致重启失败,并不影响给 enp0s8 分配ip。即使没有修改,也不影响互ping的,但有问题总的解决嘛,有问题看日志!

    切记,创建新的配置文件一定要修改 UUID 的值,不然重启也会失败的!我这里因为ISP的原因,所以虚拟机没办法ping外网。。

3、桥接模式 以太网未连接(网线还插着)

     这种宿主机没联网的情况,使用 桥接模式 又需要修改一些东西啦。没有联网,所以宿主机的以太网卡肯定是没有IP,那虚拟机也谈不上用dhcp自动分配了。所以首先要修改 宿主机 的 以太网卡 的 IP 信息,由自动获取 IP 改为手动配置。

                              

    然后修改虚拟机的网卡配置:主要将 ifcfg-enp0s8 的BOOTPROTO 由 dhcp 改为 none,添加 BRIDGE="br0",然后添加一个桥接配置文件 "ifcfg-br0",br0这个名字可以改,只要和 ifcfg-enp0s8 中BRIDGE的值一致就行。下图左边是“ifcfg-enp0s8”的修改,右边是“ifcfg-br0”的内容,主要是配置为静态IP 并 设置具体的IP、子网掩码、网关这些,保持和宿主机在同一网段即可。

      

   重启服务后,也可以互ping了。当然不能上网的!

4、桥接模式 以太网未连接(网线被拔出)

    如果没有网线呢?保持 3 中的配置不变,然后拔出网线,看结果:

             

                      

   互ping都失败了,那怎么办。总不可能时刻有网线吧。好办,用虚拟网卡

4.1 宿主机虚拟网卡 实现桥接

    怎么在宿主机上创建虚拟网卡呢?请移步另一篇文章 创建虚拟网卡。创建后如下:

                 

    然后就和 3 中一样手动配置虚拟网卡,以及虚拟机桥接网卡的 IP 信息了。切记要先关掉虚拟机,然后再网络设置中,将网卡2 的 "界面名称" 修改为刚创建的这种虚拟网卡:

                  

4.2 WLAN 与虚拟机桥接

    笔记本很多时候都是用无线上网的,这个时候桥接怎么配置?和上面的步骤其实差不多的,同样先要修改 虚拟机网络设置中的“界面名称”,将其修改为宿主机的无线网卡即可。

                       

    然后在虚拟机中,修改对应网卡的桥接配置文件,我这里是“ifcfg-br0” 这个文件,主要是修改为dhcp自动分配,然后去掉手动配置的IP信息。

                                      

查看下IP:

                        

     然后就可以上网了,也可以和宿主机互ping。

5、虚拟机无法ping宿主机 解决办法

     如果在上述过程中遇到虚拟机无法ping宿主机的问题,那一半是宿主机防火墙的问题了,可按下列操作,实现ping通。宿主机:设置->网络与Internet->Windows防火墙->高级设置->入站规则, 然后启用(文件和打印机共享(回显请求 - ICMPv4 - ln)  配置文件为“公用”的那一个),看图

                        

                           

             

                          

6、桥接模式 总结

   桥接模式,实际上就是将虚拟机当作局域网中的一台独立主机,它可以访问网内任何一台机器。虚拟机和宿主机就像连在同一个Hub(集线器)的两台电脑。同时,因为虚拟机属于局域网的一个独立主机,所以就可以通过局域网的网关或路由器访问互联网。如果ISP做了限制,那就无法访问互联了。总之,桥接模式下,虚拟机就看做一台局域网中的独立主机,当局域网中有多台主机时,也可以将其作为虚拟服务器!

7、Host-Only模式说明

    2017/8/30 补充:

    Hosy-Only 模式实际上和前面 4.1 小节提到方法是一样的,,只不过虚拟网卡不用自己创建,VirtualBox自动创建了一张,如下图红圈中所示:

    

    然后你在VirtualBox的网络设置中,如果网卡的连接方式选择了 “仅主机(Host-Only)适配器” 这一项,那界面名称就会自动选择到上图中红圈所示的网卡,并且没有其它选择。就这样,,,

发表评论

电子邮件地址不会被公开。 必填项已用*标注

To