• 大白话之 Iptables


    背景

    今天在安装traefik的时候遇见了很神奇的问题,80端口没有任何程序在监听,但是访问的话会返回it works,想来想去可能是iptables的问题,由于Iptables每次都是现查,所以觉得还是理解不到位,总结一波。

    首先你要明白这东西说破天就是个防火墙。符合什么样条件的可以怎么样。

    假如我给你一个需求,让你设计一个防火墙最简单的防火墙,限制ip是否可以访问,你怎么设计呢?

    你首先你肯定要有一个地方存储ip,和ip是否可以进入吧

    ip动作
    192.168.0.1可以
    192.168.0.2不可以

    看没看见,这玩意就是一张表,iptables就是 ip+tables。

    从tables你可以看出来肯定不止一张表,对的,就是有多张表4张表。filter,nat,mangle,raw。

    每张表的作用不一样,我上面是最简单的需求过滤ip,真正的防火墙肯定还有一些别的功能。

    表名作用
    filter很明显就是过滤
    nat网络地址转换功能,比如把访问80端口的转到90端口
    mangle拆解报文,做出修改,并重新封装 的功能,比如加些header
    raw不再让iptables做数据包的链接跟踪处理

    我之前写过一篇文章

    大白话netfilter
    最后总结的就是,说白了,netfilter就是在网络层和传输层中设立了几个监测点来操作数据,至于怎么操作那是你的事,我只负责帮你设置监测点。

    在这里插入图片描述

    一共有五个监测点,还是接着上面的需求,让你设计一个防火墙最简单的防火墙,在5个监测点限制ip是否可以访问,你怎么设计呢?

    ip监测点动作
    192.168.0.1pre可以
    192.168.0.2pre不可以
    192.168.0.1input可以
    192.168.0.2input不可以
    192.168.0.1output可以
    192.168.0.2output不可以

    看没看见,你肯定是多加了一个字段监测点,那链是什么呢?如果我们按照监测点进行分类就分为了 pre、input、output三块,我们拿pre来说

    ip监测点动作
    192.168.0.1pre可以
    192.168.0.2pre不可以

    这就是一个链,这怎么是链啊?你想一下,现在只是配置了2条规则如果配置了10000条呢?你想从10000条规则里找到192.168.0.1这一条是不是要遍历这10000条,这10000条就组成了1个链。

    所以我就说上面一张表里存在3个链,相当于说上面表被应用到了3个监测点。

    继续说回真正的iptables的链,iptables的4张表不是都可以应用到5个检测点上,也就是说5个监测点上的功能是不一样的。

    监测点
    preraw、mangle、nat
    inputmangle、filter、nat(cenos7)
    forwardmangle、filter
    outputraw、mangle、nat、filter
    premangle、nat

    我们举例一个分析一下,比如说pre这个监测点为什么没有filter呢?
    filter主要功能就是过滤,prerouting是在路由之间判断是访问本机的还是转发的,如果过滤禁止访问本机的应该在input监测点来做,如果是过滤禁止转发的应该在forward监测点来做,还没有路由是不能做filter的。

    所以你用下面这张图找找感觉
    在这里插入图片描述

    总结

    剩下的就是一些命令了,我就不写了,那个教程很多,用的时候自己查就好,我一般都喜欢先把框架捋清楚再去纠结细节。

    你可以想象成A城到B城中间有5个监测点,这五个监测点的功能不完全一样,比如监测点A有过滤功能、转发功能、美容功能,每个功能都是一个链,比如过滤功能,记录者A城的良民a可以通过、良民b拒绝,良民c直接给杀了,再比如美容功能、良民a来了给换一身漂亮的衣服,良民d来了给衣服扒光。再比如转发功能,良民a来了直接送往某个神秘的地方

    就是这么个事情。

    在这里插入图片描述

    参考

    朱双印
    https://blog.csdn.net/qq_34556414/article/details/108623774

  • 相关阅读:
    基于docker实现MySQL主从复制
    5G专网技术研究及其行业应用
    【Linux】系统调用
    基于Android studio有声听书系统 java音乐播放器系统
    高等数学(第七版)同济大学 总习题三(后10题) 个人解答
    简单好用的个人图书管理系统;开源啦!北大NLP新手教程;『Rust命令行编程指南』随书代码;源代码结构可视化工具 | ShowMeAI资讯日报
    数据库分库分表<====>分布式事务
    JdbcTemplate对象
    Linux逻辑卷LV的创建和扩容操作
    【计算机视觉 | 目标检测】目标检测常用数据集及其介绍(九)
  • 原文地址:https://blog.csdn.net/yanchendage/article/details/127793619