iptables自定义链
target相关概念
target可以是一个动作,也可以是一个自定义链。
-
当target为一个动作时,表示报文按照指定的动作处理
-
当target为自定义链时,表示报文由自定义链中的规则处理
自定义链:
-
用来解决多条规则的情况下,方便我们对不用服务的规则进行管理。
-
自定义链并不能直接使用,而是需要被默认链引用才能够使用
创建自定义链
-
使用 -N 选项可以创建自定义链。
-
自定义链并不能直接使用,而是需要被默认链引用才能够使用
范例:创建一个叫做IN_WEB的自定义链
[root@CentOS8 ~]# iptables -t filter -N IN_WEB
[root@CentOS8 ~]# iptables -vL -t filter
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain IN_WEB (0 references)
pkts bytes target prot opt in out source destination
说明:
自定义链的引用计数为0 (0 references),也就是说,这条自定义链还没有被任何默认链所引用,所以,即使IN_WEB中配置了规则,也不会生效
在自定义链中配置规则
范例:实现别的主机不能ping通本机
[root@CentOS8 ~]# iptables -t filter -I IN_WEB -p icmp --icmp-type 8/0 -j REJECT
说明:
因为没有在默认链里面引用自定义规则,所以配置的规则不生效。
引用自定义的规则
[root@CentOS8 ~]# iptables -t filter -I INPUT -j IN_WEB
说明:
-
自定义链在哪里创建,应该被哪条默认链引用,取决于实际的工作场景,因为此处示例的规则是匹配入站报文,所以在INPUT链中引用自定义链
-
IN_WEB链的引用计数已经变为1,表示这条自定义链已经被引用了1次,自定义链还可以引用其他的自定义链
修改自定义的链名
"-E"选项可以修改自定义链名
删除自定的链
"-X"选项可以删除自定义链,但是删除自定义链时,需要满足两个条件:
-
1、自定义链没有被任何默认链引用,即自定义链的引用计数为0。
-
2、自定义链中没有任何规则,即自定义链为空。