当默认链中的规则非常多时,不方便我们管理。

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

  所以,iptables中,可以自定义链,通过自定义链即可解决上述问题。

  假设,我们自定义一条链,链名叫IN_WEB,我们可以将所有针对80端口的入站规则都写入到这条自定义链中,当以后想要修改针对web服务的入站规则时,就直接修改IN_WEB链中的规则就好了,即使默认链中有再多的规则,我们也不会害怕了,因为我们知道,所有针对80端口的入站规则都存放在IN_WEB链中,同理,我们可以将针对sshd的出站规则放入到OUT_SSH自定义链中,将针对Nginx的入站规则放入到IN_NGINX自定义链中,这样,我们就能想改哪里改哪里,再也不同担心找不到规则在哪里了。

  但是需要注意的是,自定义链并不能直接使用,而是需要被默认链引用才能够使用,空口白话说不明白,等到示例时我们自然会明白。

  说了这么多,我们来动手创建一条自定义链,使用-N选项可以创建自定义链,示例如下:

  

  如上图所示,"-t filter"表示操作的表为filter表,与之前的示例相同,省略-t选项时,缺省操作的就是filter表。

  "-N IN_WEB"表示创建一个自定义链,自定义链的名称为"IN_WEB"

  自定义链创建完成后,查看filter表中的链,如上图所示,自定义链已经被创建,而且可以看到,这条自定义链的引用计数为0 (0 references),也就是说,这条自定义链还没有被任何默认链所引用,所以,即使IN_WEB中配置了规则,也不会生效,我们现在不用在意它,继续聊我们的自定义链。

  好了,自定义链已经创建完毕,现在我们就可以直接在自定义链中配置规则了,如下图所示,我们配置一些规则用于举例。

  

  如上图所示,对自定义链的操作与对默认链的操作并没有什么不同,一切按照操作默认链的方法操作自定义链即可。

  现在,自定义链中已经有了一些规则,但是目前,这些规则无法匹配到任何报文,因为我们并没有在任何默认链中引用它。

  既然IN_WEB链是为了针对web服务的入站规则而创建的,那么这些规则应该去匹配入站的报文,所以,我们应该用INPUT链去引用它。

  当然,自定义链在哪里创建,应该被哪条默认链引用,取决于实际的工作场景,因为此处示例的规则是匹配入站报文,所以在INPUT链中引用自定义链。

  示例如下:

  

  上图中,我们在INPUT链中添加了一条规则,访问本机80端口的tcp报文将会被这条规则匹配到

  而上述规则中的"-j IN_WEB"表示:访问80端口的tcp报文将由自定义链"IN_WEB"中的规则进行处理,没错,在之前的示例中,我们使用"-j"选项指定动作,而此处,我们将"动作"替换为了"自定义链",当"-j"对应的值为一个自定义链时,就表示被当前规则匹配到的报文将交由对应的自定义链处理,具体怎样处理,取决于自定义链中的规则,当IN_WEB自定义链被INPUT链引用以后,可以发现,IN_WEB链的引用计数已经变为1,表示这条自定义链已经被引用了1次,自定义链还可以引用其他的自定义链,感兴趣的话,动手试试吧。

  在之前的文章中,我们说过,"动作"在iptables中被称为"target",这样描述并不准确,因为target为目标之意,报文被规则匹配到以后,target能是一个"动作",target也能是一个"自定义链",当target为一个动作时,表示报文按照指定的动作处理,当target为自定义链时,表示报文由自定义链中的规则处理,现在回过头再理解之前的术语,似乎更加明了了。

  过了一段时间,我们发现IN_WEB这个名字不太合适,我们想要将这条自定义链重命名,把名字改成WEB,可以吗?必须能啊,示例如下:

  

  

  如上图所示,使用"-E"选项可以修改自定义链名,如上图所示,引用自定义链处的名称会自动发生改变。

  好了,我们已经能够创建自定义了,那么怎样删除自定义链呢?

  使用"-X"选项可以删除自定义链,但是删除自定义链时,需要满足两个条件:

    1、自定义链没有被任何默认链引用,即自定义链的引用计数为0。

    2、自定义链中没有任何规则,即自定义链为空。

