Linux 如何在默认网关之间进行选择?

las*_*ash 2 routing ip ipv4

我有一台带有两个 NICS 的计算机,一个eth一个wlan

  • wlan位于 10.0.0.0/24
  • eth在 192.168.0.0/16

内核路由表为:

 $ route -n
 Kernel IP routing table
 Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
 0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 enp4s0f0
 0.0.0.0         10.0.0.1        0.0.0.0         UG    600    0        0 wlp3s0
 10.0.0.0        0.0.0.0         255.255.255.0   U     600    0        0 wlp3s0
 169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 enp4s0f0
 192.168.0.0     0.0.0.0         255.255.0.0     U     100    0        0 enp4s0f0
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 内核是选择使用哪个默认 gw,还是发送给两者?
  2. 如果它选择,它如何选择?
  3. 影响选择或使其成为选择的最有效方法是什么?

使用 4.4.0-45-generic

Ste*_*itt 9

在这种情况下,内核根据度量进行选择:较低的度量获胜。(路由选择基于路由特性、管理成本和指标的顺序。您的默认网关具有相同的特性和管理成本。)

要更改选择,最好的方法是更改​​路由度量。

  • OP 输出中的“管理成本”是多少? (2认同)
  • @xhienne 两个默认路由的管理成本均为 0,因为它们对应于连接的接口。路由的管理成本取决于其定义的来源:如果它是连接的接口,则为 0;如果它是静态路由,则为 1;其他路由源的金额各不相同(取决于协议,*例如*RIP v. OSPF)。 (2认同)