双网卡在两个都是default路由时,会怎样选择路径?

pi@raspberrypi:~ $ route 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.10.68.1      0.0.0.0         UG    202    0        0 eth0
default         172.20.10.1     0.0.0.0         UG    303    0        0 wlan0
10.10.68.0      0.0.0.0         255.255.255.0   U     202    0        0 eth0
172.20.10.0     0.0.0.0         255.255.255.240 U     303    0        0 wlan0
pi@raspberrypi:~ $ ping www.baidu.com
PING www.a.shifen.com (180.101.49.12) 56(84) bytes of data.
^C
--- www.a.shifen.com ping statistics ---
5 packets transmitted, 0 received, 100% packet loss, time 4184ms

由于我的有线eth0连接的是公司的网络,上网受限,所以ping百度ping不通。

然后我又加了一条路由

pi@raspberrypi:~ $ sudo route add default gw 172.20.10.1
pi@raspberrypi:~ $ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.20.10.1     0.0.0.0         UG    0      0        0 wlan0
default         10.10.68.1      0.0.0.0         UG    202    0        0 eth0
default         172.20.10.1     0.0.0.0         UG    303    0        0 wlan0
10.10.68.0      0.0.0.0         255.255.255.0   U     202    0        0 eth0
172.20.10.0     0.0.0.0         255.255.255.240 U     303    0        0 wlan0

结果ping百度就ping通了

pi@raspberrypi:~ $ ping www.baidu.com
PING www.a.shifen.com (36.152.44.95) 56(84) bytes of data.
64 bytes from 36.152.44.95 (36.152.44.95): icmp_seq=1 ttl=56 time=39.2 ms
64 bytes from 36.152.44.95 (36.152.44.95): icmp_seq=2 ttl=56 time=58.0 ms
64 bytes from 36.152.44.95 (36.152.44.95): icmp_seq=3 ttl=56 time=41.6 ms
64 bytes from 36.152.44.95 (36.152.44.95): icmp_seq=4 ttl=56 time=39.9 ms

总结:

多条默认路由,那条靠前就用哪个。

想两个都用需要加策略:

一般保留出口为default,连接内网的去掉default,加入内网网段的路由即可。

当然也有两个接口都可以访问外网的,那就需要自己做策略了,分协议走不同的接口,比如www走eth0,ftp走eth1等。

参考:

请问双网卡在两个都是default route的时候会怎样选择路径

Linux下route add route del 用法