IPTABLES是一个用于设置、管理和检查Linux内核IP包过滤规则的工具。它允许定义多个表,每个表包含内部链和用户自定义链,链中规则按包的匹配条件处理,目标(如ACCEPT、DROP、QUEUE或RETURN)决定包的后续操作。
在IPTABLES中,有三个预定义的表:filter(默认,包含INPUT、FORWARD和OUTPUT链)、nat(处理新连接,包含PREROUTING、OUTPUT和POSTROUTING链)和mangle(用于修改包,有PREROUTING和OUTPUT链)。用户可以通过选项如-t指定操作的表,如'-A'用于在链尾添加规则,'-D'删除规则,'-R'替换规则,'-I'插入规则,'-L'列出规则,'-F'清空链等。
规则的制定涉及到协议(-p)、源地址和目标地址(-s, -d),以及目标动作(-j)。例如,-A INPUT -p tcp -s 192.168.1.100 -j DROP 会阻止从特定IP地址发送的TCP包。其他选项如--verbose和--numeric提供了详细输出和数字表示。
扩展选项如TCP、UDP、ICMP和MAC提供了更精细的规则匹配,如TCP标志、端口范围和ICMP类型。MASQUERADE和REDIRECT是仅限nat表的特定目标,用于包地址的伪装和重定向。同时,IPTABLES支持诊断和错误处理,以及与ipchains的兼容性。
在设置规则时,可以使用模块化的扩展,如limit来限制包的速率,multiport匹配多个端口,mark标记包,state跟踪连接状态,unclean匹配异常包,tos过滤基于TOS的服务类型。而TARGET EXTENSIONS如LOG、MARK、REJECT、TOS和MIRROR提供了额外的包处理方式。
iptables 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。