iptables--基础--01--理论

iptables–基础–01–理论


1、简介

  1. netfilter/iptables 简称 iptables
  2. iptables组成Linux平台下的包过滤防火墙,可以完成封包过滤、封包重定向和网络地址转换(NAT)等功能。

2、规则

  1. 规则(rules)就是网络管理员预定义的条件
  2. 规则存储在内核空间的信息包过滤表中
  3. 配置防火墙的主要工作就是添加、修改和删除这些规则。

2.1、规则定义

  1. 一般定义为"如果数据包头符合这样的条件,就这样处理这个数据包"。
  2. 规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)

2.2、数据包处理

当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。

2、iptables和netfilter的关系

iptables是Linux防火墙的管理工具,位于/sbin/iptables。真正实现防火墙功能的是 netfilter,它是Linux内核中实现包过滤的内部结构。

3、iptables传输数据包的过程

在这里插入图片描述

  1. 当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。
  2. 如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。
    1. 数据包到了INPUT链后,任何进程都会收到它。
    2. 本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
  3. 如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。

4、iptables的规则表和链

在这里插入图片描述

4.1、规则表

  1. filter表:用于实现包过滤
  2. nat表:用于网络地址转换
  3. mangle表:用于包重构(修改)
  4. raw表:用于数据跟踪处理。

4.2、链(chains)

  1. 链是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单.
  2. 每一条链中可以有1条或多条规则。

4.2.1、链的工作流程

  1. 当一个数据包到达一个链时,iptables就会从链中第1条规则开始检查,看该数据包是否满足规则所定义的条件。
    1. 满足:
      1. 根据该条规则所定义的方法处理该数据包
    2. 不满足:
      1. iptables将继续检查下一条规则
  2. 如果数据包不符合链中任一条规则,就会根据该链预先定义的默认规则来处理数据包。

4.3、四张表和五个链

4.3.1、规则表

  1. filter表
    1. 三个链:INPUT、FORWARD、OUTPUT
    2. 作用:过滤数据包
    3. 内核模块:iptables_filter
  2. Nat表
    1. 三个链:PREROUTING、POSTROUTING、OUTPUT
    2. 作用:用于网络地址转换(IP、端口)
    3. 内核模块:iptable_nat
  3. Mangle表
    1. 五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
    2. 作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS
    3. 内核模块:iptable_mangle
  4. Raw表
    1. 两个链:OUTPUT、PREROUTING
    2. 作用:决定数据包是否被状态跟踪机制处理
    3. 内核模块:iptable_raw

4.3.2、规则链

  1. INPUT:
    1. 处理来自外部的数据
  2. OUTPUT:
    1. 处理向外发送的数据
  3. FORWARD:
    1. 将数据转发到本机的其他网卡设备上。
  4. PREROUTING:
    1. 处理刚到达本机并在路由转发前的数据包。
    2. 它会转换数据包中的目标IP地址(destination ip address)
    3. 通常用于DNAT(destination NAT)。
  5. POSTROUTING:
    1. 处理即将离开本机的数据包
    2. 它会转换数据包中的源IP地址(source ip address)
    3. 通常用于SNAT(source NAT)

4.4、规则表之间的优先顺序

Raw–>mangle–>nat–>filter

4.5、规则链之间的优先顺序

分三种情况

  1. 入站数据流向
  2. 转发数据流向
  3. 出站数据流向

4.5.1、入站数据流向

第1步

从外界到达防火墙的数据包,先被PREROUTING规则链处理
1. 是否修改数据包的服务类型、TTL、是否配置路由实现QOS
2. 是否网络地址转换
3. 是否被状态跟踪机制处理

第2步

数据会进行路由选择,判断该数据包应该发往何处

  1. 如果数据包的目标主机是防火墙本机(比如说Internet用户访问防火墙主机中的web服务器的数据包),那么内核将其传给INPUT链进行处理
  2. INPUT链 决定 数据包 是否允许通过
第3步

INPUT链允许通过以后,再交给系统上层的应用程序(比如Apache服务器)进行响应。

4.5.2、转发数据流向
第1步

来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理

第2步

数据会进行路由选择,判断该数据包应该发往何处

  1. 如果数据包的目标地址是其它外部地址(局域网用户通过网关访问QQ站点的数据包),则内核将其传递给FORWARD链进行处理
  2. FORWARD链 决定数据包 是否转发或拦截处理
第3步

FORWARD链进行处理后,再交给POSTROUTING规则链进行处理。

  1. POSTROUTING链 决定数据包 是否修改数据包的地址等

4.5.3、出站数据流向

第1步

防火墙本机向外部地址发送的数据包(比如在防火墙主机中测试公网DNS服务器时),首先被OUTPUT规则链处理

第2步

数据包进行路由选择,然后传递给POSTROUTING规则链进行处理。

  1. POSTROUTING链 决定 是否修改数据包的地址
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值