Ubuntu 18.04 基于策略的路由:netplan 未填充路由表

Ubuntu 18.04 基于策略的路由:netplan 未填充路由表

我有 2 个网络接口 - 1 个连接到内部网络,1 个连接到外部网络,两个接口都从 DHCP 获取其 IP。

默认情况下,流量通过内部网络,外部网络应通过名为“public”的路由表单独路由。我尝试使用 netplan 实现此目的,配置如下:

network:
  version: 2
  ethernets:
    ens3:
       dhcp4: yes
       dhcp4-overrides:
         route-metric: 99
    ens4:
       dhcp4: yes
       dhcp4-overrides:
         route-metric: 100
       routing-policy:
         - from: w.x.y.z
           table: 201
         - to: w.x.y.z
           table: 201
       routes:
         - to: 0.0.0.0/0
           via: w.x.v.1
           table: 201
         - to: w.x.v.0/23
           via: w.x.v.1
           table: 201 

运行后netplan apply我希望看到以下内容:

root@my-u18:~# ip route show table 201
default via w.x.v.1 dev ens4
x.y.v.0/23 dev ens4 scope link src w.x.y.z

但实际上路由表并没有填充

root@my-u18:~# ip route show table 201
root@my-u18:~#

但是,路由规则似乎适用:

root@my-u18:~# ip rule
0:      from all lookup local 
0:      from w.x.y.z lookup public 
0:      from all to w.x.y.z lookup public 
32766:  from all lookup main 
32767:  from all lookup default

我错过了什么?

答案1

您是否已将表 201 添加到/etc/iproute2/rt_tables(或/etc/iproute2/rt_tables.d/)?

/etc/iproute2/rt_tables.d/foo.conf如果还没有,请尝试添加包含以下内容的文件:

201    foo

然后运行netplan apply,看看201中的路线是否出现。

答案2

我使用 Debian 11,但 Ubuntu 是 Debian 的衍生产品,所以我预计问题类似。

在 Debian 11 中,这是由于 netplan.io 中的错误造成的。

netplan.io 版本 0.101-4(Debian 11 中的默认版本)存在缺陷,并且没有填充策略路由表。

版本 0.105-2(可从 Debian 测试仓库获得)运行正常。然而,这也会从测试仓库中引入大量依赖项,这可能会带来风险。

Ubuntu 20.04 发行版有一个 netplan.io 0.104-0 更新,可以在 Debian 11 上安装而无需提取其他依赖项:

wget http://archive.ubuntu.com/ubuntu/pool/main/n/netplan.io/netplan.io_0.104-0ubuntu2~20.04.2_amd64.deb
wget http://archive.ubuntu.com/ubuntu/pool/main/n/netplan.io/libnetplan0_0.104-0ubuntu2~20.04.2_amd64.deb
sudo apt install ./netplan.io_0.104-0ubuntu2~20.04.2_amd64.deb ./libnetplan0_0.104-0ubuntu2~20.04.2_amd64.deb

相关内容