曲径通幽论坛

标题: filter 机制 [打印本页]

作者: beyes    时间: 2012-5-8 01:15
标题: filter 机制
filter (过滤) 机制如下图所示:
[attach]415[/attach]


上图中的两个路由表实际上为同一个。在 Linux 里,可以使用 netstat -rn 命令查看路由表的内容,路由表决定了一个数据包的传输路径。

1. 如果数据包的目的地是本机进程时

一个数据包由图中的”数据包进“所标识位置进入,接着被送入路由表,由路由表中的内容决定该数据包的传输路径,这里假设是送到”本机进程“,因此该数据包就会被送入 ”INPUT 链“。此时,如果 INPUT链 中的规则不允许该数据包进入,那么该数据包被丢弃;反之,如果 INPUT链 中的规则允许数据包进入,那么该数据包被送入本机进程位置。从这里可见,INPUT 链机制是为了保护本机进程而设计的。

2. 当本机进程生成的数据包往外发送时

如果本机进程生成一个数据包向外发送,那么该数据包首先被送入路由表,并根据路由表中内容来决定该数据包的传输路径。接着,数据包被送入 OUTPUT链,此时如果 OUTPUT链 中的规则不允许该数据包离开本机,那么该数据包被丢弃;反之,那么数据包经由上图所标识的 “数据包出” 位置送离本机。

由上面 1, 2 两点可以看到,如果数据包和 “本机” 有所关联,那么 “数据包进” 和 “数据包出” 代表同一个接口,比如 eth0 。

3. 当数据包穿过本机

这个例子有个先决条件,就是防火墙部署在网关位置,也就是网关式防火墙。所以,当一个数据包穿过防火墙的另一边时,该数据包会先由 “数据包进“ 的位置进入,接着数据包进入路由表,由于该数据包的目的端不是本机,因此系统会由路由表的内容来决定,数据包是要由另一个接口送出,并立即送入 FORWARD 链,此时若是 FORWARD 链内的规则不允许该包通过,那么数据包就会被丢弃;反之,数据包由 ”数据包出“ 的位置送离本机。

由上看到,如果数据包与 ”本机“ 无关,那么 ”数据包进“ 和 ”数据包出“ 分别代表两个不同的接口。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2