Linux中iptables自定义链

前言:在新的工作环境中看到自定义的iptables链,还是补一下这块知识,自定义链是为了将iptables规则进行分类管理,能够根据业务或服务设置规则,更有效去管理防火墙规则

当iptables规则特别多时,我们需要具备模块化思想,需要将不同目的iptables规则进行归类。
将同一类型的iptables规则作为一个模块(web类,mysql类....),使其更加具有条理性,清爽整洁。
自定义链是除了iptables自带的5个链外,由我们自己定义的新链。
在自定义链中定义的规则不会生效,他需要被内置链引用才可以生效。
删除自定义链,需要将自定义链中的规则先清除,后再删除自定义链。

iptables添加自定义链的方法

-N:new, 自定义一条新的规则链 。
-E:重命名自定义链;
-X:delete,删除自定义的空的规则链 。

1、创建自定义链

语法 
iptables -N 链名
iptables -N test_rule

[root@test 22:27:49 ~]# iptables -L 
Chain test_rule (0 references)
target     prot opt source               destination   

现在创建好了1个自定义链,references表示当前链被引用的次数,新创建的链都显示0,说明未被引用。

2、在自定义链上设置规则

iptables -A test_rule -s 192.168.10.144 -p tcp --dport 81  -j DROP

这时候自定义链的规则还不能使用,必须借助于默认链来是实现。自定义链应该被哪调默认的链引用,取决于应用场景,比如说要匹配入站报文,所以可以在INPUT链中引用

3、将自定义好的链关联至内置链上。引用test_rule链

iptables -A INPUT -j test_rule 

4、查看自定义链test_rule中定义的规则。

[root@test 23:18:18 ~]# iptables -vnL test_rule
Chain test_rule (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       tcp  --  *      *       192.168.10.144       0.0.0.0/0            tcp dpt:81

5、重命名自定义链

iptables -E test_rule in_test_rule

6、删除自定义链

iptables -L --line-numbers 查看策略的序号
iptables -D INPUT 规则行  删除被默认链所引用规则
iptables -F in_test_rule 清空才能删除
iptables -X in_test_rule
posted @ 2022-06-03 23:25  lucky_tomato  阅读(901)  评论(1编辑  收藏  举报