Ip

Linux 如何在預設網關之間進行選擇?

  • February 7, 2020

我有一台帶有兩個 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

問題:

  1. 核心是選擇使用哪個預設 gw,還是同時發送給兩者?
  2. 如果它選擇,它如何選擇?
  3. 影響選擇或使其成為選擇的最有效方法是什麼?

使用 4.4.0-45-generic

在這種情況下,核心根據度量進行選擇:較低的度量獲勝。(路由選擇基於路由特異性、管理成本和度量標準。您的兩個預設網關具有相同的特異性和管理成本。)

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

我來這篇文章是因為我有兩台不同的 PC,每台都有雙網卡,每台配置如下:

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。

沒有定義任何策略,並且 route 命令顯示 Metrics 是相等的……除了沒有 Internet 連接的預設網關使用與 10.10.* 網路關聯的網卡。

顯然(根據經驗,不能保證!)如果核心沒有更好的方法,它將使用它找到的第一個。編輯 /etc/network/interfaces 以便在 /etc/network/interfaces 中對 10.10.* 的引用之前列出對 192.168.* 的引用似乎已經解決了問題。

引用自:https://unix.stackexchange.com/questions/337332