文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>LINUX iptable应用手册(第二部分)

LINUX iptable应用手册(第二部分)

时间:2006-07-28  来源:redhathome

LINUX iptable应用手册(四)

来源:南方Linux (2006-06-20 14:41:55)

第四篇



任何有效的dscp筛选条件,都至少要含有上述选项的其中之一,《表23》是各种DSCP分级的说明,《表24》是DSCP值与分级名称的对应关系。





相关参考:

● 《DSCP目标》

● RFC 2474《Definition of the Differentiated Services Field(DS Field)in the Ipv4 and Ipv6 Headers》(位于http://www.rfc-editor.org/rfc/rfc2474.txt)。

● RFC 2475《An Architecture for Differentiated Service》(位于http://www.rfc-editor.org/rfc/rfc2475.txt)。

DSCP目标

设定IPv4包标头里的DSCP栏位值。DSCP栏位是IPv4 header的TOS位元组的重新演绎。《表25》是DSCP目标的选项。

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

本目标必须在核心支援CONFIG_IP_NF_TARGET_DSCP组态时才有效。

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



任何有效的DSCP目标,都至少要含有上述选项的其中之一。举例来说,若要将所有出境包的DSCP栏位设定为0x0e:
iptables -t mangle -A OUTPUT -j DSCP - -set-dscp 0x0e

相关参考:

● 《dscp过滤条件》

● RFC 2475《An Architecture for Differentiated Service》(位于http://www.rfc-editor.org/rfc/rfc2475.txt)。

ecn过滤条件

以IPv4 header中的Explicit Congestion Notification(ECN)栏位为过滤条件。《表26》说明本过滤条件的选项。

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

本目标必须在核心支援CONFIG_IP_NF_MATCH_ECN组态时才有效。

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



相关参考:

● 《ECN目标》。

● RFC 2481《A Proposal to add Explicit Congestion Notification(ECN)to IP》(位于http://www.rfc-editor.org/rfc/rfc2481.txt)。

● RFC 3168《The Addition of Explicit Congestion Notification(ECN)to IP》(位于http://www.rfc-editor.org/rfc/rfc3168.txt)。

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

本目标必须在核心支援CONFIG_IP_NF_TARGET_ECN组态时才有效。

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



相关参考:

● 《ecn过滤条件》。

● RFC 2481《A Proposal to add Explicit Congestion Notification(ECN)to IP》(位于http://www.rfc-editor.org/rfc/rfc2481.txt)。

● RFC 3168《The Addition of Explicit Congestion Notification(ECN)to IP》(位于http://www.rfc-editor.org/rfc/rfc3168.txt)。

Esp过滤条件
本扩充模组使iptables可以用IPSec协定的Encapsulating Security Payload (ESP)header的Security Parameters Index (SPI)栏位为过滤条件。目的地位址与SPI栏位共同构成包的SA。使用esp过滤条件之前,必须先以 -p载入相关协定(esp或ipv6-crypt)的扩充模组。《表28》说明本过滤条件的唯一选项。

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

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

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



范例:

iptable -A INPUT -p esp -m esp - -espspi 500 -j DROP

关于IPv6协定,请参阅《IPv6 Essentials》 (Silvia Hagen著,O Reilly 出版)相关参考:《ah过滤条件》。

FTOS目标

此目标的作用,是将包的整个Type of Service (ToS)栏位设定为特定值。它不理会ToS栏位的特殊演绎,象是级别服务(Differentiated Services),也不理会ToS各个子栏位的意义。FTOS目标只有一个选项,见《表29》。



举例来说,下列命令将出境包设定为「普通服务」(0x00,对应名称为Normal-Service):
iptables -t mangle -A OUTPUT -j FTOS - -set-ftos 0

相关参考:

● 《tos过滤条件》

●如果只想影响ToS栏位的子栏位,请参阅《TOS目标》。

helper扩充模组

加载特定协议的联机追踪辅助模组,由该模组过滤所追踪的连线类型之封包。《表30》说明本模组唯一支持的选项。

诀窍

本模组必须在核心支持CONFIG_IP_NF_MATCH_HELPER组态时才有效。



举例来说,若希望IRC通讯(Internet Relay Chat)能通过防火墙,应该使用下列命令戴入irc辅助模组:
iptable -A INPUT -m -helper - -helper irc -j ACCEPT

icmp过滤条件

本扩充摸组使iptables能够以「网际控制讯息协定」(ICMP)特有的资讯为过滤条件。使使用icmp过滤条件之前,必须先用 -p icmp戴入本模组。《图4》是ICMP header的各个栏位。《表31》说明icmp过滤条件的选项。





《表32》正式ICMP协定型别与代码,最新的正式资料在:http://www.iana.org/assignments/icmp-parameters(参考RFC3232《Assigned Numbers:RFC 1700 is Replaced by an On-line Database》,位于http://www.rfc-editor.org/rfc/rfc3232.txt)。请留心《表32》的「名称」栏,以中文或粗体字型表示的项目,表示你只能以「代码」来表示该项目,而不是名称。



 

 

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://www.iana.org/assignments/ip-parameters).《表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(位于http://www.rfc-editor.org/rfc/rfc1519.txt)。《表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)。

 

LINUX iptable应用手册(六)


第六篇

实际的日志讯息会被记录在哪个档案,取决于当时系统的syslog.conf组态是如何设定的。对于iptables的讯息而言,右于它是位于Linux核心的机制,所以.如果你使用 - -log-level info选项,你应该寻找kern.=info path 。如果需要更进阶的日志记录能力,请参考《ULOG目标》。

mac过滤条件

此扩充模块让iptables可以使用Ethernet界面的「Media Access Controller」(MAC)位址为过滤条件。《表44》说明此过滤条件唯一的选项。

严格来说,MAC位址不算IP协议的过滤条件,因为在OSI layer架构中,Ethernet的位阶低于IP;然而,由于许多IP网络路架设在Ethernet 上,也就是说,大多数系统可以取得MAC信息,也因此mac成为重要的的扩充模组之一。

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

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

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



由於mac扩充模组只能过滤传讯方的MAC位址(过滤dest MAC是沒有意义的),所以此过滤条件只能用于PREROUTING、FORWARD或INPUT链结裡的规则,而且只对来自Ethernet装置的封包才有效。举例来說,下列规则限制ethl介面只能夠与特定Ethernet装置通讯:

iptables -A PREROUTING -i ethl -m mac - -mac-source
! 0d:bc:97:02:18:2l -j DROP

上述规则很适合用於无線网路环境裡.

mark过滤条件

过滤含有特定标记值的封包。封包标记功能,通常搭配ip命令(iproute2套件的工具程式之一)使用,用以执行进阶的选径应用。《表45》說明此过滤条件唯一的选项。

Linux核心容许你贴一个「标记」(一个整数值)到某个封包,然后将该封包(连同标记)传给核心的另一个部门接手处理。请注意,「标记」並非储存於封包本身(也就是說,被贴标记的封包,其header与body都不会被改变),而是核心另外维护的一段中介资料(metadata),所以,当封包离开贴它们帖标记的电脑(当封包被转交给其它电脑时,就会发生这种现象),标记信息就会跟著消失。

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

本过滤条件必须在核心支援CONFIG_IP_NF_MATCH_MARK组态时才有效。
===========================



mask可用来让你将核心的标记值当成一组位元栏来处理.不过,MARK目标扩充模组並不支援mask的使用,所以你不能利用iptables来渐进地设定位元栏。

相关参考:

MARK目标

设定包的标记。包的标记功能,通常搭配ip命令(iproute2套件的工具程式之一)使用,用以执行进阶的选径应用。《表46》說明MARK目标唯一的选项。

=============================
诀窍
本目标必须在核心支援CONFIG_IP_NF_TARGET_MARK组态时才有效。

MARK目标只能用於mangle表格。
=============================



相关参考:

● (mark过滤条件)

● 如果你希望标记资讯能跨越不同电脑,请参閱《TOS目标》。

MASQUERADE目标

具有连線追蹤能力的SNAT操作,特別适用於具有动态IP位址的介面。《表47》是本目标唯一的选项。

MASQUERADE扩充模组只能处理TCP与UDP连線。

============================
诀窍
本目标必须在核心支援CONFIG_IP_NF_TARGET_MASQUERADE组态时才有效。
============================

相关参考:

(SNAT目标) :提供相似的SNAT功能性,但是不理会封包之间的关系(连線追蹤),适用於具有固定IP位址的连線。

Mumport过滤条件

让iptables可同时以多个TCP或UPD通讯端口为过滤条件。
《表48》說明本过滤条件的选项。

只能搭配TCP和UDP恊定使用(-p tcp或-p udp)。

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



portspec可以是通讯端口的正式名称(定义於/etc/services档案)或编号,或是一连串以逗号分隔通讯端口编号(最多15个),或是p1 : p2格式的编号范围。

NETLINK目标

透过netlink socket将包传送到userspacc。利用NETLINK,你可将符合条件的封包传给userspace的包处理程式,或是交给 fwmon之类外部的应用程式(参閱
http://www.scaramanga.co.uk/fwmon/)。《表49》說明本目标的选项。

==========================
窍门
过滤选条件必须在核心支援CONFIG_IP_NF_QUEUE组态时才有效。
==========================



举例来說,若要将所有ICMP ping封包全部注入netlink然后才丟棄,使用下列命令:

iptables -A INPUT -p icmp - -icmp type ping -j NETLINK -nldrop

相关参考:

● (ULOG目标) :透过netlink sockets与userspace的ulogd记錄程式通讯。

● netlink manpages(使用man 7 netlink或marl 3 netlink命令查看)。

● RFC 3549 《Linux Netlink as an IP Services Protoco1》
(位於http://www.rfc-editor.org/rfc/rfc3549.txt)。

NETMAP目标

IPv4位址的长度是32 bits.其中有一部份是「网路编号」另一部份是「主机编号」两者之间的分界取決於「遮罩」(mask)。NETMAP的作用是裁掉网路编号,将它換成另一个不同的编号;在效果上,这相当於将某网路的主机「映射」(mapping)到另一个网路。将NETMAP目标设置於PREROUTING链结,它会修改外来包的目的地位址;若是放在POSTROUTING链结,则是修改出境包的来源位址。《表50》說明NTEMAP目标唯一的选项。

=============================
诀窍
奉筛选条件必须在核心支援CONFIG_IP NF_TARGET_NETMAP组态时才有效。
=============================



举例来說,若要在192.168.1.0/24与172.17.5.0/24两个网络之间做对应,使用下列两个命令:

iptables -t nat -A PREROUTING -d 192.168.1.0/24
-j NETMAP - -to 172.17.5.0/24

iptables -t nat -A POSTROUTING -s 172.17.5.0/24
-j NETMAP - -to 192.168.1.0/24

nth过滤条件

用于将符合先前条件的包分成每 n个一组。《表51》说明本过滤条件的选项。



举例来说,若要将外来包(假设来自eth0)平均分散到三部服务器:

iptables -t nat -A PREROUTING -i eth0 -p udp -dpor $PORT
-m nth - -every 3 - -packet 0 -j DNAT - -to-destination $SERVER0

iptables -t nat -A PREROUTING -i eth0 -p udp -dport $PORT
-m nth - -every 3 - -packet 1 -j DNAT - -to-destination $SERVER1

iptables -t nat -A PREROUTING -i eth0 -p udp -dport $PORT
-m nth - -every 3 - -packet 2 -j DNAT - -to-destination $SERVER2

你甚至可使用nth过滤条件搭配DROP目标来仿真封包漏失现象。

关于更好的负载均摊方法,读参阅(DNAT目标)。

owner过滤条件

以产生封包的行程(拥有者)之信息为过滤条件。本过滤条件只能用于OUTPUT链结,因为它需要能够取得关于产生封包的本地行程之信息。 请注意,owner过滤条件对于ICMP封包无
效,因为ICMP封包没有拥用者。《表52》说明本过滤条件的选项。

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

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



相关阅读 更多 +
排行榜 更多 +
木雕高高手中文版

木雕高高手中文版

休闲益智 下载
我不是飞剑安卓版

我不是飞剑安卓版

休闲益智 下载
愤怒的小鸟梦幻爆破安卓最新版

愤怒的小鸟梦幻爆破安卓最新版

休闲益智 下载