iptables 自定义链的更多相关文章

  1. iptables详解(10):iptables自定义链

    前文中,我们一直在定义规则,准确的说,我们一直在iptables的默认链中定义规则,那么此处,我们就来了解一下自定义链. 你可能会问,iptables的默认链就已经能够满足我们了,为什么还需要自定义链 ...

  2. iptables详解(8)iptables自定义链

    自定义链存在的意义:对链进行分类 target可能是一个“动作“也可能是一个”自定义链” 1.新增自定义链. root@ubuntu:~# iptables -t filter -N IN_WEB#结 ...

  3. iptables常用规则:屏蔽IP地址、禁用ping、协议设置、NAT与转发、负载平衡、自定义链

    iptables常用规则:屏蔽IP地址.禁用ping.协议设置.NAT与转发.负载平衡.自定义链 时间 -- :: IT社区推荐资讯 原文 http://itindex.net/detail/4772 ...

  4. 【操作系统之十五】iptables黑白名单、自定义链、网络防火墙、常用动作

    1.黑白名单当链的默认策略为ACCEPT时,链中的规则对应的动作应该为DROP或者REJECT,表示只有匹配到规则的报文才会被拒绝,没有被规则匹配到的报文都会被默认接受,这就是"黑名单&qu ...

  5. 类模板、Stack的类模板实现(自定义链栈方式,自定义数组方式)

    一.类模板 类模板:将类定义中的数据类型参数化 类模板实际上是函数模板的推广,可以用相同的类模板来组建任意类型的对象集合 (一).类模板的定义 template  <类型形参表> clas ...

  6. (转)iptables常用规则:屏蔽IP地址、禁用ping、协议设置、NAT与转发、负载平衡、自定义链

    转自:http://lesca.me/archives/iptables-examples.html 本文介绍25个常用的iptables用法.如果你对iptables还不甚了解,可以参考上一篇ipt ...

  7. iptables的自定义链--子链

    我个人理解:子链的作用就是为了减少重复设置,有的时候可能对数据包进行一系列的处理,而且还被多种规则引用.这样就可以设置成子链,一起跳转过去处理. -j subchain 子链用-N来创建. iptab ...

  8. iptables清空链的规则

    建立iptables时,首先需要情况系统默认的规则(如果有),这样能够保证iptables按照自己的想法运行. iptables -F   //清空链规则,但不会情况子链,也不会清空表的默认策略 ip ...

  9. Iptables工作原理使用详解

    Iptables防火墙简介 Iptables名词和术语 Iptables工作流程 基本语法 Filter 参数说明 NAT表: Icmp协议 TCP FLAG 标记 什么是状态检测 iptables的 ...

随机推荐

  1. arcgis js api 4.X 自定义工具按钮

    // All material copyright ESRI, All Rights Reserved, unless otherwise specified. // See https://js.a ...

  2. [IOT] - 在树莓派的 Raspbian 系统中安装 .Net Core 3.0 运行环境

    之前在 Docker 中配置过 .Net Core 运行环境,地址:[IOT] - Raspberry Pi 4 Model B 系统初始化,Docker CE + .Net Core 开发环境配置 ...

  3. Sitecore A / B测试

    测试您的Web内容非常重要.这是查看页面中的页面和组件是否达到预期效果的好方法.测试还可以让您放心,您的内容足够吸引人,以增加转化次数并最大限度地提高增长率. 测试如何运作? 测试通过向访问者随机显示 ...

  4. Elastic Stack 证书创建

    1.创建CA证书 ./bin/elasticsearch-certutil ca # 默认文件名:elastic-stack-ca.p12 2.生成节点使用的证书 ./bin/elasticsearc ...

  5. asp.net MVC中使用EasyUI Treegrid 树形网格

    引入CSS和JS <link href="~/Content/plugins/jquery-easyui-1.7.0/themes/default/easyui.css" r ...

  6. 24个Jvm面试题总结及答案

    1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件. Java被 ...

  7. Java面试必问通信框架NIO,原理详解

    NIO 流与块 通道与缓冲区 缓冲区状态变量 文件 NIO 实例 选择器 套接字 NIO 实例 内存映射文件 NIO与IO对比 Path Files NIO 新的输入/输出 (NIO) 库是在 JDK ...

  8. mask-rcnn解读(一):clip_boxes_graph

    此部分为mask-rcnn中clip_boxes_graph()函数的使用.首先利用代码解决基本函数的使用,然后运行代码,其细节如下:代码如下: import tensorflow as tfimpo ...

  9. SpringBoot嵌入式Tomcat的自动配置原理

    在读本篇文章之前如果你读过这篇文章SpringBoot自动装配原理解析应该会更加轻松 准备工作 我们知道SpringBoot的自动装配的秘密在org.springframework.boot.auto ...

  10. English--辅音

    English|辅音 英语中的辅音,按照发音的松紧,唇形舌位,划分为七大类.需要好好地体会具体的发音部位与口型. 前言 目前所有的文章思想格式都是:知识+情感. 知识:对于所有的知识点的描述.力求不含 ...