问题背景
公司电脑上用virtualbox安装了archlinux虚拟机,使用自带的nat网卡默认可以访问外网。此外配置了一个host-only网卡用于和宿主机(host)互相访问。遇到一个奇怪的问题就是,自虚拟机重启一天之内,nat网卡可以正常上网(ping baidu.com通),一天后就上不了网了。
尝试
将宿主机网卡共享给host-only网卡,让虚拟机通过host-only网卡上网,一开始配置完好使了一段时间,第二天来又不行了,原因不明。
最后的解决方案(伪)
- 升级virtualbox版本
- 配置路由规则,优先使用nat网卡访问外网
$ ip route
default via 10.0.2.2 dev enp0s3 proto dhcp src 10.0.2.15 metric 100
default via 192.168.137.1 dev enp0s8 proto static metric 234 # 主动设置
10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100
10.0.2.2 dev enp0s3 proto dhcp scope link src 10.0.2.15 metric 100
192.168.137.0/24 dev enp0s8 proto kernel scope link src 192.168.137.200
10.2.2.2是nat网卡的网关,192.168.137.1是host-only网卡的网关。将metric值设大些,流量会优先从metric值小的路由走。
一天之后,仍然可以访问外网。不知道是升级virtualbox版本解决的还是设置路由优先级解决的。
谨此记录,备日后用。
真!现在的解决方案
偶然发现,virtualbox的多个虚拟机使用nat网络的接口ip一样(默认都是10.0.2.15),稍加探索发现每个虚拟机都有一套自己的nat网络,互相独立。所以不同虚拟机的nat网关(10.0.2.2)其实不是同一个实例。随之,通过全局设定添加一个nat网关,把两个虚拟机的nat网络配置均改为新增的全局nat网关。发现两个虚拟机的ip地址有所不同,且在同一网段。且nat网关的地址变更为10.0.2.1. 更神奇的是,如果上面的断网问题发生了,不用关闭虚拟机,通过改nat网卡的配置,改完虚拟机又有网了!虽然不是根本的解决方案,至少可以不关机让它再次有网了!且看第二天会不会断网吧。
update: 实践证明:没有断网!!!!!
Attention
一定要用全局NAT网络!
配置参考:https://blog.csdn.net/qq_51153463/article/details/123966124