「iptables」- 概念术语

  CREATED BY JENKINSBOT

Table, Chain, Rule, Policy

针对主机触及的数据包:
1)数据包传入主机,确定哪个 Table(表)进行处理;
2)在 Table 中,确定被哪个 Chain(规则链)处理;
3)在 Chain 中,确定被哪条 Rule(规则)处理;
4)在 Rule 中,确定要执行哪个 Policy(策略);

Table(表)

四表(Four Tables)

raw table:确定是否对该数据包进行状态跟踪。
包含两个规则链:PREROUTING;OUTPUT;

mangle table:修改数据包内容,用来做流量整形的,给数据包设置标记。
包含五个规则链:PREROUTING;INPUT;FORWARD;OUTPUT;POSTROUTING;

nat table:负责网络地址转换,用来修改数据包中的源、目标IP地址或端口。
包含三个规则链:PREROUTING;OUTPUT;POSTROUTING;

filter table:负责过滤数据包,确定是否放行该数据包(过滤)。
包含三个规则链:INPUT;FORWARD;OUTPUT;

在iptables 的四个规则表中,mangle table 和 raw table 的应用相对较少;

当数据包到达防火墙时,规则表之间的优先顺序:raw > mangle > nat > filter

Chain(规则链)

规则链,是由多条 Rule 组成的规则集合;

防火墙会按照从上到下的顺序来读取配置的策略规则:
1)在找到匹配项后就立即结束匹配工作,并去执行匹配项中定义的行为(即放行或阻止)。
2)如果在读取完所有的策略规则之后没有匹配项,就去执行默认的策略。

针对默认策略,在设置时:
1)当防火墙的默认策略为拒绝时,就要设置允许规则,否则谁都进不来;
2)如果防火墙的默认策略为允许,就要设置拒绝规则,否则谁都能进来,防火墙也就失去了防范的作用。

五链(Five Chains)

PREROUTING:在进行路由选择前处理数据包,用来修改目的地址,用来做DNAT。相当于把内网服务器的IP和端口映射到路由器的外网IP和端口上

INPUT:处理入站数据包,匹配目标IP为本机的数据包,然后才会交由应用程序进行处理;

OUTPUT:处理出站数据包,通常不在此链上做配置

FORWARD: 处理转发数据包,匹配流经本机的数据包

POSTROUTING: 在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网IP地址上网

Rule(规则)

Rule(规则),是 iptables 把用于处理或过滤流量的策略条目;

Policy(策略)

通常,防火墙策略规则的设置有:ACCEPT(允许流量通过)、REJECT(拒绝流量通过)、LOG(记录日志信息)、DROP(拒绝流量通过)

REJECT 和 DROP 不同点:
1)DROP,丢弃报文,它是直接将流量丢弃而且不响应,仿佛未收到;
2)REJECT,丢弃报文,并告知发送方流量被丢弃;

规则执行过程

关系总结

_IDX_ _TAB_ PREROUTING INPUT FORWARDING OUTPUT POSTROUTING _DESC_
01 raw *     *    
02 mangle * * * * *  
03 nat *     * *  
04 filter   * * *    

参考文献

Linux防火墙——iptables(四表五链)_向阳生的博客-CSDN博客_iptables匹配顺序