Netfilter组件
- 集成在内核中
-
内核中选取5个位置放置了5个hook function(input, output, forward, prerouting, postrouting),可以使用iptables命令向其写入rule
- 信息过滤表table,包含控制IP包处理的规则集(rules),规则被分组放在chain上
三种报文流向
- 流入本机 preouting -> input -> 用户空间进程
- 流出本机 用户空间进程 -> output -> postrouting
- 转发 prerouting -> forward -> postrouting
iptables组成
- 5个表table
- filter 过滤规则表,根据预定义规则过滤符合条件的数据包
- nat 地址转换规则表
- mangle 修改数据报文标记位规则表
- raw 关闭nat表上启用的连接跟踪机制,加快封包穿越防火墙的速度
- security 强制访问控制网络规则
- 5个链chain
- input
- outpu
- forward
- prerouting
-
postrouting
-
数据包过滤匹配流程
iptables 规则
根据规则的匹配条件尝试匹配报文,对匹配成功的报文根据规则定义的处动作做处理
- 匹配条件:默认为‘与’,同时满足
- 基本匹配:IP,端口,TCP的flags(SYN,ACK等)
- 扩展匹配:通过复杂高级功能匹配
- 处理动作:称为target,跳转目标
- 内建处理动作:ACCEPT, DROP, REJECT, SNAT, DNAT, MASQUERADE, MARK, LOG
- 自定义处理动作
- 规则要添加在chain上
- iptables规则添加时的考量
- 要实现那种功能:判断添加在哪张表上
- 报文流经的路径:判断添加在哪个链上
- 报文的流向:判断源和目的
- 匹配规则:业务需要