LINUX iptable应用手册(六)

来源:互联网 发布:铁底公式源码 编辑:程序博客网 时间:2024/06/05 21:56
第六篇



实际的日志讯息会被记录在哪个档案,取决于当时系统的syslog.conf组态是如何设定的。对于iptables的讯息而言,右于它是位于Linux核心的机制,所以.如果你使用 - -log-levelinfo选项,你应该寻找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位址(过滤destMAC是沒有意义的),所以此过滤条件只能用于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位址的长度是32bits.其中有一部份是「网路编号」另一部份是「主机编号」两者之间的分界取決於「遮罩」(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组态时才有效。

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






To be continued........ 
原创粉丝点击