今天在安装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.1 | pre | 可以 |
192.168.0.2 | pre | 不可以 |
192.168.0.1 | input | 可以 |
192.168.0.2 | input | 不可以 |
192.168.0.1 | output | 可以 |
192.168.0.2 | output | 不可以 |
看没看见,你肯定是多加了一个字段监测点,那链是什么呢?如果我们按照监测点进行分类就分为了 pre、input、output三块,我们拿pre来说
ip | 监测点 | 动作 |
---|---|---|
192.168.0.1 | pre | 可以 |
192.168.0.2 | pre | 不可以 |
这就是一个链,这怎么是链啊?你想一下,现在只是配置了2条规则如果配置了10000条呢?你想从10000条规则里找到192.168.0.1这一条是不是要遍历这10000条,这10000条就组成了1个链。
所以我就说上面一张表里存在3个链,相当于说上面表被应用到了3个监测点。
继续说回真正的iptables的链,iptables的4张表不是都可以应用到5个检测点上,也就是说5个监测点上的功能是不一样的。
监测点 | 表 |
---|---|
pre | raw、mangle、nat |
input | mangle、filter、nat(cenos7) |
forward | mangle、filter |
output | raw、mangle、nat、filter |
pre | mangle、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