iptables命令详解_共进电子

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Iptables规则是如何练成的

本章将详细地讨论如何构建Iptables规则。Iptables 包含三个表(filter、nat 、mangle),默认使用filter表,每个表包含若干条链(PREROUTING,POSTROUTING,OUTPUT,INPUT和FORWARD),每条规则就添加到相应的链上。规则就是指向标,在一条链上,对不同的连接和数据包阻塞或允许它们去向何处。插入链的每一行都是一条规则。我们也会讨论基本的matche及其用法,还有各种各样的target。

流程图

1. 基础

我们已经解释了什么是规则,在内核看来,规则就是决定如何处理一个包的语句。如果一个包符合所有的条件(就是符合matche语句),我们就运行target 或jump指令。书写规则的语法格式是:

iptables [-t table] command [chain] [match] [-j target/jump]

注意target指令必须在最后。如果你不想用标准的表,就要在[table]处指定表名。一般情况下没有必要指定使用的表,因为iptables 默认使用filter表来执行所有的命令。也没有必要非得在这里指定表名,实际上几乎可在规则的任何地

方。当然,把表名在开始处已经是约定俗成的标准。

尽管命令总是放在开头,或者是直接放在表名后面,我们也要考虑考虑到底放在哪儿易读。command告诉程序该做什么,比如:插入一个规则,还是在链的末尾增加一个规则,还是删除一个规则,下面会仔细地介绍。

Chain 指定表的哪条规则链。

match细致地描述了包的某个特点,以使这个包区别于其它所有的包。在这里,我们可以指定包的来源IP 地址,网络接口,端口,协议类型,或者其他什么。下面我们将会看到许多不同的match。

最后是数据包的目标所在。若数据包符合所有的match,内核就用target来处理它,或者说把包发往target。比如,我们可以让内核把包发送到当前表中的其他链(可能是我们自己建立的),或者只是丢弃这个包而没有什么处理,或者向发送者返回某个特殊的应答。下面有详细的讨论。

2. Tables

选项-t用来指定使用哪个表,它可以是下面介绍的表中的任何一个,默认的是filter表。

Table 2-1. Tables

Table(表名)Explanation (注释)

nat nat表的主要用处是网络地址转换,即Network Address Translation,缩写为NA T。做过NAT操作的数据包的地址就被改变了,当然这种改变是根据我们

的规则进行的。属于一个流的包只会经过这个表一次。如果第一个包被允许做

NA T或Masqueraded,那么余下的包都会自动地被做相同的操作。也就是说,

余下的包不会再通过这个表,一个一个的被NA T,而是自动地完成。这就是

我们为什么不应该在这个表中做任何过滤的主要原因。PREROUTING 链的作

用是在包刚刚到达防火墙时改变它的目的地址,如果需要的话。OUTPUT链

改变本地产生的包的目的地址。POSTROUTING链在包就要离开防火墙之前

改变其源地址。

mangle这个表主要用来mangle数据包。我们可以改变不同的包及包头的内容,比如TTL,TOS(服务类型)或MARK。注意MARK并没有真正地改动数据包,

它只是为包设了一个标记。防火墙内的其他的规则或程序(如tc)可以使用这

种标记对包进行过滤或高级路由。注意,mangle表不能做任何NAT,它只是

改变数据包的TTL,TOS或MARK,而不是其源目地址。NAT是在nat表中

操作的。

filter filter表是专门过滤包的,内建三个链,可以毫无问题地对包进行DROP、LOG、ACCEPT和REJECT等操作。FORW ARD链过滤所有不是本地产生的并且目

的地不是本地的包,而INPUT恰恰针对那些目的地是本地的包。OUTPUT是

用来过滤所有本地生成的包的。

上面介绍了三个不同的表的最基本的内容。应该知道它们的使用目的完全不同,还要清楚每一条链的使用。

3. Commands

在这一节里,我们将要介绍所有的command以及它们的用途。command指定iptables对我们提交的规则要做什么样的操作。这些操作可能是在某个表里增加或删除一些东西,或做点儿其他什么。以下是iptables可用的command(要注意,如不做说明,默认表的是filter表。):

Table 3-1. Commands

Command

-A, --append

Example iptables -A INPUT ...

Explanation 在所选择的链末添加规则。当源地址或目的地址是以名字而不是ip地址的形式出现时,若这些名字可以被解析为多个地址,则这条规则会和所有可用的地

址结合。

Command

-D, --delete

Example iptables -D INPUT --dport 80 -j DROP或iptables -D INPUT 1

Explanation 从所选链中删除规则。有两种方法指定要删除的规则:一是把规则完完整整地写出来,再就是指定规则在所选链中的序号(每条链的规则都各自从1被编号)。

Command

-R, --replace

Example iptables -R INPUT 1 -s 192.168.0.1 -j DROP

Explanation 在所选中的链里指定的行上(每条链的规则都各自从1被编号)替换规则。当源地址或目的地址是以名字而不是ip地址的形式出现时,若这些名字可以被

解析为多个地址,则这条command会失败。

Command

-I, --insert

Example iptables -I INPUT 1 --dport 80 -j ACCEPT

Explanation 根据给出的规则序号向所选链中插入规则。如果序号为1,规则会被插入链的头部,其实默认序号就是1。

Command

-L, --list

Example iptables -L INPUT

相关文档
最新文档