iptables 规则控制
利用注释控制 iptables 规则,可以使得管理 iptables 规则变得非常简单高效。通过检索 iptables 规则内的注释内容,可以方便地列出与移除一组 iptables 规则。
何谓“利用注释控制 iptables”
iptables 提供了注释功能,可以在添加规则的同时对添加的规则进行注释。如图,列出的 iptables 规则中,在 /* */
中的即为注释。
通过检索 iptables 规则中的注释,可以实现以下的功能:
- 列出所有的注释
- 对于给定的注释内容,列出所有匹配的规则
- 对于给定的注释内容,删除所有匹配的规则
下面针对各个功能分别进行说明:
注释的添加
注释的添加通过 -m comment --comment [注释内容]
来完成。以下是一条示例语句:
1
|
iptables –I INPUT –p tcp —dport 443 –j REJECT –m comment —comment reject–https
|
上面的语句创建了一条拒绝 HTTPS 传入连接的 iptables 规则,并注释为 reject-https
。
注释的内容不建议使用空格。因为 bash 使用空格来分隔命令与参数。
列出所有注释
1
|
iptables–save | grep –oP “(?<=–comment\ ).*?(?=\ -)” | sort | uniq
|
上面的命令会列出所有的注释,以上图之内容举例,会输出:
1
2
|
catboy–web
noobamici
|
以下的命令也会输出相同的内容,但是因为速度太慢,因此不推荐:
1
|
iptables –L | grep –oP “(?<=/*\ ).*?(?=\ */)” | sort | uniq
|
列出所有匹配注释内容的规则
1
|
iptables–save | grep $comment
|
其中,$comment
是注释内容。以上图为例,有如下输出:
1
2
3
|
# iptables-save | grep catboy-web
–A INPUT –s 1.2.3.4/32 –p tcp –m tcp —dport 443 –m comment —comment catboy–web –j ACCEPT
–A INPUT –s 1.2.3.4/32 –p tcp –m tcp —dport 80 –m comment —comment catboy–web –j ACCEPT
|
删除所有匹配注释内容的规则
1
|
iptables–save | grep –v $comment | iptables–restore
|
其中,$comment
是注释内容。若 $comment
取 catboy-web
,则该命令会删除所有匹配 catboy-web
注释的规则。