为什么 netplan 路由配置是接口的一部分

为什么 netplan 路由配置是接口的一部分

此示例来自netplan 示例

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
     addresses:
       - 9.0.0.9/24
       - 10.0.0.10/24
       - 11.0.0.11/24
     #gateway4:    # unset, since we configure routes below
     routes:
       - to: 0.0.0.0/0
         via: 9.0.0.1
         metric: 100
       - to: 0.0.0.0/0
         via: 10.0.0.1
         metric: 100
       - to: 0.0.0.0/0
         via: 11.0.0.1
         metric: 100

为什么路由是接口配置的一部分?
路由不是全局的吗?
路由和接口是两个不同的东西。

答案1

路由特定于某个接口的情况并不少见,但是它们通常是全局的。

例如,如果我有一个 VPN 接口,我可能希望通过该链路路由 VPN 另一端的所有子网。这些子网很可能是私有/保留子网,这意味着它们仅在 VPN 处于活动状态时才可用,因此将它们始终放在路由表中是没有意义的,尽管它可能仍然有效。

在您提供的示例中,有多个默认路由,可能是为了冗余。

在路由中,可能要理解的最重要的规则是“最具体路由优先”规则,这意味着,如果您尝试访问10.0.0.1,它将先遍历的路由,10.0.0.0/25然后再遍历的路由10.0.0.0/24,而后者显然会在的之前0.0.0.0/0

答案2

路由在 Linux 路由表中确实有一个关联的接口;您可以在系统上的列输出中看到这一点ip route showdev此信息既可以让内核知道需要将流量发送到哪个接口,而无需计算每个数据包的路由依赖性,也可以让内核在给定接口处于“关闭”状态时执行正确的路由操作。

从 netplan 的角度来看,路由和设备之间的关联非常重要,因为设备不会同时出现,并且系统应该只在相应网关的路由可用时尝试将路由添加到内核。

相关内容