如果您有一个大型路由器,您可能需要满足不同用户的需求,这些用户应该得到不同的服务。路由策略数据库允许您通过拥有多组路由表来实现这一点。
如果您想使用此功能,请确保您的内核已编译 "IP: advanced router" 和 "IP: policy routing" 功能。
当内核需要做出路由决策时,它会找出需要查询哪个表。默认情况下,有三个表。旧的 'route' 工具和 ip 工具(默认情况下)都会修改 main 和 local 表。
默认规则
[ahu@home ahu]$ ip rule list 0: from all lookup local 32766: from all lookup main 32767: from all lookup default |
这列出了所有规则的优先级。我们看到所有规则都适用于所有数据包('from all')。我们之前已经见过 'main' 表,它由以下命令输出ip route ls,但 'local' 和 'default' 表是新的。
如果我们想做更复杂的事情,我们生成指向不同表的规则,这些规则允许我们覆盖系统范围的路由规则。
有关内核在有更多匹配规则时的确切语义,请参阅 Alexey 的 ip-cref 文档。