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 的二层链接。我可以手动执行此操作:

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 路由表。

我仍然很想知道是否有办法删除主表内的路线,但我现在有一个正常运行的系统,因此在两周内我会将其标记为可接受的解决方案。

相关内容