之前添加了一块网卡后,archlinux无法上外网了。
也就是说只有一块NAT网卡时可以连接因特网,添加了另一块仅主机网卡后就无法上网了。
一通查询之后才发现,是因为两块网卡都有默认路由,而新加的用来内网ssh连接虚拟机的网卡(Host Only)有更高的路由优先级。所有的网络数据包默认发给高优先级的纯内网网关了,导致无法连接外网。
所以解决办法就是调整路由优先级。
如上图所示,enp0s3是NAT网卡(可连接外网的网卡),enp0s8是仅主机网卡(只与宿主机内网连接的网卡)
enp0s8的Metric路由优先级为0,而enp0s3 的Metric 路由优先级为1002,Metric数字越小,优先级越高。
我们要配置Linux网卡的优先级,就需要修改某个网卡的Metric,然而route命令不允许直接修改,因此需要先删除,后添加。
例如将enp0s8的Metric改大,就需要执行:
route del default gw 192.168.56.1 enp0s8
route add default gw 192.168.56.1 dev enp0s8 metric 1200
再查看路由表:
enp0s3的优先级现在高于enp0s8
试一下能不能访问外网了:
ping 223.5.5.5 # ping 阿里云的dns
ok,问题解决!
参考链接:
ubuntu 双网卡 默认 路由 问题
Linux网卡优先级配置及同时访问内外网设置