2.防火墙--规则链与规则表(iptables)

2.1规则链

规则链是防火墙规则(策略)的集合。

默认的5种规则链

INPUT:处理入站数据包

OUTPUT:处理出站数据包

FORWARD:处理转发数据包

POSTROUTING:在进行路由选择后处理数据包

PREROUTING:在进行路由选择前处理数据包

2.2规则表

规则表是规则链的集合。

(1)默认的4个规则表

raw表:确定是否对该数据包进行状态跟踪。

mangle表:修改IP数据包头(如TTL值),同时也用于为数据包设置标记。

nat表:处理网络地址转换,以及修改数据包中的源、目标IP地址或端口等。

filter表:过滤数据,确定是否放行该数据包。

docker iptables 规则链顺序_路由选择

(2)规则表间的优先顺序

依次为:raw、mangle、nat、filter

(3)规则链间的匹配顺序

入站数据:PREROUTING、INPUT

出站数据:OUTPUT、POSTROUTING

转发数据:PREROUTING、FORWARD、POSTROUTING

(4)规则链内的匹配顺序

按顺序依次进行检查,找到相匹配的规则即停止(LOG策略会有例外)

若在该链内找不到相匹配的规则,则按该链的默认策略处理。

(5)数据包通过防火墙时的处理流程

docker iptables 规则链顺序_防火墙_02

入站数据流向:

来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理(是否修改数据包地址等),之后会进行路由选择(判断该数据包应该发往何处),如果数据包的目标地址是防火墙本机(如Internet用户访问防火墙主机中Web服务的数据包),那么内核将其传递给INPUT链进行处理(决定是否允许通过等),通过以后再交给系统上层的应用程序(如httpd服务器)进行响应。

转发数据流向:

来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理,之后会进行路由选择,如果数据包的目标地址是其他外部地址(如局域网用户通过网关访问QQ站点的数据包),则内核将其传递给FORWARD链进行处理(是否转发或拦截),然后再交给POSTROUTING规则链(是否修改数据包的地址等)进行处理。

出站数据流向:

防火墙本机向外部地址发送的数据包,首先被OUTPUT规则链处理,之后进行路由选择,然后传递给POSTTOUTING规则链(是否修改数据包的地址等)进行处理。