我有一台带有两个网卡的计算机,一个以太坊一无线局域网。
- 无线局域网位于 10.0.0.0/24
- 以太坊位于 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
问题:
- 内核是否选择使用哪个默认 gw,还是同时发送给两者?
- 如果选择的话它会如何选择?
- 影响选择或使其做出选择的最有效方法是什么?
答案1
在这种情况下,内核根据指标进行选择:较低的指标获胜。 (路由选择基于路由特异性、管理成本和指标,按该顺序。您的两个默认网关具有相同的特异性和管理成本。)
要更改选择,最好的方法是更改路由度量。
答案2
我写这篇文章是因为我有两台不同的电脑,每台电脑都有双网卡,每台配置如下:
auto enp6s0
iface enp6s0 inet dhcp
address 192.168.20.36
netmask 255.255.255.0
gateway 192.168.20.1
auto enp7s0
iface enp7s0 inet static
address 10.10.10.3
netmask 255.255.255.0
gateway 192.168.20.1
它们都能够连接到 192.168.* LAN 上的其他计算机和 10.10.* 上的 IOT 小工具,但其中一台无法访问互联网。
没有定义任何策略,并且路由命令显示指标是相同的...除了没有 Internet 连接的默认网关使用与 10.10.* 网络关联的网卡之外。
显然(根据经验,不能保证!)如果内核没有更好的选择,它将使用它找到的第一个。编辑 /etc/network/interfaces 以便对 192.168.* 的引用列在 /etc/network/interfaces 中对 10.10.* 的引用之前,似乎已经解决了该问题。
答案3
通过实验,我认为 Linux 使用您最后添加的(等价)默认网关。