简介
前面文章介绍iptables的匹配条件,并且已经用到了一些常用动作,比如ACCEPT、DROP、REJECT等。
以下是 iptables 中常用的一些目标(target)及其原理和时机:
ACCEPT
原理:允许数据包通过,并停止对后续规则的匹配。
时机:当你想允许特定的数据包通过防火墙时。
DROP
原理:丢弃数据包,并不返回任何错误消息给发送者。
时机:当你想阻止特定的数据包通过防火墙,并且不想让发送者知道数据包已被丢弃时。
REJECT
原理:拒绝数据包,并返回一个错误消息给发送者(通常是 ICMP 类型的消息)。
时机:当你想阻止特定的数据包通过防火墙,并希望发送者知道数据包已被拒绝时。
LOG
原理:记录数据包的信息到系统日志(通常是 /var/log/syslog 或 /var/log/messages),然后根据下一个目标(通常是 DROP 或 REJECT)来处理数据包。
时机:当你想记录通过或未通过防火墙的数据包信息时。
RETURN
原理:结束当前链中的处理,并返回到调用它的链继续处理。
时机:当你使用用户定义的链(user-defined chains)时,并且在处理完特定条件后想返回到主链(如 INPUT、OUTPUT、FORWARD)继续处理。
QUEUE
原理:将数据包放入用户空间队列,以便应用程序(如防火墙脚本)可以进一步处理。
时机:当你想在用户空间中对数据包进行更复杂的处理时。
MARK
原理:设置数据包的 NFMARK 字段。这通常与路由和其他更高级的功能一起使用。
时机:当你需要为数据包设置特定的标记以进行后续处理时。
GOTO
原理:跳转到另一个用户定义的链进行进一步处理。与 RETURN 类似,但不返回,而是继续在新的链中处理。
时机:当你想在一个复杂的用户定义的链结构中进行控制流处理时。
DNAT(目标地址转换)和 SNAT(源地址转换)
原理:修改数据包的源或目标 IP 地址。通常用于 NAT(网络地址转换)场景。
时机:当你想在防火墙级别进行地址转换时,例如,将外部 IP 地址映射到内部服务器。
MASQUERADE(或MASQUERADE-SAVE)
原理:对源地址进行伪装,通常用于从私有网络到公共网络的NAT。
时机:在私有网络中的主机需要访问公共网络时。
TOS 或 TCLASS
原理:修改数据包的Type of Service(TOS)字段(IPv4)或Traffic Class(IPv6)。
时机:根据数据包的优先级或服务类型进行路由决策。
TTL
原理:修改数据包的TTL(Time to Live)字段。
时机:需要控制数据包在网络中的生存时间时。
CT(Connection Tracking)
原理:允许为数据包或其相关连接设置参数,如修改连接的状态或超时值。
时机:需要更精细地控制连接跟踪的行为时。
SECMARK
原理:设置安全标记,用于安全相关的决策。
时机:在需要基于安全标记进行数据包处理时。
CLUSTERIP
原理:配置一个简单的节点集群,这些节点共享特定的IP和MAC地址。
时机:设置负载均衡集群或简单的故障转移配置时。
每个目标都有其特定的用途和适用场景,并且可以根据需要