内容提要
本文介绍了Linux防火墙iptables的基本概念和工作原理。iptables是操作netfilter的工具,负责数据包过滤和地址转换。文章详细解释了数据包流向、五个链(PREROUTING、INPUT、OUTPUT、POSTROUTING、FORWARD)及四个表(filter、nat、mangle、raw)的作用和关系,以及如何编写匹配规则和处理动作。
延伸解读
理解五链:数据包处理的五个关键节点
五链对应 netfilter 提供的五个钩子,分别位于数据包处理的不同阶段:PREROUTING 在路由决策前,INPUT 在进入本机用户空间前,OUTPUT 在本机发出数据包时,POSTROUTING 在路由决策后,FORWARD 用于转发数据包。掌握这些节点有助于明确规则应添加在哪个链上,从而精确控制数据包的过滤、修改或转发。
四表分工:filter、nat、mangle、raw 各司其职
四张表功能不同:filter 负责数据包过滤,是默认表;nat 用于网络地址转换;mangle 用于修改数据包属性,如拆解和重新封装;raw 用于配置数据包,如关闭连接追踪。实际使用中 filter 和 nat 最常用,mangle 在透明代理等场景才会用到,raw 和 security 表基本用不到。
表链关系与优先级:规则生效顺序
并非所有表都作用于所有链。例如 filter 表可用于 INPUT、FORWARD、OUTPUT 链,nat 表可用于 PREROUTING、OUTPUT、POSTROUTING 链。当多张表同时作用于一个链时,规则优先级为 raw -> mangle -> nat -> filter。编写规则时需注意这一顺序,以确保数据包按预期被处理。
规则匹配与处理动作:从条件到 target
规则由匹配条件和处理动作组成。匹配条件包括基本条件(源地址、目标地址)和扩展条件(源端口、目标端口)。处理动作(target)常见的有 ACCEPT、DROP、REJECT、SNAT、DNAT、REDIRECT、LOG 等。例如,匹配到非法的 UDP 数据包可执行 DROP 或 REJECT,从而控制数据包的通行。
Q&A
iptables的主要功能是什么?
iptables主要用于数据包过滤和地址转换,是操作netfilter的工具。
数据包在iptables中是如何流动的?
数据包在iptables中经过五个链:PREROUTING、INPUT、OUTPUT、POSTROUTING和FORWARD。
iptables中有哪些表,它们的作用是什么?
iptables有四个表:filter(数据包过滤)、nat(网络地址转换)、mangle(修改数据包属性)和raw(配置数据包)。
iptables的匹配条件有哪些?
匹配条件包括基本条件(源地址和目标地址)和扩展条件(源端口和目标端口)。
iptables中常见的处理动作有哪些?
常见的处理动作包括ACCEPT(允许通过)、DROP(丢弃)、REJECT(拒绝并响应)、SNAT(源地址转换)、DNAT(目标地址转换)等。
iptables的规则是如何工作的?
iptables的规则根据指定的匹配条件匹配数据包,若匹配成功,则执行相应的处理动作。