Linux ip规则:从表中删除所有规则

Linux ip规则:从表中删除所有规则,linux,bash,routing,routes,Linux,Bash,Routing,Routes,我正在编写一个bash脚本,它使用deip-rule…命令来添加和删除一些规则。但我在移除它们时遇到了问题。例如,ip规则显示输出如下所示: 0: from all lookup local 32764: from all fwmark 0x3022 lookup 12322 32765: from 10.10.10.1 lookup 12322 32766: from all lookup main 32767: from all lookup default while

我正在编写一个bash脚本,它使用de
ip-rule…
命令来添加和删除一些规则。但我在移除它们时遇到了问题。例如,
ip规则显示
输出如下所示:

0:  from all lookup local 
32764:  from all fwmark 0x3022 lookup 12322 
32765:  from 10.10.10.1 lookup 12322 
32766:  from all lookup main 
32767:  from all lookup default
while ip rule delete from 0/0 to 0/0 table 12322 2>/dev/null; do true; done
我所有的信息都是表id(12322),我需要删除查找该表的所有规则

我尝试了以下命令:
ip rule del table 12322
ip rule del lookup 12322
,但这两个命令总是删除第一条规则,而不是第一条查找12322的规则,我的意思是从所有本地查找中删除第一条规则
。如果我运行这些命令中的任何一个5次,我就没有规则了


如何在一个命令中删除
lookup 12322
中的所有规则

ip rule delete from 0/0 to 0/0 table 12322

问题似乎是iproute上的一个bug:

我现在使用的是类似于
ip-rule-show | grep“regex”| xargs-r-L1 ip-rule-del的东西,它似乎工作得很好。

您可以使用“从0/0到0/0”删除,但这只会删除一条规则。要将它们全部删除,请使用以下内容:

0:  from all lookup local 
32764:  from all fwmark 0x3022 lookup 12322 
32765:  from 10.10.10.1 lookup 12322 
32766:  from all lookup main 
32767:  from all lookup default
while ip rule delete from 0/0 to 0/0 table 12322 2>/dev/null; do true; done
这将删除所有规则,直到没有更多规则为止

ip rule del prio {rule #}
简单。它起作用了。根据库兹涅佐夫最初的iproute2指令,这是“官方”方法

另请注意iproute2手册:

警告:使用这些命令对RPDB所做的更改不会激活 马上。假设脚本完成一批更新后 乌什 具有ip路由刷新缓存的路由缓存

要删除所有规则,可以使用以下命令

ip route del

如果您通过SSH连接到服务器,这样做会断开连接并将您锁定。

@Si289我的问题似乎是iproute上的一个bug。上面的一行代码适用于我,没有“从0/0到0/0”