文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>NETFILTER/IPTABLES详解

NETFILTER/IPTABLES详解

时间:2005-11-08  来源:junglegq

自己的一些总结

NETFILTER/IPTABLES详解

伴随着linux操作系统的发展,网络防火墙软件已由2.0x支持的ipfwadm,到2.2x支持的ipchains,发展为当今流行的iptables。作为公司网络构架的一个重要部分,iptables软件的应用价值得到了充分的体现,对数据包过滤、NAT转发的功能非常强大。相对ipchains而言,更利于创建合理的规则链,概念的把握也更清晰。

要讲iptables,必须先说一下netfilter构架。Netfilter是内置于linux2.4x及linux2.5x的一套构架,它是通过在kernel中内嵌5个(仅ipv4)钩子函数(hook)发挥作用。这些钩子函数在数据报流过协议栈的几个关键点被调用。通过设置,Kernel会注册一些使用到这些hook函数的模块,并在必要时调用模块的回调函数,由这些回调函数来处理相应数据,丢弃无用的、保留有用的或者也可更改源数据包的ip包头。而iptables只是建立在Netfilter下的一套数据匹配、过滤规则集合,一旦符合某一规则,立即执行相应的行动(action)。

以下是netfilter在ipv4中的构架:(极为重要)

(不好意思,以后再加...)

数据进入系统后,首先使用PREROUTING钩子函数,然后内核自动查看路由,选择forward(转发目的ip非本机)或input(目的ip为本机)。如路由forward,则调用FORWARD钩子函数;input,则调用INPUT钩子函数。注意,一旦使用FORWARD,则数据不再进入INPUTt函数中,反之亦然。若数据由服务器发出,则进入OUTPUT函数中处理,最后与FORWARD函数处理后的数据一同进入POSTROUTING钩子函数。从整体上看,凡是进入服务器网卡的数据包必定先要通过PREROUTING,凡从服务器网卡出去的数据包必定最后通过POSTROUTING。

使用iptables前,先要在内核中修改配置:

以下以linux-2.4.21内核为例:

1.cd /usr/src/linux

2.make menuconfig

3.选networking options->ip: Netfilter Configuration ->自选所需模块。

4.退出保存。

Iptables使用语法:(见man iptables)

       iptables [-t table] -[ADC] chain rule-specification [options]

       iptables [-t table] -I chain [rulenum] rule-specification [options]

       iptables [-t table] -R chain rulenum rule-specification [options]

       iptables [-t table] -D chain rulenum [options]

       iptables [-t table] -[LFZ] [chain] [options]

       iptables [-t table] -N chain

       iptables [-t table] -X [chain]

       iptables [-t table] -P chain target [options]

iptables [-t table] -E old-chain-name new-chain-name

iptables使用3个默认表:filter,nat,mangle。其中filter为系统缺省操作表。

Filter表用于防火墙设置,对匹配条件的数据包可以选择access,drop,reject等的处理方式。Nat表用于网络地址转发,可以将源、目的ip地址转变为指定的ip地址。Mangle表可以实现对数据报头的修改或给数据报附上一些带外数据,当前mangle表支持修改TOS位及设置skb的nfmard字段。但由于某些中间层设备会忽略tos位的值,因此实际应用较少。

Iptables中的每个默认表都有相应的系统缺省规则链,分别对应于以上所说的hook函数。Filter表中有input,forward,output链;nat表中有prerouting,forward,postrouting链;mangle表中有prerouting,output链。

Iptables可以创建自定义链,实际上他必须建立在系统默认的链的基础上才能发挥作用,主要将相关联的规则集集中描述到同一个自定义链中,使管理者日常维护的条理更清晰。

常用语法解释:

iptables –t 表名 –A/I/D/R/ 链名 【匹配条件】 -j 行为

表名、链名不再重复,介绍一下“匹配条件”:

-p 指定协议(tcp/icmp/udp/...)              etc. –p icmp  (可以视为加载了相应的处理模块)

-s 源地址(ip address/masklen)              etc. –s 10.1.2.0/24

-d 目的地址(ip address/masklen) etc. –d 10.1.2.3/32

-i 数据报输入接口                       etc. –I eth0

-o 数据报输出接口                       etc. –o eth1

一些模块加载后,还可以进一步指定模块所支持的子选项,如:

iptables …… -p tcp –sport 80 …… -j ……

iptables   …… -m mac –mac-source 00:11:22:33:44:55 …… -j ……

鉴于filter表的表述比较简单,故不再敷述。以下介绍nat表。

Nat:Network Address Translation 网络地址转换

linux以前的内核仅仅支持有限的NAT功能,被称为伪装(masquerade)。Netfilter则支持任何一种NAT。一般来讲NAT可以分为源NAT和目的NAT。

源NAT在数据报经过postrouting时修改数据报的源地址。伪装是一个特殊的SNAT。

目的NAT在数据报经过output或prerouting 时修改数据报目的地址。端口转发和透明代理都是DNAT。

可以举例说明:

iptables -t nat -A POSTROUTING –s 10.0.0.1/32 -j SNAT --to-source 1.2.3.4

iptables –t nat –A PREROUTING –d 1.2.3.4 –j DNAT –to-destination 10.0.0.1

公司对iptables使用还包括:masquerade及redirect。

MASQUERADE:

用于具有动态IP地址的拨号连接的SNAT,类似于SNAT,但是如果连接断开,所有的连接跟踪信息将被丢弃,而去使用重新连接以后的IP地址进行IP伪装。我认为与常用路由器的PAT 功能相类似。

Etc. iptables -t nat -A POSTROUTING -j MASQUERADE -o ppp0

REDIRECT:

重定向数据报为目的为本地,和DNAT将目的地址修改为接到数据报的接口地址情况完全一样。

Etc. iptables –t nat –A PREROUTING –s 10.0.0.0/24 –d ! localhost –dport 80 –j REDIRECT –to-port 3128

以上指定了到达非本机ip的其他http包,在刚进入服务器时,更改数据包的目的ip为服务器的ip,目的端口改为3128。我们配合squid的使用,可以实现用户上网的透明代理。

Mangle表到目前的应用不很普遍,暂不介绍。

任何时候在任何nefilter规则链中,数据报都可以被排队转发到用户空间去。实际的排队是由内核模块来完成的(ip_queue.o)。

数据报被发送给用户空间进程。该进程能对数据报进行任何处理。处理结束以后,用户进程可以将该数据报重新注入内核或者设置一个对数据报的目标动作(如丢弃等)。

这是netfilter的一个关键技术,使用户进程可以进行复杂的数据报操作。从而减轻了内核空间的复杂度。用户空间的数据报操作进程能很容易的适用ntfilter提供的称为libipq的库来进行开发。

最后,提醒诸位,最好将每一条iptables规则统一写到/etc/sysconfig/iptables文件中,iptables每次启动时将读取其中的脚本,并一次性同时生效。单一的加入iptables规则将逐一生效,并刷新整个规则链,处理多条规则时极不合理。

可以有命令:iptables-save 将当前激活的所有规则写入/etc/sysconfig/iptables文件中。

                                                                                                    顾    箐

                                                                                                    12/15/2003

 

 

 

 

 

 

 

 

 

 

 

 

 

 

相关阅读 更多 +
排行榜 更多 +
打螺丝高手

打螺丝高手

模拟经营 下载
解救火柴人计划安卓版

解救火柴人计划安卓版

体育竞技 下载
鸡生化精英安卓版

鸡生化精英安卓版

飞行射击 下载