简介

        我们在前文所介绍的所谓规则都是在默认链中定义的,当默认链中的规则非常多时,比如INPUT链中存放了300条规则,这300条规则有httpd服务、sshd服务的、服务的、私网IP的、公网IP的等等,那么如果我要修改某个服务的规则,例如修改sshd服务的规则,那么在这么多条规则中找到对应的规则进行修改,这会对维护工作造成非常严重的负担。

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

例如,我们自定义一条链,链名叫IN_SSH,我们可以将所有针对22端口的入站规则都写入到这条自定义链中,当以后想要修改针对SSH服务的入站规则时,就直接修改IN_SSH链中的规则就好了,即使默认链中有再多的规则,我们也不会因为规则太多对我们操作产生比较严重的负担。因为所有针对22端口的入站规则都存放在IN_SSH链中,同理,我们可以将针对私网的出站规则放入到OUT_PRIP自定义链中,将针对FTP的入站规则放入到IN_FTP自定义链中,这样,我们就能很容易的准确的修改规则。

注意:自定义链并不能直接使用,而是需要被默认链引用才能够使用。

配置自定义链

新增自定义链

-N +链名称表示创建一个自定义链,自定义链为IN-HTTP,自定义链创建完成后,查看filter表中的链,如上图所示,自定义链已经被创建,而且可以看到,这条自定义链的引用计数为0 (0 references),也就是说,这条自定义链还没有被任何默认链所引用,所以,即使IN-HTTP中配置了规则,也不会生效

配置自定义链规则     

配置自定义链规则和配置普通规则是一样的,默认是filter表,插入规则后面根的是自定义链名称IN-HTTP

引用自定义链规则

自定义链在哪里创建,应该被哪条默认链引用,取决于实际的工作场景。一个自定义链可以引用在多个链上,自定义链引用到链上后,就相当于该链配置了自定义链的规则。匹配顺序和普通规则的匹配顺序是一样的,在该链内从上到下一次匹配,匹配到自定义链后,按照自定义链内规则的顺序依次匹配。

”-j IN-HTTP”表示:将自定义链”IN-HTTP”中的规则关联到INPUT链,之前我们使用”-j”选项指定动作,而此处,我们将”动作”替换为了”自定义链”,当”-j”对应的值为一个自定义链时,就表示被当前规则匹配到的报文将交由对应的自定义链处理,具体怎样处理,取决于自定义链中的规则,当IN-HTTP自定义链被INPUT链引用以后,可以发现,IN-HTTP链的引用计数已经变为1,表示这条自定义链已经被引用了1次

修改自定义链

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

删除自定义链

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

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

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

删除时报错,由于我们的自定义链已经被引用,所以无法删除,所以我们需要先取消引用,如何取消引用?其实引用就是我们配置的一条规则,只要删除这条规则即可
如上图所示,当删除引用自定义链后,通过-X删除自定义链,依旧报错,原因是我们的自定义链不为空,所以需要清空自定义链
通过-F选项清空自定义链规则,然后通过-X选项删除自定义链,此时自定义链已经被删除了

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