写点什么

VirtualBox 网络配置 NAT + Host-Only

作者:李鑫磊
  • 2021 年 12 月 03 日
  • 本文字数:1485 字

    阅读完需:约 5 分钟

为什么要选择这种组合

想要 VirtualBox 虚拟出来的 VM 实例既可以上网,又可以从宿主机上通过 ssh 登录,还可以让不同 VM 实例之间的网络互通,给 VM 实例配置 NAT + Host-Only 双网卡是一种可行的方案。

如果将 VM 实例的网络模式配置成 Bridge,虽然 VM 实例既可以上网,又可以从宿主机上通过 ssh 登录,但如果把宿主机(Mac)从公司搬到家里,网络环境变了,就需要重新配置一遍网络,重启 VM 实例,甚是不便。


实验环境

  • 宿主机:Mac

  • VirtualBox 版本:VirtualBox-6.1.26-145957-OSX.dmg

  • VM 实例镜像:ubuntu-20.04.3-live-server-amd64.iso


配置步骤

安装 VM 实例

  • 创建 VM 实例;

  • 启动 VM 实例;

  • 选择镜像,给 VM 实例安装操作系统;

  • 将 VM 实例关机;

配置 NAT 网卡

  • 选择 “网络地址转换(NAT)”,默认就好,无需特别配置;

配置 Host-Only 网卡

  • “管理” -> “主机网络管理” -> “创建” -> 不要 “启用” DHCP,点击完成会新建一个 “vboxnet0”;

  • “IPv4 地址” 填这个:192.168.34.1,这是 k8s 推荐的;

  • VM 实例的网络设置,启用 “网卡 2”,“连接方式” 选 “仅主机(Host-Only)网络”,“界面名称” 选 “vboxnet0”;

  • 启动 VM 实例;

查看 VM 实例网卡信息

  • 在 VM 实例里面执行 ip addr,其中 enp0s8 是没有 UP 的;

启用 enp0s8 网卡

/etc/netplan/00-installer-config.yaml 原来长这样:

# This is the network config written by 'subiquity'network:  ethernets:    enp0s3:      dhcp4: true  version: 2
复制代码

改成这样:

# This is the network config written by 'subiquity'network:  ethernets:    enp0s3:      dhcp4: true    enp0s8:      dhcp4: no      addresses:        - 192.168.34.2/24  version: 2
复制代码

重启生效

sudo netplan apply
复制代码

再次检查 VM 实例网卡信息

enp0s8 状态已经 UP:

  • 其中 enp0s3 是 NAT 网卡,用于访问网络;

  • enp0s8 是 Host-Only 网卡,其 IP 192.168.34.2 用于从宿主机 ssh 登录 VM 实例和 VM 实例之间的网络互连;

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00    inet 127.0.0.1/8 scope host lo       valid_lft forever preferred_lft forever    inet6 ::1/128 scope host       valid_lft forever preferred_lft forever2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000    link/ether 08:00:27:ca:96:98 brd ff:ff:ff:ff:ff:ff    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3       valid_lft 84697sec preferred_lft 84697sec    inet6 fe80::a00:27ff:feca:9698/64 scope link       valid_lft forever preferred_lft forever3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000    link/ether 08:00:27:37:79:77 brd ff:ff:ff:ff:ff:ff    inet 192.168.34.2/24 brd 192.168.34.255 scope global enp0s8       valid_lft forever preferred_lft forever    inet6 fe80::a00:27ff:fe37:7977/64 scope link       valid_lft forever preferred_lft forever4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default    link/ether 02:42:25:8a:0c:42 brd ff:ff:ff:ff:ff:ff    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0       valid_lft forever preferred_lft forever
复制代码

此后更换网络环境不会出现从宿主机 ssh 不到 VM 实例的情况。

发布于: 3 小时前阅读数: 9
用户头像

李鑫磊

关注

还未添加个人签名 2018.04.25 加入

还未添加个人简介

评论

发布
暂无评论
VirtualBox 网络配置 NAT + Host-Only