如何允许两个 Vagrant VirtualBox VM 之间进行通信?

如何允许两个 Vagrant VirtualBox VM 之间进行通信?

我正在尝试构建一个 k3s 集群。为了测试我的 Ansible 设置脚本,我想用 vagrant 设置一个小沙盒。

但是我不知道如何在两个虚拟机之间进行通信。

我拥有的 Vagrantfile 是这样的:

Vagrant.configure("2") do |config|

  config.vm.box = "ubuntu/noble64"

  servers = [
    { :name => "master1", :ip => "192.168.56.2" },
    { :name => "master2", :ip => "192.168.56.3" },
  ]

  servers.each do |opts|
    config.vm.define opts[:name] do |server|
        server.vm.hostname = opts[:name] + "k3s"
        server.vm.network "private_network", ip: opts[:ip]
        server.vm.provider :virtualbox do |vb|
          vb.name = opts[:name] + "k3s"
          vb.gui = false
          vb.memory = 1024
          vb.cpus = 2
          vb.linked_clone = true
        end
    end
  end

据我了解Vagrant 文档,两台机器应该能够通过其分配的 IP 进行通信。ip add show显示两台机器都有我分配给它们的 IP。

但是tcpdump ip proto \\icmp在一台机器上和ping ...另一台机器上运行时,我看不到任何传入的 ping。

我是否缺少了一些东西以使两台机器能够进行通信?

答案1

对于 Virtual Box 客户机,客户机使用 NAT 或桥接网络连接。这是最简单的方法。

也许可以连接到仅主机的机器,但是操作起来要复杂得多。

确保您的仅主机网络是唯一的(至少参与该方案的任何网络都是唯一的)。也就是说,每个仅主机网络都需要不同,而不是所有网络都是相同的默认 192.168.56.0/24 网络。

.... 您可以选择使用其他 10.xy0/24 网络(您有大约 64K 个选择!)作为您的仅主机网络。(请注意,由于您的示例网关不在您的网络上,因此它表明您的网络实际上是 10.0.0.0/8,因此请警惕其他潜在冲突。)当然,您也可以继续使用 192.168.y.0/24 网络,但请确保每个仅主机网络使用不同的“y”值。 .

配置您的客户机,使其通过主机的仅主机网络 IP 路由出仅主机网络。与 NAT 虚拟网络不同,仅主机 DHCP 服务器不向客户机提供路由信息,只提供地址。

这可以通过多种方式实现,例如替换 DHCP 服务器,但本质上您所要做的就是告诉每个客户操作系统如何脱离仅主机网络。对于大多数操作系统来说,这是相同的命令(需要管理权限):

来源: 连接仅主机的机器

相关内容