macOS 下 VirtualBox 虚拟机网络设置
VirtualBox 深似海,VMWare 解千愁 😅
本文解决了在 macOS 下如何在保证 VirtualBox 虚拟机联网的同时支持 Host 主机连接虚拟机。比如:主机需要通过 SSH 连接虚拟机,同时虚拟机需要联网。
解决方法 1
首先,最简单的方式便是将虚拟机网卡连接方式设置为 桥接网卡
并为其指定一个主机上的网卡,这样主机和虚拟机相当于连接到同一个路由下,达到上述目标自然不成问题。
如果不想采用桥接方式,则需要下面稍为复杂一些的设置。
解决方法 2
当虚拟机网卡连接方式为 网络地址转换(NAT)
时,虚拟机可以联网,但主机无法连接 NAT 下的虚拟机。
当虚拟机网卡连接方式为 Host-Only
时,虚拟机无法联网,但主机可以连接虚拟机。主机会为 Host-Only
网络分配一个虚拟网卡 vboxnet0
,该网卡默认网关为 192.168.56.1
,网段为 192.168.56.0/24
。
所以可以为虚拟机设置两个网卡,一个采用 网络地址转换(NAT)
用于虚拟机联网,一个采用 Host-Only
用于主机与虚拟机之间的双向访问。
接下来还需要对虚拟机进行设置,以便开启双网卡。这里需要注意的是可能需要为两张网卡设置不同的 metric 值,使得连接 NAT 的网卡为“主”网卡,Host-Only 网卡为“副”网卡。设置方式可以在网卡配置时指定,也可直接修改路由表。
这里仅列举虚拟机为 Ubuntu Server 时的配置方法,对于其他发行版也有参考价值。
🔽 netplan 配置(较新版本的 Ubuntu 采用了 netplan)
yamlnetwork:
ethernets:
enp0s3: # 连接 NAT
dhcp4: true
enp0s8: # 连接 Host-Only
dhcp4: false
addresses:
- 192.168.56.5/24
version: 2
# 如果需要指定 metric,可以参考 netplace 配置文档
🔽 /etc/network/interfaces(传统方式)
yaml# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0 # eth0 连接 NAT
iface eth0 inet dhcp
metric 10 # 这里指定了较小的 metric 值,使其成为“主”网卡
auto eth1 # eth1 连接 Host-Only
iface eth1 inet static
address 192.168.56.6
gateway 192.168.56.1
network 192.168.56.0
netmask 255.255.255.0
metric 100
此时,虚拟机即可联网,也可与主机之间进行双向访问。