Linux

通過不同介面到同一網路的兩條路由

  • June 27, 2017

對於定義為的橋

auto br0
iface br0 inet dhcp
       bridge-ifaces enp0s8
       bridge-ports enp0s8
       up ifconfig enp0s8 up

iface enp0s8 inet manual

作業系統在介面上設置了 2 條路由up

192.168.1.0/24 dev enp0s8  proto kernel  scope link  src 192.168.1.134
192.168.1.0/24 dev br0  proto kernel  scope link  src 192.168.1.134

但是,如果嘗試使用以下方法手動製作相同的內容:

ip route add 192.168.1.0/24 dev br0 proto kernel src 192.168.1.134
ip route add 192.168.1.0/24 dev enp0s8 proto kernel src 192.168.1.134

然後第二個命令失敗並顯示RTNETLINK answers: File exists.

問題:

核心作弊還是我在ip route add命令中遺漏了一些鍵?

這不是關於這個配置是否有意義,而是關於“核心如何做到這一點”。

您應該查看官方文件(在第一個範例之後):

您會注意到 auto eth0 和 iface eth0 inet 手冊不在文件中。這是因為 br0 會調出分配給它的組件。

配置連接到網橋的乙太網適配器是沒有意義的,因為它們只是共享網橋的 IP 地址。

您無法手動添加路由的原因是您沒有重現 init 腳本中的步驟。如果您在 上設置 IP enp0s8,則係統將允許您添加路由。再次注意這是錯誤的,並且會使路由變得更加複雜(尤其是如果您執行高級路由、轉發或 NATing)。

要重現系統的初始化腳本,請在刪除所有相關路由並刪除橋(如果已存在)後:

brctl addbr br0
ifconfig enp0s8 192.168.1.0/24
ifconfig br0 192.168.1.0/24

這將ip route輸出兩條路線。如果您添加enp0s8到橋接器,那麼這將不再起作用。您只是從明顯糟糕的配置中得到了一個稍微異常的結果。

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