小程序三方平台开发: 解析小程序开发的未来趋势和机遇
822
2022-09-24
Iptables——了解Netfilter/Iptables
Netfilter/Iptables
linux iptables是由两个组件组成:Netfilter和Iptables组成:
Netfilter组件称之为内核空间,是linux内核的一部分,是在Linux内核中为拦截额操作数据包提供的一套框架。其框架包含以下三部分:
1:为每种网络协议(IPV4,IPv6等)定义一套HOOK函数,这些HOOK函数在数据包流过IP协议栈的几个关键点被调用。在这几个点钟,协议栈将把数据包及HOOK函数标号作为参考调用Netfilter框架。
2:内核的任何模块可以对每种协议的一个或多个HOOK函数进行注册以实现挂接,这样当某个数据包被传递给Netfilter框架时,内核能检测是否有哪个模块对该协议和HOOK函数进行了注册。若注册了,则调用该模块,这样这些模块就有机会检查该数据包丢弃/修改/传入用户空间的队列。
3:那些在用户控件队列中排队的数据包是被传递给用户空间异步的处理。
IPV4中定义了5个HOOK,如图
Netfilter根据网络报文的流向,分为三部分:流入,流经,流出。
在以下几个点插入处理过程:
NF_IP_PRE_ROUTING,在报文作路由以前执行;
NF_IP_FORWARD,在报文转向另一个NIC以前执行;
NF_IP_POST_ROUTING,在报文流出以前执行;
NF_IP_LOCAL_IN,在流入本地的报文作路由以后执行;
NF_IP_LOCAL_OUT,在本地报文做流出路由前执行。
分析:当网络上的数据包从左边进入系统,数据包经过第一个点调用HOOK函数NF_IP_PRE_ROUTING进行处理;然后就进入本地路由表,查看该数据包是需要转发还是发给本地;若该数据包时发往本地的,则该数据包经过HOOK函数NF_IP_LOCAL_IN处理以后传递给上层协议;若该数据包是需要转发,则会被NF_IP_FORWARD处理;经过转发的数据包最后由NF_IP_POST_ROUTING处理后发送到网络上;本地产生的数据经过路由选择后,调用NF_IP_LOCAL_OUT进行处理,然后经过NF_IP_POST_ROUTING处理后发送到网络上。
当这些HOOK函数被经过的数据包调用时将返回下列值之一,告知Netfilter如果对数据包采取相应动作。
NF_ACCEPT 继续正常的报文处理
NF_DROP 丢弃报文
NF_STOLEN 由HOOK函数处理了该报文,不要再继续传送
NF_QUEUE 将报文入列,通常交由用户程序处理
NF_REPEAT 再次调用该HOOK函数
Iptables用户空间工具
iptables 组件是一种工具,也称为用户空间。它使插入、修改和除去信息包过滤表中的规则变得容易。这些规则存储在表的对象中。
Table 表
1. filter表
该表的作用主要用于包过滤。它在LOCAL_IN,FORWARD,LOCAL_OUT三处HOOK函数进行了注册。
2.Nat表
该表的作用主要用于地址转换。它在PRE_ROUTING,POST_ROUTING两处HOOK函数进行了注册。
3.Mangle表
该表的作用是进行数据包内容的修改。它在Netfilter的所有5个HOOK函数进行了注册。
Chain 链
在每张表中,内核使用链管理数据包,每个链中包含了一组规则表。
表与链的关系:
Table |
Chain |
Filter |
INPUT |
Filter |
FORWARD |
Filter |
OUTPUT |
Nat |
PREROUTING |
Nat |
OUTPUT |
Nat |
POSTOUTING |
Mangle |
PREROUTING |
Mangle |
INPUT |
Mangle |
OUTPUT |
Mangle |
FORWARD |
Mangle |
POSTROUTING |
链INPUT=HOOK函数 LOCALIN
链OUTPUT=HOOK函数 LOCALOUT
链PREROUTING=HOOK函数 PREROUTING
链POSTROUTING=HOOK函数 POSTROUTING
链 FORWARD=HOOK函数 FORWARD
链的名字与HOOK函数名相似,链的作用和位置也与HOOK函数相吻合,可以说链就是实现HOOK函数调用的方式。
Target 目标
链的每个规则都会有一个目标,目标决定了该规则对数据包如何处理。
常用目标:
ACCEPT:允许
DROP:拒绝
REJECT:同DROP一样,不过它会向发送方返回个错误信息
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~