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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-05-08 10:24:50

 

LINUX iptable应用手册


第三篇



透明代理(Transparent Proxying)

「透明代理」的原理,是拦截特定类型的出境连線,然后转向另一部能代替原本目的地提供服务的伺服器。此技术让你可架设网络服务的代理服务器(proxy server).而又不必逐一设定内部网络上的每台电脑。因为所有出境连線都会经过闸道器,所以,任何试图连線到外地网路特定通讯埠的连線,都可以在无形中自动转向代理服务器。

举例来说,倘若你在闸道器架设了HTTP proxy服务(例如Squid),其服务通讯端口是TCP port 8888,你可以将下列规则加入闸道器主机,使其将所有试图连到外界的HTTP通讯都转向HTTP proxy(假设eth0是闸道器连接内部网络的介面):

iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80
-j REDIRECT - -to-port 8888

如果代理服务安装於闸道器之外的机器,要做到「透明代理」的效果,那将会复杂许多。关於这方面的细节,请参考Daniel Kirac对Squid所寫的一篇指導文章:


负载平衡

负载平衡(load balancing)的作用,是将工作负担大致平均第分散到多部提供相同服务的主机,使每部主机获得大致相等的工作量,辑此充分利用网络频宽。为了尽量平均分配工作负担,闸道器必须统计各目标服务器已承受的工作量,如此才能决定下次应该将新工作分配给哪一部目标服务器。

使用nth过滤条件配搭DNAT目标,iptables可将网络负载均摊到多部协同服务器。


「乏态」与「具态」防火牆

「防火墙」(Firewall)是一种特殊的閘道电脑,其作用是限制其相连网络之间的交通。乏態防火牆 (stateless firewall)使用不需要追踪连线或其它状态的简单过滤条件(比方说,依据来源与目的地位址的组合,或特定协定的通讯端口)来决定如何处理包。也就是说,所有包都被视为独立的个体来处理,而不考虑它们之间的关连性。

具态防火墙(stateful firewall)提供较先进的包处理能力,其过滤条件可以涉及高阶的传输层观念,诸如TCP连线、UDP串流、最近发出包的主机、仍在活动中的连线等等。换言之,包不再被视为独立个体,不同的包之间的关连性或其它状态,也可以成为过滤条件。支援具态防火墙的过滤条件扩充模组,包括iplimit、limit和recent等等。
上述两种防火墙规则,iptables都支援(请参阅《网址转译(NAT)》小节的《警告》)。


常用的配套工具

当你需要测试防火墙或其它网络功能时,有许多方便的工具可以配合使用。《表14》列出几种最常用的必备工具。






iptables命令参考资料





线上说明
iptables提供了一些线上说明。使用下列命令可取得基本的辅助资讯:

iptables -h
iptables -m match -h
iptables -j TARGET -h
man iptables



===========================
警告:
这些资讯来源之间偶尔会出现互相矛盾的情形。
===========================

Iptables的子命令

每个iptables命令都可包含一个子命令,这些子命令作用在特定表格(某些特殊情况下是作用于链结)。《表16》列出用于构成子命令的选项。


============================
警告:
iptables 1.2.7a版的manpage有提及 -c选项,但是该选项实际是却不存在。

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




表《16》:iptables子命令选项





过滤条件与目标

iptable内建了少数几种过滤条件(match)与目标(target),此外还有一组扩充模块,当你的规则中参考它们时,它们才会被即使戴入。基本上,iptables只内建关于IP协定本身的过滤条件,其余过滤条件都是以扩充模组的形式存在,即使是ICMP、UDP、TCP这类以IP协定为基础的协定,也必须使用 -p选项指定相关协议(icmp、tcp和udp),才会载入对应的过滤条件模组。

本节逐一说明iptables1.2.7a版内建的所有过滤条件,以及额外的match/target扩充模组。


——————————————————————
诀窍

