“无主机路由”:了解 Vagrant VM 之间的网络

Nat*_*rot 5 centos virtualbox vagrant

我想要一对虚拟机,它们之间有网络。我做了以下 Vagrantfile

VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.define :alpha do |alpha|
    alpha.vm.box = "centos-6.4"
    alpha.vm.network :private_network, ip: "192.168.50.2"

    alpha.vm.provision "shell", inline: "yum install -y nc"
  end

  config.vm.define :beta do |beta|
    beta.vm.box = "centos-6.4"
    beta.vm.network :private_network, ip: "192.168.50.10"
    beta.vm.provision "shell", inline: "yum install -y nc"
  end
end
Run Code Online (Sandbox Code Playgroud)

起初,我认为事情正在奏效,因为我可以做到

流浪的 ssh alpha

进而

平 192.168.50.10

或者

SSH 192.168.50.10

这些都有效。但看起来实际上只有这两个操作有效。如果我在端口 3000 上进行 beta 侦听并尝试连接到它,我不能:

$ ssh -p3000 192.168.50.10
ssh: connect to host 192.168.50.10 port 3000: No route to host
Run Code Online (Sandbox Code Playgroud)

如何获得它以便所有流量都可以在两个 VM 之间通过?

我有 VirtualBox 4.2.18 作为提供者和 Vagrant 1.3.3

编辑:经过更多的实验,我可以单独在 VirtualBox 上用 CentOS 重现这个,如果我将基本框更改为 Ubuntu 一个,我没有这个问题(对 Vagrantfile 没有其他更改)。这是在 VirtualBox 上与 CentOS 联网的问题吗?

Nat*_*rot 6

原来这只是基本框上的 iptables 绊倒了我。关闭它(service iptables stop暂时禁用防火墙)允许我在两台机器之间进行路由。

  • 对于较新版本,请尝试 systemctl stop firewalld.service (2认同)