跳到主要内容

VirtualBox 虚拟机双向网络互通

我们的目标有三个

  • 虚拟机访问互联网
  • 虚拟机访问宿主机
  • 宿主机访问虚拟机

使用环境:

  • 宿主机 macOS 15
  • 软件 VirtualBox 7.1.4
  • 虚拟机 Ubuntu Server 24.04

方式一:桥接网卡​

桥接网卡可以把虚拟机加入到主机所在的网络,从主机所在网络的申请到IP地址。

优点:配置方便,不需要额外配置。

缺点:IP一般是动态DHCP申请的,主机和虚拟机的IP都容易发生变化。如果网络不经常变化,使用静态IP,问题不大。

方式二:NAT + HostOnly​

NAT 可以实现虚拟机访问互联网,HostOnly 可以实现宿主机和虚拟机之间的网络互通

配置稍微麻烦一点,步骤如下:

一、先关闭虚拟机

二、先在VirtualBox Tools中创建 Host-only 的网络,1️⃣ 2️⃣ 3️⃣ 步骤完成默认完成即可,IP地址可以保持默认,或者修改成自己喜欢的

添加图片注释,不超过 140 字(可选)

三、点击虚拟机的配置 Settings

添加图片注释,不超过 140 字(可选)

四、左侧选择 Network,第一个网卡默认就是 NAT,其他配置保持默认

添加图片注释,不超过 140 字(可选)

五、配置第二个网卡,2️⃣勾选Enable Network Adapter,3️⃣选择Host-only Network,4️⃣ 选择上面创建的 HostNetwork

1️⃣选择第二个网卡,2️⃣勾选Enable Network Adapter,3️⃣选择Host-only Network,4️⃣ 选择上面创建的 HostNetwork

六、开启虚拟机,登录主机,输入 ip a 命令,可以查看到多了一块网卡 enp0s9,目前是关闭的状态

添加图片注释,不超过 140 字(可选)

七、编辑网络配置文件 /etc/netplan/50-cloud-init.yaml,默认是下面这样的,网卡名字可能不同

network:
ethernets:
enp0s8:
dhcp4: true
version: 2

增加对新网卡的配置,这里不开启DHCP,固定IP地址。保存文件。

network:
ethernets:
enp0s8:
dhcp4: true
enp0s9:
dhcp4: false
addresses:
- 192.168.56.88/24
version: 2

八、然后执行下面两条命令,使网络配置生效:

$ sudo netplan generate
$ sudo netplan apply

再次查看网络配置,第三块网卡enp0s9已经启动了

添加图片注释,不超过 140 字(可选)

此时ping一下主机IP,网络也是连通的

$ ping 192.168.56.1
PING 192.168.56.1 (192.168.56.1) 56(84) bytes of data.
64 bytes from 192.168.56.1: icmp_seq=1 ttl=64 time=0.258 ms
64 bytes from 192.168.56.1: icmp_seq=2 ttl=64 time=0.441 ms
^C
--- 192.168.56.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1026ms
rtt min/avg/max/mdev = 0.258/0.349/0.441/0.091 ms

在主机上ping虚拟机的IP,也是OK的

$ ping 192.168.56.88
PING 192.168.56.88 (192.168.56.88): 56 data bytes
64 bytes from 192.168.56.88: icmp_seq=0 ttl=64 time=0.872 ms
64 bytes from 192.168.56.88: icmp_seq=1 ttl=64 time=0.955 ms
^C
--- 192.168.56.88 ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.872/0.913/0.955/0.041 ms

然后就可以在主机上,使用SSH上登录虚拟机了。

这样的好处是双方的IP地址都是固定的,不会随意的发生变化,也不会影响到外部网络。