0 写在前面 链接到标题

起因是这样的——由于发现完美对战平台会影响VBox的运行,卸载完美之后,用回了阔别几个月的VBox。需要组一个Ubuntu的服务器,用于练习,但是默认的NAT模式,主机直通虚拟机上的应用需要在VBox配置端口映射,一个一个映射太繁琐了!就想能不能组一个类似局域网的模式,同时客机能够通过NAT正常上网。网上有很多客机单网卡的实现,这一篇是基于Vmware的,但是这种方案需要配置window网络共享,有没有一种不用配置共享的方案?

1 双网卡配置 链接到标题

这里需要使用VBox的HostOnly网卡,如果没有这个网卡适配器,可以在VBox主页面——管理——主机网络管理器中新建,window系统可能需要管理员权限。就在主机网络管理器中将这张网卡的IPv4地址设置为192.168.56.2/24。考虑到未来可能有其他设备或虚拟机接入,打开DHCP服务器为192.168.56.X网段自动分配IP,更具不同人的实际情况,这个操作可能不是必须的。

随后,在需要配置的虚拟机设置页——网络,启用网卡1和网卡2,分别选择NAT和仅主机网络,并为仅主机网络选择刚刚配置好的192.168.56.X网段HostOnly网卡。

2 Ubuntu通过netplan配网固定IP 链接到标题

其实到此,如果你的虚拟机操作系统默认为网卡打开DHCP,虚拟机就应该能够获取到192.168.56.X的IP地址,通过这个IP地址,主机和客机可以完成互联互通。但是我的Ubuntu并未想当然地完成这的自动配置。同时,作为一个长期使用的、通过服务器的虚拟机,DHCP可能导致的IP变换,也不是一件好事。使用接下来,通过netplan把虚拟机IP固定为192.168.56.3/24。虚拟机开机,打开这个文件:

sudo nano /etc/netplan/00-installer-config.yaml  # 当然你也可以使用vim,记得提管理员权限

我的配置如下:

# This is the network config written by 'subiquity'
network:
  ethernets:
    enp0s3:
      dhcp4: true
    enp0s8:
      dhcp4: false
      addresses: [192.168.56.3/24]
  version: 2

其中enp0s3为NAT网卡,enp0s8为HostOnly网卡。即便你也使用VBox,实际情况下,网卡的名字也可能不一样,通过ifconfig -a可以查询到网卡名,随后如上配置即可。最后,在shell中运行sudo netplan apply即可使新配置生效(这样配置,即使是重启,也是有效的)。通过主机Ping客机:

正在 Ping 192.168.56.3 具有 32 字节的数据:
来自 192.168.56.3 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.56.3 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.56.3 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.56.3 的回复: 字节=32 时间<1ms TTL=64

192.168.56.3 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 0ms,平均 = 0ms

ping通,说明配置生效。客机也能通过NAT连接外网,curl测试即可,此处不赘述。