iptables处理经过的数据包的流程是什么?

iptables各个表的优先级:4个表的优先级由高到低的顺序为:raw-->mangle-->nat-->filter。

iptables利用表和链处理每个经过的数据包,具体流程(步骤)如下

数据包到达网络接口,比如 eth0。

进入 raw 表的 PREROUTING 链,这个链的作用是在连接跟踪之前处理数据包。

如果进行了连接跟踪,则进行处理。

进入 mangle 表的 PREROUTING 链,在此可以修改数据包,比如 TOS 等。

进入 nat 表的 PREROUTING 链,可以在此做DNAT,但不做过滤。

决定路由,看是交给本地主机还是转发给其它主机,即决定是否继续往内还是往外。

到了这里需要分两种不同的情况进行讨论了。

若数据包决定要转发给其它主机,这时候它会依次经过

进入 mangle 表的 FORWARD 链,这里是在第一次路由(即步骤6)决定之后,在进行最后的路由决定之前,仍然可以对数据包进行某些修改。

进入 filter 表的 FORWARD 链,这里可以对所有转发的数据包进行过滤。

进入 mangle 表的 POSTROUTING 链,这里将完成了所有的路由决定,但数据包仍然在本地主机,还可以进行某些修改。

进入 nat 表的 POSTROUTING 链,这里一般都是用来做 SNAT ,不在这里进行过滤。

进入出去的网络接口,然后进行发送。

另一种情况是,数据包就是发给本地主机的,那么它会依次穿过

进入 mangle 表的 INPUT 链,这里是在第一次路由(即步骤6)决定之后,在进行最后的路由决定之前,仍然可以对数据包进行某些修改。

进入 filter 表的 INPUT 链,这里可以对流入的所有数据包进行过滤,无论它来自哪个网络接口。

交给本地主机的应用程序进行处理。

处理完毕后进行路由决定,看该往那里发出。

进入 raw 表的 OUTPUT 链,这里是在连接跟踪处理本地的数据包之前。

连接跟踪对本地的数据包进行处理。

进入 mangle 表的 OUTPUT 链,这里可以修改数据包,但不做过滤。

进入 nat 表的 OUTPUT 链,可以对防火墙自己发出的数据做 NAT 。

再次进行路由决定。

进入 filter 表的 OUTPUT 链,可以对本地出去的数据包进行过滤。

进入 mangle 表的 POSTROUTING 链,同上一种情况的第9步(里将完成了所有的路由决定,但数据包仍然在本地主机,还可以进行某些修改。)。

进入 nat 表的 POSTROUTING 链,同上一种情况的第10步(里一般都是用来做 SNAT ,不在这里进行过滤。)。

进入出去的网络接口,然后进行发送。

相关推荐
聆风吟º16 分钟前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann
神梦流20 分钟前
ops-math 算子库的扩展能力:高精度与复数运算的硬件映射策略
服务器·数据库
NPE~26 分钟前
自动化工具Drissonpage 保姆级教程(含xpath语法)
运维·后端·爬虫·自动化·网络爬虫·xpath·浏览器自动化
神梦流34 分钟前
GE 引擎的内存优化终局:静态生命周期分析指导下的内存分配与复用策略
linux·运维·服务器
凡人叶枫36 分钟前
C++中输入、输出和文件操作详解(Linux实战版)| 从基础到项目落地,避坑指南
linux·服务器·c语言·开发语言·c++
wdfk_prog42 分钟前
[Linux]学习笔记系列 -- [drivers][input]serio
linux·笔记·学习
xuhe21 小时前
[全流程详细教程]Docker部署ClawBot, 使用GLM4.7, 接入TG Bot实现私人助理. 解决Docker Openclaw Permission Denied问题
linux·docker·ai·github·tldr
Lsir10110_1 小时前
【Linux】进程信号(下半)
linux·运维·服务器
skywalk81632 小时前
unbound dns解析出现问题,寻求解决之道
运维·服务器·dns·unbound
酉鬼女又兒2 小时前
零基础入门Linux指南:每天一个Linux命令_pwd
linux·运维·服务器