【个人总结系列-25】iptables基本原理学习总结
-
资源ID:34213657
资源大小:187.16KB
全文页数:4页
- 资源格式: DOCX
下载积分:10金贝
快捷下载
账号登录下载
微信登录下载
微信扫一扫登录
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
|
下载须知 | 常见问题汇总
|
【个人总结系列-25】iptables基本原理学习总结
IPTABLES 基本原理学习总结iptables 防火墙可以用于创建过滤(filter)与 NAT 规则。所有 Linux 发行版都能使用 iptables,因此理解如何配置 iptables 将会帮助我们更有效地管理 Linux 防火墙。简单地讲,iptables 由 tables 组成,tables 由 chains 组成,而 chains 又由 rules 组成。Iptables 主要包括 Filter、 NAT、Mangle、 Raw 四种内建表: Filter 表Filter 表示 iptables 的默认表,因此如果没有自定义表,那么就默认使用 filter 表,它具有以下三种内建链: INPUT 链 处理来自外部的数据。 OUTPUT 链 处理向外发送的数据。 FORWARD 链 将数据转发到本机的其他网卡设备上。 2. NAT 表NAT 表有三种内建链: PREROUTING 链 处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标 IP 地址(destination ip address) ,通常用于DNAT(destination NAT) 。 POSTROUTING 链 处理即将离开本机的数据包。它会转换数据包中的源 IP 地址(source ip address) ,通常用于 SNAT(source NAT) 。 OUTPUT 链 处理本机产生的数据包。 Mangle 表Mangle 表用于指定如何处理数据包。它能改变 TCP 头中的 QoS 位。Mangle表具有 5 个内建链: PREROUTING OUTPUT FORWARD INPUT POSTROUTING Raw 表Raw 表用于处理异常,它具有 2 个内建链: PREROUTING chain OUTPUT chain因此,总体而言,iptables 包括 5 个链和 4 个表,iptables 的 5 个链分别为 PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING。4 个表分别为filter、nat、mangle、raw。4 个表的优先级由高到低的顺序为:rawmanglenatfilter。RAW 表只使用在 PREROUTING 链和 OUTPUT 链上,因为优先级最高,从而可以对收到的数据包在连接跟踪前进行处理。一旦用户使用了 RAW 表,在某个链上 RAW 表处理完后将跳过 NAT 表和 ip_conntrack 处理,即不再做地址转换和数据包的链接跟踪处理了。数据包在 iptables 各表各链上的处理流程如下图所示:数据包流经 iptables 的路径针对上图给出的数据包流经 iptables 的路径,以下内容将分析各类流量的处理过程,分别包括流入本机数据包、流出本机数据包、流经本机转发的数据包。(1)流入本机数据包的路径:所属表 mangle nat mangle nat filter网络数据包 PREROUTING PREROUTING 路由选择 INPUT INPUT INPUT 本地处理进程(2)流出本机数据包的路径:所属表 mangle filter mangle nat本地处理进程 OUTPUT OUTPUT 路由选择 POSTROUTING POSTROUTING 外部网络(3)流经本机转发的数据包的路径:所属表 mangle nat mangle filter A 端网络 PREROUTING PREROUTING 路由选择 FORWARD FORWARD mangle natPOSTROUTING POSTROUTING B 端网络数据包在 iptables 中的处理过程基本如下: 数据包到达网络接口,比如 eth0。 进入 raw 表的 PREROUTING 链,这个链的作用是赶在连接跟踪之前处理数据包。 如果进行了连接跟踪,在此处理。 进入 mangle 表的 PREROUTING 链,在此可以修改数据包,比如 TOS 等。 进入 nat 表的 PREROUTING 链,可以在此做 DNAT,但不要做过滤。 决定路由,看是交给本地主机还是转发给其它主机。到了这里我们就得分两种不同的情况进行讨论了,一种情况就是数据包要转发给其它主机,这时候它会依次经过: 进入 mangle 表的 FORWARD 链,这里也比较特殊,这是在第一次路由决定之后,在进行最后的路由决定之前,我们仍然可以对数据包进行某些修改。 进入 filter 表的 FORWARD 链,在这里我们可以对所有转发的数据包进行过滤。需要注意的是:经过这里的数据包是转发的,方向是双向的。 进入 mangle 表的 POSTROUTING 链,到这里已经做完了所有的路由决定,但数据包仍然在本地主机,我们还可以进行某些修改。 进入 nat 表的 POSTROUTING 链,在这里一般都是用来做 SNAT ,不要在这里进行过滤。 进入出去的网络接口,完毕。另一种情况是,数据包就是发给本地主机的,那么它会依次穿过: 进入 mangle 表的 INPUT 链,这里是在路由之后,交由本地主机之前,我们也可以进行一些相应的修改。 进入 filter 表的 INPUT 链,在这里我们可以对流入的所有数据包进行过滤,无论它来自哪个网络接口。 交给本地主机的应用程序进行处理。 处理完毕后进行路由决定,看该往那里发出。 进入 raw 表的 OUTPUT 链,这里是在连接跟踪处理本地的数据包之前。 连接跟踪对本地的数据包进行处理。 进入 mangle 表的 OUTPUT 链,在这里我们可以修改数据包,但不要做过滤。 进入 nat 表的 OUTPUT 链,可以对防火墙自己发出的数据做 NAT 。 再次进行路由决定。 进入 filter 表的 OUTPUT 链,可以对本地出去的数据包进行过滤。 进入 mangle 表的 POSTROUTING 链,这里不光对经过防火墙的数据包进行处理,还对防火墙自己产生的数据包进行处理。 进入 nat 表的 POSTROUTING 链。 进入出去的网络接口,完毕。