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