Linux
通過不同介面到同一網路的兩條路由
對於定義為的橋
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
到橋接器,那麼這將不再起作用。您只是從明顯糟糕的配置中得到了一個稍微異常的結果。