Ip
Linux 如何在預設網關之間進行選擇?
我有一台帶有兩個 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
問題:
- 核心是選擇使用哪個預設 gw,還是同時發送給兩者?
- 如果它選擇,它如何選擇?
- 影響選擇或使其成為選擇的最有效方法是什麼?
使用 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.* 的引用似乎已經解決了問題。