ip rule有一个优先级选项.优先级选项是选择路由表的第一种方式.具有较低优先级值的规则将在较高优先级之前使用.调用ip规则显示您将在左侧看到打印优先级的规则.

[priority]: [rule]

为了完整起见,man ip-rule引用:

priority PREFERENCE

the priority of this rule. PREFERENCE is an unsigned integer value, higher number means lower priority, and rules get processed in order of increasing number. Each rule should have an explicitly set unique priority value. The options preference and order are synonyms with priority.

强调我的.

首先,最好是为每条规则使用唯一的优先级,然后就不存在歧义.对于具有相同优先级的规则,将按照添加的顺序对它们进行评估.如果规则是互斥的,则风险并不大(例如,与其他主机不同的源IP匹配的两个规则).如果自动添加规则,则可能意味着将使用按字母顺序排列的规则文件,这不是确定路由的好方法.

我如何得出使用第一个添加规则的结论:

>在同一网络上创建了具有两个接口的VM(vm1)(192.168.0.1/24和192.168.0.2/24).

>在网络上创建了另一个VM(vm2)(192.168.0.3/24)

>在vm1上创建了两个路由表table1和table2

ip route add default dev eth0 table table1

ip route add default dev eth1 table table2

>创建了两个具有不同优先级的规则

ip规则添加到192.168.0.3表table1优先级10

ip规则添加到192.168.0.3表table2优先级11

>从vm1 ping vm2

> tcpdump -i eth0 host 192.168.0.3显示ping

> tcpdump -i eth1 host 192.168.0.3没有

这是预期的优先行为

>重新添加优先级为10的table2规则,ping仍然只出现在eth0上. ip rule show在table2规则之前列出table1规则.

>删除table1规则,ping出现在eth1上.

>重新添加table1规则,ping仍然在eth1上. ip rule show在table1之前列出table2规则.

Logo

更多推荐