踩一次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