mac无法ping通vagrant的私有网络ip的解决办法

  1. 确保virtualbox拥有两张网卡:

    1. 一张用作网络地址转换(NAT)
    2. 一张用作private_network,即 仅主机(hostOnly)网络
  2. 选择其中一张网卡,假如这张网卡的ipv4地址为 192.168.57.1,那么你就可以从
    192.168.57.11192.168.57.255的范围选择一个作为private_network
  3. 假如我选择了 192.168.57.15作为 private_network,那么 Vagrantfile就修改为:

    # vi: set ft=ruby :
    # All Vagrant configuration is done below. The "2" in Vagrant.configure
    # configures the configuration version (we support older styles for
    # backwards compatibility). Please don't change it unless you know what
    # you're doing.
    Vagrant.configure("2") do |config|
     
     config.vm.box = "centos7-box"
     config.vm.network "private_network", ip: "192.168.57.15"
     config.vm.synced_folder "../data", "/vagrant_data" 
    end
  4. 重启两次虚拟机后,登录虚拟机,就可以通过命令 ip addr查看到你设置的 private_network

     enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
     link/ether 08:00:27:4f:ad:ae brd ff:ff:ff:ff:ff:ff
     inet 192.168.57.15/24 brd 192.168.57.255 scope global enp0s8
     valid_lft forever preferred_lft forever
     inet6 fe80::a00:27ff:fe4f:adae/64 scope link
     valid_lft forever preferred_lft forever

    这个时候,基本就可以从主机ping通vagrant虚拟机了。

另外,为了防止访问虚拟机里面的服务而出现以下问题:

curl: (7) Failed connect to 192.168.57.15:8080; Connection refused

建议关闭防火墙:

$ sudo systemctl status firewalld.service # 查看得到“active(running)”,表示防火墙已经被打开了
$ sudo systemctl stop firewalld.service # 关闭防火墙
$ sudo systemctl disable firewalld.service # 永久关闭防火墙
作者:赞原文地址:https://segmentfault.com/a/1190000043853655

%s 个评论

要回复文章请先登录注册