iptables规则的删除-怎么删除一条已有的iptables规则

时间:2024-03-04 15:13:27

语法是: iptables -D chain rulenum [options]
其中: chain 是链的意思,就是INPUT FORWARD 之类的定语
rulenum 是该条规则的编号。从1开始。可以使用iptables -L INPUT –line-numbers列出指定的链的规则的编号来。

所以,例如上面要删除一个INPUT链的规则的话可以这样:

iptables -D INPUT 3

意思是删除第3条规则。

还有第二种方法
第二种办法是 -A 命令的映射,不过用-D替换-A。当你的链中规则很复杂,而你不想计算它们的编号的时候这就十分有用了。
也就是说,你如何一开始时用iptables -A…. 语句定义了一个规则,那么删除此条规则时直接用 -D 来代替- A, 其余的都不变即可,而不需要什么编号了。

======================

说一下上面的 –line-numbers 选项,如下面的命令:

iptables -L INPUT –line-numbers 列出INPUT 链所有的规则
num target prot opt source destination
1 REJECT tcp — anywhere anywhere tcp dpt:microsoft-ds reject-with icmp-port-unreachable
2 REJECT tcp — anywhere anywhere tcp dpt:135 reject-with icmp-port-unreachable
3 REJECT tcp — anywhere anywhere tcp dpt:netbios-ssn reject-with icmp-port-unreachable
4 REJECT udp — anywhere anywhere udp dpt:microsoft-ds reject-with icmp-port-unreachable
5 REJECT udp — anywhere anywhere udp dpt:135 reject-with icmp-port-unreachable
…
…

删除指定的第4行规则:

iptables -D INPUT 4
[root@tp ~]# iptables -F 清除预设表filter中的所有规则链的规则
[root@tp ~]# iptables -X 清除预设表filter中使用者自定链中的规则