论文部分内容阅读
因为具有开放源代码的巨大优势,Linux操作系统源代码的分析不仅具有教学意义,同时还具有科研意义。但目前的分析主要集中在存储管理、进程调度、文件系统及设备驱动等方面,对于网络,特别是内核防火墙的分析,还不够系统。所以系统的分析Linux防火墙是本文的主要目的之一。 Linux防火墙的实现采取分层次的方式,极具扩展性。处于最底层的足Netfilter,它提供了一个抽象、通用化的包处理框架。通过在Netfilter中定义的捕捉点上注册包处理函数,可实现包过滤、网络地址转换等子系统。在Linux内核防火墙的第二层足包选择子系统(IP Tables)和轨迹跟踪予系统(Connection Tracking)。包选择子系统的实现仍然考虑到可扩展性,它把防火墙规则组织为IP相关信息+匹配(match)+目标(target)的方式,首先由注册的函数来匹配IP相关信息,如果匹配成功,则调用与匹配(match)相关的处理函数来处理匹配(match)。如成功,则由目标来决定包的命运。轨迹跟踪子系统主要用来实现防火墙中与“状态”相关的部分,也可对它在协议、助理等方面进行扩充。网络地址转换就是在它的基础之上实现的。网络地址转换的实现又与包选择子系统融合在一起,因为它的规则与包选择子系统的规则是同一概念。所以它既可以在目标(target)上进行扩展也可在助理上进行扩展。 本文对Linux防火墙技术作了详细的阐述。本文首先介绍了防火墙Netfilter的框架以及如何使用用户空间工具iptables设置Linux防火墙,接着通过一个例子介绍了TCP/IP协议栈是如何对报文进行处理的,然后介绍了Netfilter实现所需的数据结构,接着详细的阐述了iptables的实现,其中详细介绍了包过滤系统的实现,最后阐述了连接跟踪与NAT的实现。本文研究的结果已经在Kingnet SOHO路由器中实现,产品性能稳定,效率优于类产品,得到厂商较高的评价。