我的路由表中有几个接口,第一个接口停止工作。我想暂时将其下移,使其下方的一个接口成为默认接口。我是否必须将其删除并再次添加,或者是否有 ip/route/ifconfig 命令可以将条目上移或下移?
答案1
路由表并非按自上而下的顺序使用。相反,更具体的路由(前缀长度较长)始终优先于不太具体的路由 - 例如,/24 路由优先于 /16 路由,而 /16 路由又优先于“默认”/0 路由。
如果有两条去往完全相同目的地的路由(例如,两条路由都是去往 192.168.1.0/24),则会根据它们的“度量”参数进行比较 - 这基本上是路由的成本,因此最低度量值(最低成本)获胜。
因此,如果您有多条“默认”路由,则可以通过删除一条路由并使用较低的指标重新添加该路由来确定其优先级,例如:
$ ip route
default via 192.168.7.1 dev eth0 proto dhcp metric 100
default via 192.168.1.1 dev wlan0 proto dhcp metric 600
$ ip route del default dev wlan0
$ ip route add default via 192.168.1.1 dev wlan0 metric 50
(您实际上不需要删除不需要的高度量路线,特别是如果更改是暂时的 - 添加新的路线就足够了。)
请注意,在这种情况下,您可能无法使用ip route change
或ip route replace
,因为它们将指定的指标视为查找关键字并将设备作为要更新的参数,而您可能想要做完全相反的事情。