iptables 命令加载的模块提供了额外的匹配选项。
要使用一个匹配选项模块,通过名称加载它:-m <module-name>,在这里,<module-name> 是模块名。
在默认情况下,许多模块都有效。您也可以创建模块来提供额外的功能。
以下是一些最常用模块的列表:
limit 模块 — 限制一个特定规则可以匹配的数据包的数量。
当与 LOG target 一起使用时,limit 可以防止大量匹配的数据包在系统日志文件中产生大量重复的信息,或占用大量的系统资源。
请参阅 第 3.4.3.5 节 “Target 选项” 来获得更多关于 LOG target 的信息。
limit 模块启用了以下选项:
--limit — 设置在一个特定时间段中最多匹配的数据包数量(使用 <value>/<period> 对来指定)。例如,--limit 5/hour 允许每小时可以匹配五条规则。
时间段可以指定为秒、分钟、小时或天。
如果时间没有被指定,它的默认值为 3/hour。
--limit-burst — 设置在同一时间匹配一个规则的数据包的数量限制。
这个选项应该是一个整数值,并需要和 --limit 选项一起使用。
如果没有特定的值被指定,它的默认值为 5。
state 模块 — 启动状态匹配。
state 模块启用了以下选项:
--state — 匹配有以下连接状态的一个数据包:
ESTABLISHED — 匹配的数据包与一个已经建立的连接中的其它数据包相关联。如果您希望维护在一个客户端系统和一个服务间的连接,您需要接受这个状态。
INVALID — 匹配的数据包不能与一个已知的连接相关联。
NEW — 匹配的数据包正在创建一个新连接,或它是一个以前没有出现的双向连接的一部分。如果您要允许到一个服务的新连接,您需要接受这个状态。
RELATED — 匹配的数据包正在开始一个与一个存在的连接相关的新连接。它的一个例子是 FTP,FTP 使用一个连接来控制通信(端口21),并使用一个独立的连接进行数据传输(端口20)。
多个连接状态可以在一起使用,使用逗号隔开不同的状态,如 -m state --state INVALID,NEW。
mac 模块 — 启用硬件 MAC 地址匹配。
mac 模块启用了以下选项:
--mac-source — 匹配发送这个数据包的网卡的 MAC 地址。要在一条规则中不包括特定的 MAC 地址,在 --mac-source 匹配选项后使用 (!)。
请参阅 iptables 说明书页来获得更多关于这个模块可用的匹配选项的信息。