如何使用 netplan 创建两个独立的路由表?

如何使用 netplan 创建两个独立的路由表?

我有一台 Ubuntu 18.04 主机,该主机在两个子网上有两个网络接口。我想设置对称路由,以便从一个接口接收的流量对称地从同一接口发送出去。

我知道如何使用 Netplan 进行简单的网络配置,但对于更高级的配置我却束手无策。具体来说:

  1. 像我一样添加默认路由的 Netplan 语法是什么ip route add default via 192.168.0.1 dev ens192 tab 1
  2. 如何priority为路线添加标签?

我的服务器有两个IP:

$ ip a|grep "inet "
inet 127.0.0.1/8 scope host lo
inet 192.168.0.10/22 brd 192.168.0.255 scope global ens192
inet 192.168.1.10/24 brd 192.168.1.255 scope global ens224
$

我可以使用以下ip规则来获取我想要的表:

首先,我为每个网络创建一条路由,然后添加一个默认网关。

$ ip route add 192.168.0.0/24 dev ens192 tab 1
$ ip route add 192.168.1.0/24 dev ens224 tab 2
$ ip route add default via 192.168.0.1 dev ens192 tab 1
$ ip route add default via 192.168.1.1 dev ens224 tab 2

然后,我可以创建相应的规则:

$ ip rule add from 192.168.0.10/32 tab 1 priority 100
$ ip rule add from 192.168.1.10/32 tab 2 priority 200
$ ip route flush cache

这将获得我想要的路线:

$ ip route show tab 1
default via 192.168.0.1 dev ens192
$ ip route show tab 2
default via 192.168.1.1 dev ens224
$ ip route
default via 192.168.0.10 dev ens192

以及我想要的规则:

$ ip rule show
0:      from all lookup local
100:    from 192.168.0.10 lookup 1
200:    from 192.168.1.10 lookup 2
32766:  from all lookup main
32767:  from all lookup default

答案1

    ens2f1:
        addresses:
        - x.x.x.x/x
        routes:
        - to: 0.0.0.0/0
          via: y.y.y.y/y
          table: 200
        routing-policy:
        - from: z.z.z.z/z
          table: 200
          priority:

希望这能回答你的两个问题

答案2

当您指定routes:并指定table:这些路由时,您实际上已经创建了一个可以在配置中的其他地方引用的路由表。您可以通过添加该接口的 IP 来为给定接口创建基于源的路由,使用routing-policy您之前在路由中定义的表。在我刚刚弄清楚之前,这些配置对我来说都没有任何意义。from:table:

ip route add default via 192.168.0.1 dev ens192 tab 1对应于

ens192:
  addresses: [foo.bar]
  routes:
  - to: default
    via: 192.168.0.1
    table: 1
  routing-policy:
  - from: foo.bar
    table: 1

答案3

提供的两个答案都有问题。第一个答案与提出的问题不完全对应,可能会让其他人感到困惑。第二个答案没有指出,与提供的 netplan 配置相匹配的完整对应 shell 命令包括:

ip rule add from foo.bar table 1

因此,为了完整性,这里有一个 netplan 配置,它根据 OP 提供的数据实现 OP 所需的目标,并省略任何不必要的内容:

   ens192:
        addresses:
        - 192.168.0.10/22
        routes:
        - to: default
          via: 192.168.0.1
   ens224:
        addresses:
        - 192.168.1.10/24
        routes:
        - to: default
          via: 192.168.1.1
          table: 2
        routing-policy:
        - from: 192.168.1.10
          table: 2

相关内容