Netplan 將路由從主路由表(重新)移至不同的路由策略

Netplan 將路由從主路由表(重新)移至不同的路由策略

高級概述是這樣的:我有一個 Impish Ubuntu 伺服器,有兩個接口,地址為172.16.2.103/2410.1.2.10/24。我希望預設流量通過網關172.16.2.254。但是,當我指定 的來源位址時,10.1.2.10我希望它具有 的網關10.1.2.254。下面的內容在 99% 的情況下都有效,但我希望核心172.16.2.103 即使在聯繫時也能選擇來源 IP 10.1.2.0/24。這是可能的,/etc/networks/interfaces 但我無法使用 netplan 弄清楚它。

這是我的 netplan 配置中的內容:

network:
  ethernets:
    ens160:
      addresses:
      - 172.16.2.103/24
      routes:
      - to: 0.0.0.0/0
        via: 172.16.2.254
      nameservers:
        addresses:
        - 10.1.2.1
        search:
        - localdomain
      optional: yes
    ens192:
      addresses:
      - 10.1.2.10/24
      routing-policy:
      - from: 10.1.2.10
        table: 10
      routes:
      - to: 0.0.0.0/0
        via: 10.1.2.254
        table: 10
      optional: yes
  version: 2

正如我所說,這大多數情況下效果很好。我有一個路由策略(又稱 ip 規則),這意味著如果我更改資料包的來源位址,我會尋找 10 路由表。但是,我希望從主路由中刪除一條附加路由。

這是我檢查路由表時得到的:

IN1:  me@host:~$ ip route
OUT1: default via 172.16.2.254 dev ens160 proto static
OUT2: 172.16.2.0/24 dev ens160 proto kernel scope link src 172.16.2.103
OUT3: 10.1.2.0/24 dev ens192 proto kernel scope link src 10.1.2.10

IN2:  me@host:~$ ip route list table 10
OUT5: default via 10.1.2.254 dev ens192 proto static

我想將 OUT3 刪除,或更準確地說移到 10 路由表中,以便主路由表中沒有到 10.1.2.0/24 的第 2 層連結。我可以這樣手動完成:

me@host:~$ sudo ip route del 10.1.2.0/24 dev ens192

但我不知道如何將其嵌入 netplan 中。以前我會新增一個 up 語句,/etc/network/interfaces但這不再是選項。

提前致謝。

答案1

我不會稱其為解決方案,而是一種解決方法。我的問題是我想刪除不需要的路線:解決方法是創建其他優先權更高的路由!

network:
  ethernets:
    ens160:
      addresses:
      - 172.16.2.103/24
      routes:
      - to: 0.0.0.0/0
        via: 172.16.2.254
      # ** ADDITIONAL ROUTE **
      - to: 0.0.0.0/0
        via: 172.16.2.254
        table: 172
      # **********************
      nameservers:
        addresses:
        - 10.1.2.1
        search:
        - localdomain
      optional: yes
    ens192:
      addresses:
      - 10.1.2.10/24
      routing-policy:
      - from: 10.1.2.10
        table: 10
      # ** ADDITIONAL ROUTING POLICY **
      - to: 172.16.2.0/24
        table: 172
      # *******************************
      routes:
      - to: 0.0.0.0/0
        via: 10.1.2.254
        table: 10
      optional: yes
  version: 2

請注意 ens160 介面的附加路由策略和路由。這將建立另一個名為 172 的路由表,並且該表具有與主表的預設路由 (172.16.2.254) 相同的預設路由。現在當我路由時172.16.2.0/24,它不會通過錯誤路由的主表,而是透過 172 路由表。

我仍然很想知道是否有辦法刪除主表中的路線,但我現在有一個正常運行的系統,所以在兩週內我會將其標記為可接受的解決方案。

相關內容