【VirtualBox系列】VirtualBox设置虚拟机网络绝对详细

本文详细介绍了如何在VirtualBox中设置虚拟机网络,以实现主机访问虚拟机、虚拟机访问外网的需求。通过使用NAT和Host-Only两种模式,确保即使更换路由器,虚拟机IP和网络访问仍能保持正常。内容包括网络模式分析、配置步骤、问题排查及SSH连接方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言知识

在学习配置网络之前,我们需要先了解下关于virtualBox的三种网络模式

搞懂虚拟机VirtualBox网络配置

需求分析

现在如何实现一种效果,我想达到主机可以访问虚拟机,并且虚拟机能够访问外网。还有如果我更换了路由器,之前配置的虚拟机ip是不变的,而且之前配置的虚拟机网络也是正常访问的

简单概况下几种网络模式的注意点

桥接模式

虚拟机ip地址需要与主机在同一个网段,如果需要联网,则网关与DNS需要与主机网卡一致。

主机模式

它的网络结构是在NAT网络的基础上,去除虚拟NAT设备让它不能上网。虚拟机的IP地址和Host-Only的网卡地址要在同一个网段

NAT模式

NAT模式下,虚拟机访问网络的所有数据都是由主机提供的

  • 虚拟机可以通过网络访问主机
  • 主机无法通过网络访问虚拟机

根据上面的分析,我们可以使用NAT + Host-Only两种模式,实现虚拟机上网和物理机通信两种能力

所以我们思路就是使用

设置2个网卡:第一个为nat(网络地址转换),实现虚拟机到主机、虚拟机到外网的访问;第二个为host-only,实现主机到虚拟机、虚拟机到虚拟机的访问。

动手实践

在virtualBox菜单工具 使用管理-》全局设定  创建nat网络并修改默认生成的ip网段为我们自定义的

选中我们的虚拟机实例,点击设置到网络这里,我们添加两种网卡

 添加完之后,我们就可以进入我们的虚拟机实例,配置下静态ip 

cd  /etc/sysconfig/network-scripts

vim ifcfg-enp0s3 (ifcfg-enp0s3这个名称可能会不同,我们可以使用ifconfig 获取ip a 命令查看到对应的网卡名称找到对应的文件修改) 这个是nat模式的虚拟网卡名称

下面是 ifcfg-enp0s3 文件修改后完整的内容,这里我们填写了

BOOTPROTO=static

IPADDR=10.0.3.10
NETMASK=255.255.255.0 
GATEWAY=10.0.3.1

TYPE=Ethernet
ONBOOT=yes
#PROXY_METHOD=none
BOOTPROTO=static
#DEFROUTE=yes
IPV4_FAILURE_FATAL=no
UUID=5ac6e7f0-861cf-49af-a150-62057ef44c3t7
DEVICE=enp0s3 
IPADDR=10.0.3.10
NETMASK=255.255.255.0 
GATEWAY=10.0.3.1

到这里我们返回切换到主机环境的网络连接

 

 双击配置以下内容,这里我们配置下宿主机为固定ip 地址,这里需要注意的是

设置主机的IP地址和Host-Only的网卡地址要在同一个网段

返回我们的virtualbox工具栏 管理-》主机网络管理器,设置手工配置网卡,如果DHCP服务器选项是启用请去掉勾选

 进入虚拟机,我们配置下host模式网卡配置

我自己机器是这个ifcfg-enp0s8文件名称,如果没有该文件,我们可以使用ipconfig 或者ip a命令获取到对应的网卡名称  ifcfg-这个开头的名称是不变的 然后复制一份ifcfg-enp0s3的配置来改改

ifcfg-enp0s8文件具体的内容是

TYPE=Ethernet
ONBOOT=yes
#PROXY_METHOD=none
#BROWSER_ONLY=no
BOOTPROTO=static
#DEFROUTE=yes
IPV4_FAILURE_FATAL=no
UUID=5ac6e7f0-861cf-49af-a150-62057ef44c37h
DEVICE=enp0s8
IPADDR=192.168.56.10
NETMASK=255.255.255.0
GATEWAY=192.168.56.1

以上内容操作完成后,我们就执行systemctl restart network 命令来看下效果,我这里直接是reboot 

查看效果

主机cmd命令ping 下我们的虚拟机ip

 进入虚拟机,ping下主机

 测试下虚拟机ping下外网的地址

如何来排查

使用route -n 命令结果发现我们enp0s8网卡成为了默认路由,就导致其他路由不能匹配到的网段都会走enp0s8这个网卡,而我们实际上配置与外网连接的虚拟网卡是enp0s3,环境自然就连接不了外网了。我们可以尝试手动来删除现在的默认路由。

 来我们调整以下这里,删除默认路由

route del default

配置默认路由,注意这里的gw 10.0.3.2 的取值

简单的说,就是如果第1个网卡是NAT网卡,那么其网段的第三个数字就0+2=2就是10.0.3.0,网关为10.0.3.2,name server则是10.0.3.3.以此类推。

route add default gw 10.0.3.2 dev enp0s3

弄完之后我们看下效果

 

以上的解决是我通过在网上找到的解决方案,但是大家有没有想过,如果我在ifcfg网卡配置文件里面指定nat模式的网卡配置 为默认路由,将host模式的网卡配置设置为不是默认路由,是不是可以解决这个问题呢?试一试

找到ifcfg-enp0s3文件之前把这里注释掉了,我们把这里放开

找到ifcfg-enp0s8文件我们改选项参数设置为no

 我们执行下重启网络命令看下效果

systemctl restart network

 果然我们也实现了这种效果

 ssh工具连接

nat端口转发连接

回到我们的virtualBox工具栏选择 管理-》全局设定  修改nat网络

 添加端口转发配置规则

 使用ssh工具连接

 

 

可以看到我们已经可以正常连接

host主机模式通信连接

 使用ssh工具连接

  可以看到我们已经可以正常连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值