两个 Vagrant VM 无法互相 ping 通

两个 Vagrant VM 无法互相 ping 通
  • CentOS 7 虚拟机-10.0.2.100
  • Windows Server 2012 R2 虚拟机 - 10.0.2.15

目标- 互相 ping;互相通信

问题- 无法互相 ping;无法互相通信

在 CentOS VM 上,我关闭了 auto_config,因为 Vagrant 无法自动为我更改 IP。因此,我让 Vagrant 将其识别为 10.0.2.100,然后在 VM 上手动更改网络。

在 Windows VM 上,Vagrant 将 IP 地址默认为 10.0.2.15。

# -*- mode: ruby -*-
# vi: set ft=ruby :

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

  config.vm.define "master" do |master|
    master.vm.box = "centos/7"
    master.vm.network "private_network", ip: "10.0.2.100", auto_config: false
    master.vm.box      = "centos_7_v2"
    master.vm.hostname = "master.local.com"
    master.vm.provider "virtualbox" do |v|
      v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
    end
  end

  config.vm.define "nodeone" do |nodeone|
    nodeone.vm.box = "windows_2012_r2_standard"
    nodeone.vm.hostname = "nodeone.local.com"
    nodeone.vm.provider "virtualbox" do |v|
      v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
    end
  end

end

我已将配置--natdnshostresolver1添加到两个虚拟机中,然后将以下内容添加到我自己的主机文件中(在我的Mac上)。

10.0.2.15 nodeone.local.com
10.0.2.100 master.local.com

答案1

我终于搞明白了。显然,你只需将 IP 地址设置为同一子网,然后添加并virtualbox__intnet: true按照以下设置https://www.vagrantup.com/docs/virtualbox/networking.html

# Master
master.vm.network "private_network", ip: "192.168.50.100",
  virtualbox__intnet: true

# Node
nodeone.vm.network "private_network", ip: "192.168.50.110",
  virtualbox__intnet: true

答案2

正如@jeffrey-wen所说,解决方案是添加virtual_box__intnet: true到 inventory 文件中。需要注意的是,这样做可能会导致您在 ping 或 ssh 到现在位于新本地网络上的 Vagrant 盒子时遇到问题(详情如下)在 Ansible 问题中)。

对我来说,解决方案是添加-c local到我运行的任何命令中。-c通知 Ansible 要使用的连接类型和默认值,smart有时无法正常工作。

抱歉,将此作为答案发布 - 我的声誉还不足以将其作为评论发布 ¯\_(ツ)_/¯

相关内容