首页 专题 - 实验 - 软件 - 管理 - 布线 - 方案 - 配置 - 问题 - 协议 - 下载 - 交换 - 路由 - 无线 - 安全 - 认证 - Cisco - 华为 - 网吧 - ADSL
您是本帖第711位浏览者 打印

[转载] Ipchains参数完全手册 (转帖)

Ipchains参数完全手册 (转帖)

Ipchains参数完全手册


Ipchains被用来安装、维护、检查Linux内核的防火墙规则。规则可以分成四类:IP input链、IP output链、IP forward链、user defined链。

一个防火墙规则指定包的格式和目标。当一个包进来时,核心使用input链来决定它的命运。如果它通过了,那么核心将决定下一步包该发往何处(这一步叫路由)。假如它是送往另一台机器的,核心就运用forward链。如果不匹配,进入目标值所指定的下一条链,那有可能是一条user defined链,或者是一个特定值:ACCEPT,DENY,REJECT,MASQ,REDIRECT,RETURN。

ACCEPT意味着允许包通过,DENY 扔掉包就象没有收到过一样,REJECT也把包扔掉,但(假如它不是ICMP包)产生一个ICMP回复来告诉发包者,目的地址无法到达(请注意DENY和REJECT对于ICMP包是一样的)。

MASQ告诉核心伪装此包,它只对forward链和user defined链起作用,想让它起作用,编译核心时必需让IP Masquerading起作用。

REDIRECT只对input链和user defined链起作用。它告诉核心把无论应送到何处的包改送到一个本地端口。只有TCP和UDP协议可以使用此指定。任意用“-j REDIRECT”指定一个端口(名字或编号)可以使送往此的包被重定向到某个特殊的端口,即使它被标记为送到其它端口。想让它起作用,编译内核时,必须让CONFIG_IP_TRANSPARENT_PROXY起作用。

最后的一个目标指定是RETURN,它跳过它下面的所有规则,直到链的末尾。

任何其它的目标指定表示一个用户自定义的链。包将在那个链中通过,假如那个链没有决定此包的命运,那么在那个链中的传输就完成了,包将通过当前链的下一个规则。

参数说明
-A :--append

在所选链的链尾加入一个或多个规则。有时一个单命令行能影响多个规则,有两种做法:第一,假如你设置一个能解析为多个IP地址(使用 DNS)的主机名,ipchains将如同你对多个地址都设置了命令一样发生作用。假如主机名“www.foo.com”解析为三个IP地址,主机名“www.bar.com”解析为两个IP地址,那么命令“ipchains -A input -j reject -s www.bar.com -d www.foo.com”将在input链中追加6条规则。-D(-I,-R)的语法与-A完全相同。当在一个链中有多个相同的规则时,只有第一个被删除。

-D,--delete

从所选链中删除一或多条规则。我们可以用两钟方法中的任何一钟删除此规则。首先如果我们知道它是链中的唯一规则,我们可以使用编号删除,输入:

# ipchains -D input 1

来删除进入链的编号1规则。第二条路是-A命令的镜象,但是用-D代替-A. 当你不愿意去数繁多的规则时,这是一个有用的方法。这种情况下,我们使用:

# ipchains -D input -s 127.0.0.1 -p icmp -j DENY

-R,--replace

在所选链中替换一条规则,如果源和目标目标名解析到多个地址,命令将失败。

-I,--insert

以给出的规则号在所选链中插入一条或多条规则。如果规则号是1,插入的规则在链的头部。

-L,--list

列出指定链的所有规则。如果没有指定链,将列出所有链的规则。-L有三个可选项:“-n”(数值)项非常有用,它阻止 ipchains 去查找IP地址,假如你的DNS没有正确设置,或你已经过滤掉了 DNS 请求,这将造成很大延时。它还会导致端口用数字而不是名字被显示出来。“-v”选项显示规则的所有详细信息,如包和字节计数器,TOS掩码,接口,和包标记,用其它的方法这些项都会被忽略。

-F,--flush

使用“-F”命令可以清除一个链中的所有规则。

# ipchains -F forward

假如你不指定链,那么所有链都将被清空。

-Z,--zero

重置计数器。但有时你想在重置计数器前知道它们的值。你可以同时使用“-L”和“-Z”命令,读计数器的同时重置它们。不幸的是,假如你这样做,你不能只操作一个链,你不得不列表和清零所有的链。

-N,--new-chain

以给定的名字创建一条新的user defined链。不能与已有链同名。

-X,--delete-chain

删除链必须满足两个条件:它们是空的,并且不是任何规则的目标. 但你不能删除3个内置链中的任何一个。

-P,--policy

改变内置链政策。

-M,--masquerading

允许观察当前IP伪装的连接(与-L一起)。或者设置内核IP 伪装的参数(与 -S 一起)。

-S,--set tcp tcpfin udp

设置伪装的超时值,“-S” 后跟三个以秒表示的超时值: TCP sessions,FIN 包到后的TCP sessions,和对于UDP包的。假如你不想改变这些值,给个“0”值即可。

默认值在“/usr/include/net/ip_masp.h”文件中,目前分别是15分,2分和5分。仅允许和“-M”一起使用。

-C,-- check

有时你想知道一个确定的包进入机器后会发生什么事情,比如调试防火链时。ipchains的“-C”命令提供与核心检查真实包完全相同的程序来让你做这件事。

你可以指定让哪个链来检测包,把链的名字放在“-C”参数后即可。鉴于核心总是从input,output或forward链开始,特许你从需要测试的链开始。

包的细节用与设置防火墙规则相同的语法设定。 在个别时,包的协议(“-p”),源地址(

TOP