当一个数据包与一个特定的规则相匹配时,这条规则可以把这个数据包重新定向到不同的 target 中,由这些 target 来决定对这个数据包采取什么行动。每个 chain 都有一个默认的 target,它在数据包与这个 chain 中的任何规则都不匹配,或所匹配的规则都没有指定 target 时使用。
以下是标准的 target:
<user-defined-chain> — 规则表中的一个用户定义的 chain。用户定义的 chain 的名称必须是唯一的。这个 target 会把数据包发送到指定的 chain。
ACCEPT — 允许数据包通过并发送到它的目的地或其它 chain。
DROP — 丢掉这个数据包并不给发送者任何反馈信息。发送这个数据包的系统将不会得到发送失败的信息。
QUEUE — 数据包被放置在一个用户空间应用程序的队列中等待被处理。
RETURN — 停止使用当前 chain 中的规则来检查数据包。如果带有一个 RETURN target 的数据包与另一个 chain 所调用的一个规则相匹配,这个数据包会重新返回到它所离开的第一个 chain 来恢复规则检查。如果 RETURN 规则在一个内建 chain 中使用,而这个数据包无法返回到它以前的 chain,当前 chain 的默认 target 被使用。
另外,可用的扩展还允许指定其它 target。这些扩展被称为调用的 target 模块或匹配模块,其中的大多数只适用于特定的规则表和特殊的情况。请参阅第 3.4.3.4.4 节 “额外的匹配选项模块”来获得更多关于匹配选项模块的信息。
扩展的 target 模块中的大多数只适用于特定的规则表或特殊的情况。红帽企业 Linux 默认包括的最常用的 target 模块是:
LOG — 在日志中记录所有匹配这条规则的数据包。因为数据包被内核所记录,所以 /etc/syslog.conf 文件决定了这些日志信息被写到什么地方。默认情况下,它们被放置在 /var/log/messages 文件中。
在 LOG target 指定了日志记录的方法后,还可以使用其它的选项:
--log-level — 设置一个日志记录事件的优先级。请参阅 syslog.conf 说明书页来获得优先级列表信息。
--log-ip-options — 记录一个 IP 数据包头中设置的所有选项。
--log-prefix — 在记录日志信息前,写入一个最长为 29 个字符的字符串。这在编写 syslog 过滤程序时非常有用。
因为这个信息本身存在的问题,您需要在 log-prefix 值的后面添加一个空格。
--log-tcp-options — 记录一个 TCP 数据包头中所设置的所有选项。
--log-tcp-sequence — 在日志中记录这个数据包的 TCP 序列号。
REJECT — 丢掉这个数据包,并向远程系统发回一个错误数据包。
REJECT target 接受 --reject-with <type> (在这里,<type> 是拒绝的类型) 来允许在返回的错误数据包中包括更详细的信息。如果没有使用其它选项,port-unreachable 就是默认的错误类型。请参阅 iptables 说明书页来获得 <type> 选项完整列表的信息。
另外,您还可以在 iptables 说明书页中获得其它 target 扩展的信息。