Iptables 规则是如何练成的 本章将详细地讨论如何构建Iptables 规则。Iptables 包含三个表(filter、nat 、mangle ), 默 认 使 用 filter 表, 每 个表包含若 干 条 链 (PREROUTING ,POSTROUTING, OUTPUT,INPUT 和 FORWARD),每条规则就添加到相应的链上。规则就是指向标,在一条链上,对不同的连接和数据包阻塞或允许它们去向何处。插入链的每一行都是一条规则。我们也会讨论基本的matche 及其用法,还有各种各样的target。 流程图 1. 基础 我们已经解释了什么是规则,在内核看来,规则就是决定如何处理一个包的语句。如果一个包符合所有的条件(就是符合 matche 语句),我们就运行 target或 ju mp 指令。书写规则的语法格式是: iptables [-t table] command [chain] [match] [-j target/ju mp] 注意 target 指令必须在最后。如果你不想用标准的表,就要在[table]处指定表名。一般情况下没有必要指定使用的表,因为 iptables 默认使用 filter 表来执行所有的命令。也没有必要非得在这里指定表名,实际上几乎可在规则的任何地方。当然,把表名在开始处已经是约定俗成的标准。 尽管命令总是放在开头,或者是直接放在表名后面,我们也要考虑考虑到底放在哪儿易读。command 告诉程序该做什么,比如:插入一个规则,还是在链的末尾增加一个规则,还是删除一个规则,下面会仔细地介绍。 Chain 指定表的哪条规则链。 match 细致地描述了包的某个特点,以使这个包区别于其它所有的包。在这里,我们可以指定包的来源 IP 地址,网络接口,端口,协议类型,或者其他什么。下面我们将会看到许多不同的 match。 最后是数据包的目标所在。若数据包符合所有的 match,内核就用target 来处理它,或者说把包发往 target。比如,我们可以让内核把包发送到当前表中的其他链(可能是我们自己建立的),或者只是丢弃这个包而没有什么处理,或者向发送者返回某个特殊的应答。下面有详细的讨论。 2. Tables 选项 -t 用来指定使用哪个表,它可以是下面介绍的表中的任何一个,默认的是 filter 表。 Table 2-1. Tables Table(表名) Ex planation (注释) nat nat 表的主要用处是网络地址转换,即Netw ork Address Translation,缩写为NAT。做过NAT 操作的数据包的地址就被改变了,当然这种改变是根据我们的规则进行的。属于一个流的包只会经过这个表一次。如果第一个包被允...