如何在 Virtualbox 中不使用桥接适配器的情况下使 3 个虚拟机相互连接并连接互联网?
我不想使用桥接适配器,因为我经常使用 WiFi 和这种组合不起作用。我需要连接互联网才能下载软件包,并相互连接才能形成 Kubernetes 集群。
我想通过 SSH 从另一台远程计算机(使用相同或不同的网络)连接到它们。
答案1
您可以为三个虚拟机创建一个新桥,并将它们全部置于主机的 NAT 网络内。 (您可能还会发现,将它们放在同一个 NAT 网络上可以让它们相互联系 - 我最近没有测试 VirtualBox 来检查这一点。)
要允许传入 ssh 连接到每台计算机,您需要从主机进行端口转发。每个虚拟机需要不同的端口,例如 50001、50002、50003。
答案2
一种选择是使用仅主机适配器,并通过 IPtables 进行路由。这是从仅主机网络到 Wifi,您可能还需要设置另一个方向(复制第一行和开关输入和输出接口,并将仅主机网络的 IP 范围作为目标而不是源)。
sudo iptables -I FORWARD -o wlp58s0 -i vobxnet0 -s 192.168.58.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -I FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
sudo iptables -t nat -F POSTROUTING
sudo iptables -t nat -A POSTROUTING -o wlp58s0 -j MASQUERADE
可以通过工具->网络管理器配置仅主机网络(名称、IP)。
为什么不简单地创建一个 NAT 网络呢?我只想偶尔通过脚本打开虚拟网络。