Linux入职基础-6.1_iptables基础入门

一、iptables结构简介:

iptables防火墙可以用于创建过滤(filter)与NAT规则。所有Linux发行版都能使用iptables,因此理解如何配置iptables将会帮助你更有效地管理Linux防火墙。

iptables的结构:包含4个内建表, Rules->Chains -> Tables。简单地讲,tables由chains组成,而chains又由rules组成。如下图:

Linux入职基础-6.1_iptables基础入门_第1张图片

规则(rules):

它是网络管理员预定义的条件,规则一般定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别定义了源地址、目的地址、传输协议(如TCP,UDP,ICMP)和服务类型(HTTP,FTP,SMTP)等,当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept),拒绝(reject),和丢弃(drop)等。

配置防火墙主要工作就是添加,修改和删除这些规则。

链(chains):

它是数据包传播的途径,每一条链其实就是众多规则中的一个检查清单,每一条链可以有一条或数条规则。当一个数据包到达一条链时,iptables就从链中第一条规则开始检查,看该数据包是否满足规则定义的条件。如果满足,系统就会根据这条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables将会按照默认策略来处理数据包。

表(tables):

iptables内置了4个表,即filter表、nat表、mangle表和raw表,它提供了特定的功能,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理

1)这4个表的优先级别:raw> mangle > nat > filter

2)每个表有相关的链

   raw表有2个链:prerouting、output

   mangle表有5个链:prerouting、postrouting、input、output、forward

   nat表有3个链:prerouting、postrouting、output

   filter表中有3个链:input、output、forward

①Filter表

Filter表主要是用于过滤数据包,是iptables的默认表,因此如果你没有自定义表,那么iptables程序就默认使用filter表。它具有以下三种内建链:

n  INPUT链– 处理来自外部的数据。

n  OUTPUT链– 处理向外发送的数据。

n  FORWARD链– 将数据转发到本机的其他网卡设备上。

②nat表

Nat表主要用于网络地址转换,可以实现一对一,一对多,多对多等NAT工作。它具有以下三种内建链:

n  PREROUTING链– 处理刚到达本机并在路由转发前的数据包。

它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。

n  POSTROUTING链– 处理即将离开本机的数据包。

它会转换数据包中的源IP地址(source ip address),通常用于SNAT(source NAT)。

n  OUTPUT链– 处理本机产生的数据包。

③mangle

Mangle表用于指定如何处理数据包。它能改变TCP头中的QoS位。它具有以下五种内建链:

n  PREROUTING  --常用于标记策略和端口路由

n  OUTPUT  ---数据输出

n  FORWARD  --用于修改 TTL、TCP-MSS 和流量控制规则

n  INPUT    --进入路由器的数据

n  POSTROUTING  ---路由后

二、iptables数据传输过程

IPTABLES传输数据包的过程,如下图:

Linux入职基础-6.1_iptables基础入门_第2张图片

第一步:  当一个数据包进入网卡时,首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转发出去。

第二步:如果数据包是进入本机的,就会向下到INPUT链。数据包到达INPUT链后,任何进程都会接受。本机上运行的程序也可以发出数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。

第三步:如果数据包是要转发出去的,且内核允许,数据包就会经过FORWARD链,然后到POSTROUTING链输出。

注意,filter机制的INPUT链内容与Mangle机制的INPUT链内容绝对是不相同的,请务必认清这一点。

你可能感兴趣的:(Linux,Linux入职基础)