iptables和tcpdump的位置
进来的顺序 Wire -> NIC -> tcpdump -> netfilter/iptables
出去的顺序 iptables -> tcpdump -> NIC -> Wire
表-iptables构建块
filter表:过滤规则
nat表:NAT规则
mangle表:用于修改分组数据的特定规则
raw表:独立于Netfilter连接跟踪子系统起作用的规则
链
每个表都有一组内置链,最重要的内置链:filter表中的INPUT、OUTPUT、FORWARD链
-
INPUT链:数据包由内核的路由计算指向本地Linux系统
-
OUTPUT链:由Linux系统自身生成的数据包
-
FORWARD链:管理经过Linux系统路由的数据包
另外两个重要链:nat表中的PREROUTING和POSTROUTING链,它们分别用于在内核进行IP路由计算前后修改数据包的头部。
有图由真相:
匹配和目标
重要的匹配:
字段 | 匹配 |
---|---|
–source(-s) | 源IP地址 |
–destination(-d) | 目标IP地址 |
–protocol(-p) | 协议 |
–in-interface(-i) | 流入接口 |
–out-interface(-o) | 流出接口 |
–state | 匹配一组连接状态 |
–string | 匹配应用层数据字节序列 |
–comment | 在内核内存中为一个规则关联注释数据 |
目标在数据包匹配时触发一个动作:
字段 | 动作 |
---|---|
ACCEPT | 允许数据包通过 |
DROP | 丢弃数据包,无进一步处理 |
LOG | 将数据包信息记录到syslog |
REJECT | 丢弃数据包,并发送适当响应报文 |
RETURN | 在调用链中继续处理数据包 |