清空iptables规则

常见的两种清空iptables规则的方法是:

  1. 手动给每一条规则都执行iptables -D
    • 针对默认表,iptables -D <chain_name> ...
    • 针对其他表,iptables -t <table_name> -D <table_name> ...
  2. 查找规则在表的链中是第几条(Line Number),用条目序号进行删除
    • 找条目序号:iptables [-t <table_name>] -L --line-number
    • 使用条目序号进行删除:iptables [-t <table_name>] -D <chain_name> <line_nuber>

但也可以使用下面的方法批量删除:

1
2
3
4
5
6
7
8
9
10
11
# 如果iptables的默认规则不是ACCEPT,为了防止清除后主机拒绝一切数据包,将所有内置链的默认规则设置为ACCEPT
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# 删除所有默认表中的rules
iptables -F
# 删除指定的其他表中的rules
iptables -t <table_name> -F
# 删除默认表中所有user-defined chain(因为此时所有chain均为空)
iptables -X

使用场景:在需要完全重建iptables规则,或是使用其他软件代替/包装iptables(如firewalld)时;

评论