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. 进入出去的网络接口。完毕。
转自:http://www.opsers.org/linux-home/security/iptables-related-concepts-and-processes-the-packet-figure.html
相关推荐
网络接收到数据包后,描述怎样经过iptables的过程,每个表每个链都很清晰
**1.5 iptables的表与链工作流程图** 为了帮助读者更好地理解iptables的工作流程,我们可以通过一张简化的流程图来进行说明: 1. 当数据包进入主机时,首先经过NAT表的PREROUTING链。 2. 然后,如果是发往主机的...
文档提供了iptables工作流程的一个清晰框架图,以便读者理解数据包如何在不同阶段被处理。该图展示了数据包从进入系统到离开系统的整个过程,包括以下几个关键步骤: 1. **PREROUTING** - 在数据包到达目标主机之前...
在2.6内核环境下,可以使用iptables的physdev模块来更好地识别物理设备,这有助于精确地匹配和处理来自特定物理端口的数据包。 ### 十一、详细的IP数据包流动过程 #### 1. 流动过程概述 在基于Linux的桥接环境中...
下面以iptable_filter.o 模块的工作流程为例简单介绍一下Netfilter/Iptables 系统是如何工作的。 当数据包进入系统时,系统首先根据路由表决定数据包的流向(即将数据包发往那个关键点),则可能 有三种情况: 图1 分组...
以下将对wifidog的关键组件和工作流程进行详细解析: 1. **架构概述** Wi-FiDog由三个主要部分组成:Gateway(网关)、Authenticator(认证服务器)和Portal(用户界面)。Gateway负责处理网络数据包,...
Linux操作系统PPT教程是针对那些想要深入理解和掌握Linux操作系统核心概念、命令行操作以及系统管理技术的学习者设计的。这份教程以PPT的形式提供,便于读者直观地学习和理解复杂的Linux概念。通过阅读和研究这份...
25. **iptables四表五链**:四表包括FILTER、nat、mangle和raw,五链包括PREROUTING、INPUT、FORWARD、OUTPUT和POSTROUTING。 26. **入站动作链**:入站数据包通常会经过`PREROUTING`(路由前处理)、`INPUT`(目标...
IPVS+IPTables的报文处理流程如图1-2所示: IPVS在内核中的负载均衡调度是基于连接进行调度,每个客户端请求与服务器端都需要建立一个TCP连接,调度算法负责将不同用户的连接均匀分配到后端的真实服务器上,这样...
它的工作流程受服务元管理器调度,负责数据包的排队和发送,同时,驱动程序中的发送函数会根据通信量整形算法来控制数据的传输。 安全策略是网络服务中不可或缺的一环。在NIC服务元的安全策略实现过程中,主要涉及...
DHCP工作流程包括:Dhcpdiscover(客户端寻找服务器)、Dhcpoffer(服务器提供IP地址)、Dhcprequest(客户端确认请求)和Dhcpack(服务器确认分配)。 - 如图2-1所示的网络中,PC1首次启动时会发送Dhcpdiscover包...
4. **Python编程**:了解Python基础和相关的网络库,有助于理解和定制geqos。 5. **图形用户界面(GUI)设计**:geqos如何使用GTK+或其他库创建直观易用的界面。 6. **网络配置**:用户需要知道基本的网络术语,如IP...