很多筛选条件的选项,容许你设立「不成立条件」,也就是过滤出不符合条件的封包。描述这类「不成立条件」的语法,是在选项之前加注一个惊叹号(其实是『! 』惊叹号的前后各有一个空白宇元)。对于容许反向意义的选项,本手册以『[!]』记号来表示.本手册只说明选项的成立条件,请大家自己推导「不成立条件」的意义。

——————————————————————


网际协定(IPv4)筛选条件

基于本手册的字典式编排风格,关于iptables内建的IP过滤条件,详列于稍后的《IPv4过滤条》小节。


ACCEPT目标

ACCEPT是iptables内建的目标(处理方式)之一,其作用是终止目前链结继续处理符合条件的包,将包交给标准流程(见图1 ~ 3 、表4 ~ 7)的下一个表格与链结。

只有ACCEPT与DROP可以当成内建链结的预设政策。


ah过滤条件

ah 扩充模组使iptables能以IPSec协定的Authentication Heade(AH)Security Parameters Index (SPI)栏位为过滤条件。包的目的地地址与SPI栏位两者共同构成所谓的「Security Association」(SA)。本模组必须搭配 -p ah(或-p ipv6-auth或-p 51)协定选项使用。《表17》是ah过滤条件唯一的选项。


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

————————————————————






范例:
iptables -A INPUT -p ah -m ah - -ahspi 500 -j DROP

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


Connmark过滤条件

以封包的联机标记(connection mark)为过滤条件。《表18》说明其唯一的选项。





相关参考:《CONNMARK目标》

CONNMARK目标

设定包的连线标记(connection mark)。《表19》说明此目标的选项。






相关参考:《connmark过滤条件》。

conntrack过滤条件

以联机追踪机制所维护的信息为过滤条件。《表20》说明本过滤条件的选项。

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

——————————————————————






DNAT目标

修改封包的目的地地址/通讯端口,而达到「目的地网址转译」(DNAT)的效果。如果同时指定多个目的地的地位址则联机会被均摊到这些地址。利用联机追踪资讯,可确保属于同一联机的所有封包,会被导送到同一个目的地主机与通讯端口。《表21》是DNAT目标的选项。





DNAT目标只能出现在nat表格的PREROUTING和OUTPUT举例来说,假设防火墙连接Internet的介面上eth0,若要将来自Internet的HTTP request(TCP包、目的端口为port 80)转接到内部网络上的192.168.1.80网站服务器:
iptables -t nat -A PREROUTING -i eth0 -p tcp - -dport 80
-j DNAT - -to-destination 192.168.1.80

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

注意:

执行这类DNAT时,还必须兼顾应用层的兼容问题,比方祝,让DNS分别对内部网络与Internet提供不同的地址信息,让内部网络上的其它主机可以使用同样名称来直接存取web server.而不必绕一圈经过防火墙(或闸道器)。

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

相关参考:
●《REDIRECT目标》:转接到本机的另一个通讯端口。

●《SNAT目标》:只修改来源位址的特殊NAT操作(Source NAT)。

●《nth过滤条件》:可用来施行负载平衡的另一个办法。


DROP目标

DROP是iptables内建的目标(处理方式)之一。其作用是促使核心终止处理目前的链结,也不让也不让其它地方接手处理该包:原发讯方不会收到任何通知。只有DROP和ACCEPT目标可用于当成内建链结的预设政策。


如果希望在丢弃封包时,让送讯方获得ICMP通知,请改用REJECT目标(参阅《REJECT目》)。

dscp过滤条件

本模块以IPv4 header的Differentiated Services Codepoint(DSCP)栏位值为过滤包的条件。DSCP字段是IPv4 header的TOS字节的重新诠释。《表22》说明dscp过滤条件的选项。

---------------------------------------------
诀窍
本过滤条件必须在核心支援CONFIG_IP_NF_MATCH_DSCP组态时才有效.
---------------------------------------------



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



To be continued........






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