我有一个带有 1 个公共 IP 的远程服务器(ubuntu)。
我已经安装了无头 VirtualBox 并部署了机器。目前我可以通过服务器上运行的 VirtualBox 的 VRDE 服务器访问它,但我需要能够直接访问虚拟机...那么我该如何配置网络?据我所知,Virtual Box 不允许从外部访问它的 NAT,所以它只给我留下了桥接选项,但我只有一个外部 IP 可用。我有什么选择?
答案1
使用仅限主机网络。您向虚拟机的网络配置中添加一个接口,该接口充当交换机。默认情况下,它应该添加vboxnet0
。
您需要在您的机器上启用内核中的 ip4 转发:
sysctl -w net.ipv4.ip_forward=1
这应该足以允许虚拟机访问互联网。您可以使用 iptables 和 FORWARD 链过滤流量,如果您为每个虚拟机添加一个接口,您甚至可以按接口过滤并限制虚拟机之间的流量。这是最灵活的方法。而且您可以避免桥接。
使用 iptables 您可以将端口转发到本地虚拟机:
iptables -t nat -A PREROUTING -i eth+ -p tcp --dport 2222 -j DNAT --to 10.10.10.100:22
您的虚拟机在可通过端口从外部访问的10.10.10.100
接口上的 IP 地址在哪里。您可以手动配置 IP,也可以在主机上使用它作为 DHCP 服务器。vboxnet0
2222
dnsmasq
为您的虚拟机放入一个文件/etc/dnsmasq.d/virtualbox
:
dhcp-range=interface:vboxnet0,10.10.10.100,10.10.10.100,255.255.255.0,24h
这负责为虚拟机分配 IP 地址和网关 + DNS 信息。您也可以手动配置它,在这种情况下 DNS 和网关地址将是10.10.100.1
。如果您熟悉 Linux 网络配置,您应该能够弄清楚这一点。
答案2
如果您配置了“仅主机”接口,VirtualBox 将使用主机上的虚拟接口。您可以定义到该接口的转发。
要使用仅主机接口,请启动 VirtualBox,然后从“文件”菜单中选择“首选项”。在出现的窗口中选择“网络”,然后按“添加”按钮。添加网络后,按右侧的“设置”按钮。在那里,您可以编辑虚拟网络设置。“IP 地址”将是该虚拟网络上的主机 IP 地址。
确保 DHCP 服务器选项已关闭。
完成后,按“确定”按钮。之后,您可以在客户计算机的网络偏好设置中选择“仅主机”。它将默认接口为您在上述步骤中创建的接口。
启动虚拟机。为其指定一个固定 IP 地址,并设置网关。您应该能够从主机 ping 通客户计算机的 IP 地址,反之亦然。
主机操作系统上会出现一个名为“vboxnet0”的新适配器。通过它,客户机计算机将可以访问,但只能从主机计算机访问(当然)。您可以像往常一样在主机计算机上配置端口转发,这样您就可以直接访问您的客户机。