我有一个非常简单的标准路由表在我的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路由,你会怎么做”
任何方式这样做? (除了用一堆更具体的路由来replace10.0.0.0/8以仔细避免10.0.2 / 24之一)
路由匹配作为最具体的胜利。
这个:
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
vs /8
因此,只需添加两条路由, 10.0.2.0/24
的stream量将匹配该路由,其他任何内容都将匹配较不具体的/ 8路由。
请记住,您的默认路由是0.0.0.0/0,它是存在的最不明确的CIDR,这就是为什么所有其他路由在默认路由之前匹配的原因。 (记得192.168.1.0/24
是0.0.0.0/0
一部分)
为什么不把路由添加到192.168.1.1上的10.0.0.0/8? 这样,networking上的新主机就不需要知道这个静态路由,并且可以将192.168.1.1作为默认路由,并负责查找一次性networking,例如10.0.2.0/24,更一般的是10.0.0.0 / 8。