设置子网路由的例外

设置子网路由的例外

我的Linux机器上有一个非常简单的标准路由表:

default via 192.168.1.1 dev eth0  proto static
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.162  metric 1

现在我需要将特定子网路由到另一个网关。目前没有问题,只需添加

10.0.0.0/8 via 192.168.1.2 dev eth0

但是,其中有一个子集不应该放在那里。这有效:

10.0.2.0/24 via 192.168.1.1 dev eth0

但我不想在那里重复默认网关;我只想说,“对于 10.0.2.0/24,如果没有定义 10.0.0.0/8 路由,则执行您要执行的操作”

有什么办法吗?(除了用一堆更具体的路线替换 10.0.0.0/8 以小心避开 10.0.2/24 路线)

答案1

路由匹配以最具体的为准。

这:

10.0.2.0/24 via 192.168.1.1 dev eth0

比这更具体:

10.0.0.0/8 via 192.168.1.2 dev eth0

/24对比/8

因此,只需添加两条路由,流量10.0.2.0/24就会与该路由匹配,其他任何路由都会与不太具体的 /8 路由匹配。

请记住,您的默认路由是 0.0.0.0/0,这是现有的最不具体的 CIDR,这就是为什么所有其他路由都在您的默认路由之前匹配。(192.168.1.0/24是记住的一部分0.0.0.0/0

答案2

为什么不在 192.168.1.1 上添加到 10.0.0.0/8 的路由?这样,您网络上的新主机就不需要知道该静态路由,您可以将 192.168.1.1 保留为默认路由,并让其负责查找一次性网络,如 10.0.2.0/24 以及更常见的 10.0.0.0/8。

相关内容