2.4.x的内核相对于2.2.x在IP协议栈部分有比较大的改动, Netfilter-iptables更是其一大特色,它功能强大,并且与内核完美结合,因此迅速成为Linux平台下进行网络应用扩展的主要利器,这些扩展不仅包括防火墙的实现--这只是Netfilter-iptables的基本功能--还包括各种报文处理工作(如报文加密、报文分类统计等),甚至还可以借助Netfilter-iptables机制来实现虚拟专用网(VPN).本文将致力于深入剖析Netfilter-iptables的组织结构,并详细介绍如何对其进行扩展.Netfilter目前已在ARP、IPv4和IPv6中实现,考虑到IPv4是目前网络应用的主流,本文仅就IPv4的Netfilter实现进行分析.
要想理解Netfilter的工作原理,从对Linux IP报文处理流程的分析开始,Netfilter正是将自己紧密地构建在这一流程之中的.
1. IP Packet Flowing
IP协议栈是Linux操作系统的主要组成部分,也是Linux的特色之一,素以高效稳定著称.Netfilter与IP协议栈是密切结合在一起的,要想理解Netfilter的工作方式,理解IP协议栈是如何对报文进行处理的.下面将通过一个经由IP Tunnel传输的TCP报文的流动路径,简要介绍一下IPv4协议栈(IP层)的结构和报文处理过程.
IP Tunnel是2.0.x内核就已经提供了的虚拟局域网技术,它在内核中建立一个虚拟的网络设备,将正常的报文(第二层)封装在IP报文中,再通过TCP/IP网络进行传送.如果在网关之间建立IP Tunnel,并配合ARP报文的解析,就可以实现虚拟局域网.