Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103696654
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-05-08 10:25:42

 


LINUX iptable应用手册


第五篇



IPv4过滤条件
跟IP(IPv4)本身有关的过滤条件,都已经內建於iptables,所以,不必使用 -m选项,就可以使用IP过滤条件《图5》是IPv4封包的格式,几乎每个栏位都可以当成过滤条件,或是目标扩充模组的处理对象。《表36》說明IPv4过滤条件的选项。

《图6》是Type of Service(ToS)栏位(一组单位元标志的组合)的TOS部位的原本格式,以及目前的两种解释方式;这裡将三种版本都印出来,以便你在看到相关题材时参考。

《表33》列出ToS栏位的Precedence部位的传统解释。在现代网路上,已经很少用到Precedenc,因为Explicit Congestion Notification和Differentiated Services已经重新演绎了Precedence与TOS对於这些位元的解释。














《表34》列出ToS栏位的预定值,沒列出来的其它值一律视为无效,因为RFC标準並未定义它们。


=============================
注意-1

RFC 1349的第四节(标题是《Specification of the TOS Field))只列了四个非保留位元的值,而排除了最低位元(lsb)所隐含的零。所以,RFC 1349所列的二进位值0001,其完整值其实是00010(十进位的2),也就是对应《(表34》裡的“2”。


注意-2

ToS栏位的TOS部位的解释.原本是定义於RFC 791和1122,但是这两项标準后来被RFC 1349取代了。这个5-bits栏位原本应该有32个可能值,其中只有五种组合被预先定义,但其它位元组合依然被视为合法。但是不再容许将它们当成单位元栏位来解释。

=============================






《图7》是Flags栏位的格式。






已正式註册的IP选项的完整列,可从線取得
(hnp://).《表35》只列出其中最常用的选项。






副本(copy)位元指出选项是否应该被复制到片段包(如果原包被分段传输的话)。类别(class)位元值00表示该选项是用于「网络控制」,10(十进位的2)表示该选项是除错性质(01与11也有其意义,但是目前没用到)。其余的五个位元代表选项编号。(人们通常以完整的8-bits值来描述IP选项,而不是分成1、2、5个位元来讲)。


《表36》列出IP过滤条件的选项






在表示-s与-d的位址时,你可以使用旧式的dotted-quad记号法来表示mask(例如:192.168.1.0/255.255.255.0),或是新式的CIDR记号法(象是192.168.1.0/24)。关于CIDR,请参阅RFC 1591(位于)。《表37》彙整出一些常见的IP层协定。






iplimit过滤条件

当活动中的联机数量低于或等于指定的数量,则条件成立。
《表38》说明本过滤条件的选项。





举例来说,如果想要知道联机数过多或超低时的交通流量,可以使用下列命令设置两条规则,使它们分别在适当情形下累计byte/packer counter:

iptables -A INPUT -m iplimit ! iplimit-above 10
iptables -A INPUT -m iplimit - -iplimit-above 1000


或者,若希望每个C级规模的网络(24-bits网络位元,8-bits主机位)同时存在的HTTP联机数不得高于10,则可以使用下列规则丢弃掉超过限制的联机搭建包(SYN):

iptables -A INPUT - -p tcp - -syn - -dport 80 -m iplimit
-iplimit-above 10 - -iplimit-mask 24 -j REJECT

若要以「速率」为过滤条件,请参阅《limit过滤条件》。

Ipv4options过滤条件

本扩充模块让iptables可使用某些常见的IPv4选项为过滤条件.关于IPv4封包的标头结构,请参阅《图5》。《表39》明本过滤条件的选项。





举例来说,下列规则可丢弃所有具备任一选项的包:

iptables -A INPUT -m ipv4options - -any-opt -j DROP
《IPV4OPTSSTRIP目标》提供如何裁掉IPv4选项的方法。


IPV4OPTSSTRIP目标

本目标可裁掉包标头里的所有IPv4选项。关于IPv4包的标头结构,请参阅《图5》。IPV4OPTSSTRIP目标只能用于mangle表格。

例来说,下列规则裁掉所有入境封包的IPv4选项标头 :

iptables -t mangle -A PREROUTING -j IPV4OPTSSTRIP

关于如何挑出IPv4选项的「整体长度」过滤条件。请参阅《ipv4options过滤条件》。


===========================
诀窍
本过滤条件必在核心支持CONFIG_IP_NF_MATCH_LENGTH组态时才有效。
===========================





举例来说,若想丢掉过长的ICMP PING 包(通常是恶性的),使用下列命令:

iptables -A INPUT -p icmp - -icmp-type ping -m length
- -length 1000 -j DROP



limit过滤条件

持续测试包的进出速率,当超过速率限制时,则停止监测。
《表41》说明本过滤条件的选项。


=========================
诀窍

本过滤条件必须在核心支持CONFIG_IP_NF_MATCH_LIMIT组态时才有效。

=========================






举例来说,若要接受每秒十次之内的ICMP PING封包,规则如下:
iptables -A INPUT -p icmp - -icmp-type ping -m limit
- -limit l0/s -j ACCEPT

或者,换个角度思考,拒收速率超过10次/每秒的1CMP PING包:
iptables -A INPUT -p icmp - -icmp-type ping -m limit
! - -limit l0/s -j DROP

利用limit过滤条件搭配LOG表格,可以模拟出一个违规记录器。

如果要以联机数代替封包数为限制条件,请参考iplimit和connlimit过滤条件,如果想限制特定对象的整体交通量,请考虑使用quota过滤条件。


LOG目标
将符合条件的包的相关资料记录于系日志统(透过syslog《表42》说明本目标的选项。


============================
诀窍

本目标必须在核心支持CONFIG_IP_NF_TARGET_LOG组态时才有效。
============================





《表43》列出日志讯息的各种程度的名称与编号。在Linux系上,这些信息定义于标头档,如果你的系统上有完整的Linux核心原始程序,你应该可以找到这个档案。






===========================
诀窍

panic、error和warn这三个名称已经被淘汰了(虽然iptables在显示讯息时,仍会将err改成error)。

===========================




注译:
package :“封包”或称呼为“包”
filter : 筛选或 过滤





出处:南方Linux
阅读(200) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~