【笔记】openwrt - iptables 命令、例子、日志

参考
(以为例)
??????????
中的数据包流向和各hook点位置配图
原图:
简化图:数据包过滤匹配流程
文章目录表的几个重要命令 nat表的几个重要命令日志:内置防火墙介绍

(官网:)顾名思义是一个网络数据包过滤框架 。它提供了 5 个 hook 点 , 每个进入网络系统的包(接收或发送)在经过协议栈时都会触发这些 hook 。触发哪个 hook 取决于包的方向(是发送还是接收)、包的目的地址、以及包在上一个 hook 点是被丢弃还是拒绝等等 。
是使 用很广泛的防火墙工具之一 , 它基于内核的包过滤框架()。
包 - 网络层
帧 - 数据链路层
段 - 传输层
相关的内核模 块在这些 hook 点注册了处理函数 , 因此可以通过配置规则来使得网络流量符合 防火墙规则 。
防火墙虽然可以过滤互联网的数据包 , 但是无法过滤内部网络的数据包 。
的表()
使用 table 来组织规则 , 根据用来做什么类型的判断(the type ofthey are used to make)标准 , 将规则分为不同 table 。例如 , 如果规则是处理 网络地址转换的 , 那会放到 nat table;如果是判断是否允许包继续向前 , 那可能会放到table 。
具体看看这些 table 是如何按规则类型区分的 。
(常用)(流量过滤)
table 是最常用的 table 之一 , 用于判断是否允许一个包通过 。
在防火墙领域 , 这通常称作“过滤”包(”” ) 。这个 table 提供了防火墙 的一些常见功能 。
NAT (网络地址转换)(常用)(流量转发)
nat table 用于实现网络地址转换规则 。
当包进入协议栈的时候 , 这些规则决定是否以及如何修改包的源/目的地址 , 以改变包被 路由时的行为 。nat table 通常用于将包路由到无法直接访问的网络 。
(碾压)(流量跟踪)
(修正)table 用于修改包的 IP 头 。
【【笔记】openwrt - iptables 命令、例子、日志】例如 , 可以修改包的 TTL , 增加或减少包可以经过的跳数 。
这个 table 还可以对包打只在内核内有效的“标记”(“mark”) , 后 续的 table 或工具处理的时候可以用到这些标记 。标记不会修改包本身 , 只是在包的内核 表示上做标记 。
Raw(生的、原始的)(流量整形)
防火墙是有状态的:对每个包进行判断的时候是依赖已经判断过的包 。
建立在之上的连接跟踪( )特性使得将包 看作已有的连接或会话的一部分 , 而不是一个由独立、不相关的包组成的流 。连接跟踪逻 辑在包到达网络接口之后很快就应用了 。
raw table 定义的功能非常有限 , 其唯一目的就是提供一个让包绕过连接跟踪的框架 。
table 的作用是给包打上标记 , 以此影响或其他可以解读安全上下文的系统处理包的行为 。这些标记可以基于单个包 , 也可以基于连接 。
的链()
在的每个 table 内部 , 规则被进一步组织成 chain(分别为: 路由前、 转发 、 路由后、INPUT 入站、 出站) , 内置的 chain 是由内置的 hook 触发 的 。chain 基本上能决定( )规则何时被匹配 。
例如:和 NAT 相关的最重要的规则 , 都在 nat 这个table 里 。这个表有三个预置的 chain:,和。
包经过chain 之后 , 将进行路由判 断 。如果目的是本机 , 那接下来的过程将不涉及 NAT;如果目的是网络内的其他机器 , 那包 将会被转发到那台机器 , 前提是这台机器配置了允许转发 。