环境
主机:Win10
虚拟机:Ubuntu 20.04
虚拟机:VirtualBox 6.1
模式 | 虚拟机→主机 | 主机→虚拟机 | 虚拟机↔虚拟机 | 虚拟机→Net/LAN | Net/LAN→虚拟机 |
---|---|---|---|---|---|
NAT | √ | 端口转发 | × | √ | 端口转发 |
NATservice | √ | 端口转发 | √ | √ | 端口转发 |
Host-Only | √ | √ | √ | × | × |
Internal | × | × | √ | × | × |
Bridged | √ | √ | √ | √ | √ |
【推荐】桥接网卡(Bridged)
用于一些高级网络需求,例如网络模拟和用户机中运行的服务器。启用后,Oracle VM VirtualBox
将连接到主机安装的网卡之一并直接交换网络数据包,从而绕过主机操作系统的网络堆栈。 像是真实存在于主机网路中的一台主机,主机能上网才能上网。
ip与本机处于同一网段,因为网关和主机一样。
【默认的网络设置】网络地址转换(NAT)
是默认模式,装好系统什么都不用改就可以直接联网。 通过构造一个虚拟网卡,连接虚拟机的交换机以及NAT设备等,虚拟机发出和收到的请求经由NAT
Engine处理实现网络访问。 外部不可见,即外部ping不了虚拟机,其他虚拟机也ping不了。
ip地址通常为10.0.2.xx,因为默认虚拟网卡连接到10.0.2.0。
【了解】NAT网络
一种允许出站连接的内部网络。 好像……不太有用,不多介绍。
【了解】仅主机(Host-Only)网络
在主机上虚拟一个专供虚拟机使用的host-only网卡,然后把虚拟主机桥接到上面,通过设置这个host-only网卡实现网络连接。
可以在Windows网络适配器里看到一个VirtualBox Host-Only Network网卡,利用这个网卡进行通信。
所有虚拟机都连在这个网卡下,所以相互之间可以访问,当然也属于同一网段。 要访问主机或者上网需要一些额外设置,操作相对复杂一点。
ip地址通常为192.168.56.x,因为VirtualBox Host-Only
Network网卡ip为192.168.56.1(网关)。
【了解】内部(Internal)网络
用于创建不同类型的基于软件的网络,该网络对选定的虚拟机可见,但对主机上运行的应用程序或外部世界不可见。
用得也不多,不多介绍。
【了解】通用驱动(Generic networking)
共享相同通用网络接口的模式,允许用户选择可包含在 Oracle VM VirtualBox 中或分发到扩展包中的驱动程序。
官方认证很少使用(rarely used mode)。
【掌握】桥接方式配置网络
第一步:设置win10电脑网卡
第二步:设置virtualbox 网络
第三步:配置ubuntu20.04的静态ip地址
-
第一步:设置win10电脑网卡
-
Win+X打开设备管理器;
-
操作→添加过时硬件;
-
安装我手动从列表选择的硬件→网络适配器→厂商:Microsoft;型号:KM-TEST环回适配器;
-
创建完成,打开网络适配器就可以看到;
-
右键打开连接了WIFI的那个网卡WLAN的属性,在共享选项卡里设置允许其他网络用户通过此计算机的Internet来连接,下面选择新建的那个网卡。
-
-
第二步:设置virtualbox 网络
- 打开virtualBox对应的系统,设置-> 网络-> 网卡1-> 连接方式:桥接网卡 -> 界面名称:新建的那个网卡
- 打开virtualBox对应的系统,设置-> 网络-> 网卡1-> 连接方式:桥接网卡 -> 界面名称:新建的那个网卡
-
第三步:配置ubuntu20.04的静态ip地址
-
修改网络配置文件:
sudo vim /etc/netplan/01-network-manager-all.yaml
,内容改为如下# Let NetworkManager manage all devices on this system network: ethernets: enp0s3: #网卡名称 dhcp4: no addresses: [192.168.137.30/24] #静态IP及掩码 optional: true gateway4: 192.168.137.1 #网关 version: 2 renderer: NetworkManager
原文件内容如下【仅备份使用】:
# Let NetworkManager manage all devices on this system network: version: 2 renderer: NetworkManager
-
-
然后重启网络服务:
sudo netplan apply
- 检查静态ip是否生效:
ifconfig
- 再在window和其它虚拟机里检查是否可以互通
所有配置均成功了,这样你在虚拟机里启动的服务,其它虚拟机也可以正常访问了。比如:在30虚拟机里启动了一个flask server,在20机器里就可以正常访问了
- 检查静态ip是否生效: