自定义链是为了将iptables规则进行分类管理,想象一下,如果INPUT链中存放了200条规则,这200条规则有针对httpd服务的,有针对sshd服务的,有针对私网IP的,有针对公网IP的,假如,我们突然想要修改针对httpd服务的相关规则,难道我们还要从头看一遍这200条规则,找出哪些规则是针对httpd的吗?这显然不合理。

    1、创建一个名为in_test的链
    # iptables -N in_test
    1

    2、引用in_test 链
    # iptables -I INPUT -p tcp —dport 8000 -j in_test
    1

    3、为in_test链创建规则
    # iptables -I in_test -p tcp —dport 8000 -j REJECT
    # iptables -I in_test -p tcp -s 192.168.2.128 —dport 8000 -j ACCEPT
    1
    2

    4、重命名in_test链
    # iptables -E in_test IN_WEB
    1

    5、删除链
    # iptables -D INPUT 1
    # iptables -F IN_WEB
    # iptables -X IN_WEB
    1
    2
    3

    6、自定义链与原生链关系
    这里以INPUT链与IN_WEB为例说明,两者类似主配与分配关系(可类比成/etc/sudoers与/etc/suders.d/关系),iptables规则是自上而下进行匹配使用–line可查看标签号,即为规则会从数字小的规则由小往大去匹配。自定义链被引用时设置了一些规则条件,本文中设置了8000端口的访问会匹配IN_WEB中的规则,也就是说如果IN_WEB不被INPUT或其他链引用那么IN_WEB的规则将不会被任何请求匹配,同样IN_WEB链中其他端口的规则也不会被匹配,如下图标签为1的规则将不具备任何意义。

    接上文,INPUT与IN_WAB关系及iptables链的匹配规则,下图中标签2将不会被匹配,因为标签1的规则中引用了IN_WAB链,且IN_WAB链中标签为3的规则拒绝了所有请求,
    为此如果希望添加某个IP或IP段访问主机8000端口可像INPUT链或IN_WAB链添加相应IP或IP段的ACCEPT规则即可。如下图。

    ————————————————
    版权声明:本文为CSDN博主「Nanqiao_X」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/Nanqiao_X/article/details/122824989