转自:http://www.opsers.org/linux-home/security/iptables-related-concepts-and-processes-the-packet-figure.html
iptables 相关概念
匹配(match):符合指定的条件,比如指定的 IP 地址和端口。
丢弃(drop):当一个包到达时,简单地丢弃,不做其它任何处理。
接受(accept):和丢弃相反,接受这个包,让这个包通过。
拒绝(reject):和丢弃相似,但它还会向发送这个包的源主机发送错误消息。这个错误消息可以指定,也可以自动产生。
目标(target):指定的动作,说明如何处理一个包,比如:丢弃,接受,或拒绝。
跳转(jump):和目标类似,不过它指定的不是一个具体的动作,而是另一个链,表示要跳转到那个链上。
规则(rule):一个或多个匹配及其对应的目标。
链(chain):每条链都包含有一系列的规则,这些规则会被依次应用到每个遍历该链的数据包上。每个链都有各自专门的用途, 这一点我们下面会详细讨论。
表(table):每个表包含有若干个不同的链,比如 filter 表默认包含有 INPUT,FORWARD,OUTPUT 三个链。iptables 有四个表,分别是:raw,nat,mangle和filter,每个表都有自己专门的用处,比如最常用filter表就是专门用来做包过滤的,而 nat 表是专门用来做NAT的。
策略(police):我们在这里提到的策略是指,对于 iptables 中某条链,当所有规则都匹配不成功时其默认的处理动作。
连接跟踪(connection track):又称为动态过滤,可以根据指定连接的状态进行一些适当的过滤,是一个很强大的功能,但同时也比较消耗内存资源。
经过iptables的数据包的流程介绍
一个数据包到达时,是怎么依次穿过各个链和表的(图)。
基本步骤如下:
1. 数据包到达网络接口,比如 eth0。
2. 进入 raw 表的 PREROUTING 链,这个链的作用是赶在连接跟踪之前处理数据包。
3. 如果进行了连接跟踪,在此处理。
4. 进入 mangle 表的 PREROUTING 链,在此可以修改数据包,比如 TOS 等。
5. 进入 nat 表的 PREROUTING 链,可以在此做DNAT,但不要做过滤。
6. 决定路由,看是交给本地主机还是转发给其它主机。
到了这里我们就得分两种不同的情况进行讨论了,一种情况就是数据包要转发给其它主机,这时候它会依次经过:
7. 进入 mangle 表的 FORWARD 链,这里也比较特殊,这是在第一次路由决定之后,在进行最后的路由决定之前,我们仍然可以对数据包进行某些修改。
8. 进入 filter 表的 FORWARD 链,在这里我们可以对所有转发的数据包进行过滤。需要注意的是:经过这里的数据包是转发的,方向是双向的。
9. 进入 mangle 表的 POSTROUTING 链,到这里已经做完了所有的路由决定,但数据包仍然在本地主机,我们还可以进行某些修改。
10. 进入 nat 表的 POSTROUTING 链,在这里一般都是用来做 SNAT ,不要在这里进行过滤。
11. 进入出去的网络接口。完毕。
另一种情况是,数据包就是发给本地主机的,那么它会依次穿过:
7. 进入 mangle 表的 INPUT 链,这里是在路由之后,交由本地主机之前,我们也可以进行一些相应的修改。
8. 进入 filter 表的 INPUT 链,在这里我们可以对流入的所有数据包进行过滤,无论它来自哪个网络接口。
9. 交给本地主机的应用程序进行处理。
10. 处理完毕后进行路由决定,看该往那里发出。
11. 进入 raw 表的 OUTPUT 链,这里是在连接跟踪处理本地的数据包之前。
12. 连接跟踪对本地的数据包进行处理。
13. 进入 mangle 表的 OUTPUT 链,在这里我们可以修改数据包,但不要做过滤。
14. 进入 nat 表的 OUTPUT 链,可以对防火墙自己发出的数据做 NAT 。
15. 再次进行路由决定。
16. 进入 filter 表的 OUTPUT 链,可以对本地出去的数据包进行过滤。
17. 进入 mangle 表的 POSTROUTING 链,同上一种情况的第9步。注意,这里不光对经过防火墙的数据包进行处理,还对防火墙自己产生的数据包进行处理。
18. 进入 nat 表的 POSTROUTING 链,同上一种情况的第10步。
19. 进入出去的网络接口。完毕。
- 大小: 201.4 KB
分享到:
相关推荐
网络接收到数据包后,描述怎样经过iptables的过程,每个表每个链都很清晰
iptables采用数据包过滤机制工作,它会对数据包的头部信息进行分析,并根据预设的规则决定数据包是否可以进入、离开或通过主机。以下为iptables进入主机进行过滤的基本流程: - 数据包首先经过NAT表的PREROUTING链...
了解这一流程对于正确配置iptables至关重要,因为它有助于理解数据包是如何被处理、过滤或修改的。 - **以本地为目标的包**: - **步骤1**:数据包在线路上传输(例如互联网)。 - **步骤2**:数据包进入接口(如...
文档提供了iptables工作流程的一个清晰框架图,以便读者理解数据包如何在不同阶段被处理。该图展示了数据包从进入系统到离开系统的整个过程,包括以下几个关键步骤: 1. **PREROUTING** - 在数据包到达目标主机之前...
当数据包与规则匹配时,iptables会根据规则所定义的动作来处理数据包,常见的动作包括: - **接受(Accept)**:允许数据包通过。 - **拒绝(Reject)**:向数据包的发送方发送错误消息。 - **丢弃(Drop)**:静默...
在Linux系统中,`iptables`是一款强大的工具,用于管理网络流量并控制数据包过滤规则。CentOS 6作为一款广泛使用的服务器操作系统,其内置的`iptables`功能可以帮助用户实现网络安全性的提升。本文将详细介绍CentOS ...
#### 三、数据包过滤匹配流程与iptables命令 数据包过滤匹配流程遵循预设的规则表和规则链顺序,对每个数据包依次进行检查。如果在某个链中找到了匹配的规则,则立即应用该规则的动作,并结束匹配流程;若未找到...
为了在iptables中实现更高级的链路层操作,可以使用MAC模块扩展,这允许iptables对数据包的MAC地址进行操作,例如匹配特定的MAC地址或修改MAC地址。 ### 十、使用iptables physdev模块配合2.6内核 #### 1. 模块...
- **流程解析**:数据包一旦到达接口,首先会被输入规则链过滤。若数据包被接受,则会被送往路由模块。路由模块决定数据包是送往本地主机还是转发到其他接口。对于转发的数据包,它们会在被发送前再次经过转发规则链...
Netfilter机制是Linux操作系统内核中的一个框架,它提供了一种机制,允许内核模块在数据包的处理流程中的特定点插接(hook)点进行操作。Netfilter的主要功能包括数据包过滤、NAT(包括源地址转换和目的地址转换)、...
通过对iptables的深入理解,可以更好地把握Kubernetes集群中数据包的处理流程,进而优化网络性能并增强安全性。此外,通过了解iptables中不同表和链的功能及它们之间的交互方式,可以更加清晰地认识到kube-proxy是...
1. **原理**:DNAT是在iptables的`nat`表的`PREROUTING`链中进行的,它会改变外部网络的数据包的目的IP和端口,使其指向内部网络中的特定服务器,从而实现内网服务器对外发布。 2. **应用场景**:常用于发布内部...
Linux内核中的netfilter架构有以太网层netfilter,主要管理工具为ebtables,有网络层的netfilter,主要管理工具为iptables,本文主要从总体上讲述网络层ipv4 netfilter架构中的基本数据流程,即一个数据所从进入网络...
1. **理解iptables工作流程**:通过阅读和分析代码,我们可以看到数据包是如何被检查、匹配和处理的,从而深入理解iptables的内部机制。 2. **定制iptables规则**:如果你想要为iptables添加自定义的目标或匹配条件...
libipq是iptables的一个组件,用于在Linux操作系统中对IP数据包进行用户空间的处理。在理解和使用iptables进行包过滤、NAT(网络地址转换)等操作时,libipq提供了一种方便的编程接口,让开发者可以更深入地控制...
本文将深入探讨包过滤的基本流程和iptables的使用方法。 在Linux内核中,包过滤机制基于三个内置的防火墙链:INPUT、OUTPUT和FORWARD。这些链对应不同的数据包处理场景: 1. INPUT链:处理目标地址为本地主机的...
IPTables中的规则由match和target组成,match用于匹配数据包的各种属性,如源IP、目标IP、端口等,而target决定了匹配到的数据包应该如何处理,例如接受、拒绝、重定向或进行地址转换。IPTables引入了table的概念,...
1. **流程概述**:Netfilter的处理流程始于数据包进入系统,经过多个hook points,在每个hook point上都会执行相应的链条上的规则。 2. **典型流程**: - 数据包到达网络设备接口。 - 经过 `NF_IP_PRE_ROUTING` ...
1. Netfilter钩子函数:理解如何在内核中注册和使用Netfilter的各个钩子,如NF_INET_PRE_ROUTING、NF_INET_LOCAL_IN等,以及它们在网络数据包流程中的位置。 2. 数据包过滤规则:学习如何编写iptables规则,以指定...