B1-虚拟机如何与主机网络互联(断网情况)
在使用虚拟机时,会遇到无法从宿主机拷贝内容到虚拟机中,为了方便使用,往往会用SSH终端软件连接虚拟机。那么,又引发了另一个问题,虚拟机默认获取的是动态IP地址,这样切换网络环境都得修改IP地址才能登录?有的同学会说可以给虚拟机配置静态IP地址。好吧!那么又引发了一个问题,切换网络环境是静态IP地址不在网段内,无法访问外网。那要怎么解决呢?这就是接下来要讲的内容了。
一、环境说明
虚拟机管理软件:Oracle VM VisualBox
虚拟机系统:ubuntu server 18.04
二、VisualBox 软件网络配置
为了让虚拟机能够在断网情况下使用静态IP地址,那么虚拟机和宿主机就必须要在同一个局域网内,所以需要先安装一个 Host-Only 的网路。Host-Only 网络是有 VisualBox 提供的,对于宿主机和虚拟机都是可见的。在安装 VisualBox 软件时就已经自带的。若没有,也可以手动添加。

示例的网络是 192.168.56.1 ,这个作为虚拟机配置静态IP地址的网关。
三、VisualBox 虚拟机网卡配置
为了使虚拟机能够同时访问外网又能通过静态IP地址被宿主机访问,需要添加两个虚拟机网卡,一个是用于访问外网的 NAT 网卡,另一个是上一节的 Host-Only 网卡。


四、虚拟机配置静态IP地址(不同系统配置不一致,仅做参考)
在 ubuntu server 18.04 系统中,启用了新的网络工具 netplan ,所以网络参数的配置跟以前的版本不太一样。
-
找到 /etc/netplan 目录下的 yaml 文件,例如 /etc/netplan/50-cloud-init.yaml,打开并编辑。
sudo vi /etc/netplan/50-cloud-init.yaml![]()
enp0s3 是 NAT 网卡,enp0s8 是 Host-Only 网卡,enp0s3 无需修改,修改 enp0s8 如下:
dhcp4 - IP4是否使用动态分配方式,缺省值为 true
addresses - 配置网络IP地址,可配置多个,逗号分隔
gateway4 - IP4的网关
nameservers->addresses - 配置dns服务器地址,可配置多个,逗号分隔
-
网络配置生效
sudo netplan apply
五、虚拟机网络优先级调整
配置静态IP地址后,虚拟机即可以访问外网也可以通过静态IP地址被宿主机访问,但前提是同一时间只能使用一个网卡,否则无法访问外网。因为虚拟机优先选择了 Host-Only 网卡导致的。那么如何调整优先级,请看下文:
-
查看当前路由信息
ip route show route -n![]()
再分析上面输出的路由信息之前,要先了解 Metric 是什么?Metric 为路由指定所需跃点数的整数值(范围是 1 ~ 9999),它用来在路由表里的多个路由中选择与转发包中的目标地址最为匹配的路由。所选的路由具有最少的跃点数。跃点数能够反映跃点的数量、路径的速度、路径可靠性、路径吞吐量以及管理属性。也就是说,Metric 值越低优先级越高。而我们发现 Gateway 为 192.168.56.1 (Host-Only 网卡) 和 10.0.2.2 (NAT 网卡) 的 Metric 值分别为 0 和 100,说明虚拟机优先选择了 Host-Only 网卡,自然无法访问外网。
-
调大 Host-Only 网卡的 Metric 值
修改 /etc/netplan/50-cloud-init.yaml 文件并让其生效,修改后内容如下:
![]()
-
查看修改后的路由信息
![]()
发现 Gateway 为 192.168.56.1 (Host-Only 网卡) 的记录不见了,因为我们把 gateway4 删掉了,但是增加了一个从指向 192.168.56.1/24 的路由且 Metric 值为 101,所以 Host-Only 网卡其实还能正常使用。
-
测试访问外网是否成功
![]()
本文转载于:https://blog.csdn.net/Chirs_Chen/article/details/84978941,未经博主允许不得转载。






浙公网安备 33010602011771号