踩一次vagrant网络的坑

踩一次vagrant网络的坑

问题描述
使用vagrant启用虚拟机后,局域网内可以访问,但是局域网的无线wifi无法访问

环境描述

主机:

  • ip: 192.168.1.189
  • netmask: 255.255.255.0
  • gateway: 192.168.1.254

虚拟机

  • ip: 192.168.1.188
  • netmask: 255.255.255.0
  • gateway: 此处有坑 下文详细介绍

验证过程

最开始发现这个问题的时候,就已经猜测是网络的问题了
于是我启动另一台windows虚拟机,使用手动配置ip的方式 发现网络是可达的
因此这个地方就可以确定是网关配置的问题了
那么翻一下vagrant的官方文档
找到了这样一个配置

Vagrant.configure("2") do |config|
  config.vm.network "public_network", ip: "192.168.0.17"

  # default router
  config.vm.provision "shell",
    run: "always",
    inline: "route add default gw 192.168.0.1"

  # default router ipv6
  config.vm.provision "shell",
    run: "always",
    inline: "route -A inet6 add default gw fc00::1 eth1"

  # delete default gw on eth0
  config.vm.provision "shell",
    run: "always",
    inline: "eval `route -n | awk '{ if ($8 ==\"eth0\" && $2 != \"0.0.0.0\") print \"route del default gw \" $2; }'`"
end

仔细看看这里有一个这样的配置

inline: "route add default gw 192.168.0.1"

那么解决方法就来了

解决问题

首先在虚拟机中ifconfig查看自己的网卡
我的ubuntu中是enp0s8 (centos中一般是eth1)

修改VagrantFIle如下

 config.vm.network "public_network", ip:"192.168.110.191", bridge:"enp4s0"
 config.vm.provision "shell", run: "always", inline: "route add default gw 192.168.110.254  enp0s8"

最后执行命令,搞定

vagrnat provision