Iptables学习笔记1-基本概念

Iptables基础知识

  • Linux 防火墙:工作在网络层,主要对 TCP/IP 数据包进行过滤和处理。基于内核 Netfilter 模块实现,高效率。
  • NetfiterLinux 内核中实现包过滤防火墙的内部结构,一般不以程序或文件的形式存在,属于内核空间的防火墙管理体系。真正的防火墙。
  • Iptables:这里指的是位于用户空间 /sbin/iptables 命令,用来管理 Linux 防火墙的规则。所以我们在 Linux 查看

Iptables作用:为内核空间的 Netfilter 模块提供 TCP/IP 包管理规则,Netfilter 通过这些规则来对数据包进行相应的处理。

Iptables相关概念

个人觉得 Iptables 中重要的概念应该有3个,链、规则、表,但是好多文章都只写了链和表,关于规则的介绍不够详细。下面先对3个概念进行详细介绍。

一、链:

Iptables 中最重要的的概念,所有进出数据包都会经过相应的链,数据包每经过一条链,都会应用该链中对应的规则,规则的概念我们下面再说。按数据包的处理时机分为5条链,如下
iptables流量流向图-链

  1. prerouting 链:数据包路由之前,会经过此链;数据包进来之后必经的第一条链,所有的入流量都会经过 prerouting 链。
  2. postrouting 链:数据包路由之后,会经过此链;数据包出去之前必经的最后一条链,所有的出流量都会经过 postrouting 链。
  3. forward 链:需要将数据包转发给其它地址时,会经过此链。
  4. input 链:当收到访问本机的数据包时,会经过此链。
  5. output 链:当数据包从本机发出时,会经过此链。

Route:上图 route 的意思就是查看该数据包是否是发给本机的,如果是,则不需要进行转发,直接进入 input 链;如果不是发给本机的数据包,则进入 forward 链(典型的DNAT场景)

二、规则:

在上面链的概念中我们提到,数据包每经过一条链,都会应用该链中对应的规则。那规则是什么呢?其实规则应该分为下面两个部分组成:

  1. 匹配条件:比如匹配数据包中源地址是 192.169.22.1
  2. 处理动作:符合匹配条件的包,应该怎么处理

匹配条件分为基本匹配条件和扩展匹配条件:
基本匹配条件:

  • -s :源地址
  • -d :目的地址

扩展匹配条件:

  • --sport :源端口
  • --dport :目的端口

处理动作也分为基本动作和扩展动作:
基本动作:

  • ACCEPT :允许数据包通过
  • DROP :直接丢弃数据包,并且不会给客户端任何提醒

扩展动作:

  • REJECT :禁止数据包通过。和 DROP 不同的是,默认会返回拒绝消息
  • SNAT :源地址转换
  • DNAT :目的地址转换
  • LOG :在 /var/log/message 中记录日志,然后将数据包交给下一条规则
  • REDIRECT :本机做端口映射
  • MASQUERADE :动态 SNAT ,适用于出口地址会变化的情况

注意:不会直接将规则应用到链上,而是将表应用到链上

三、表:

上面说到,不会将规则直接应用到链上,而是应用的表。表其实就是多个规则的集合;按规则的类型我们可以把规则分为4类,每类对应一张表(内核已经分配好的,每张表又对应内核中的一个小模块),如下:

  1. row 表:决定是否对数据包进行状态跟踪,对应内核 iptable_raw 模块
  2. mangle 表:用于对数据包的拆解、修改、标记、重新封装,对应内核 iptable_mangle 模块
  3. nat 表:对数据包进行地址、端口修改,到达 NAT 效果,对应内核 iptable_nat 模块
  4. filter 表:对数据包进行过滤,如过滤地址、端口等,对应内核 iptable_filter 模块

链和表为多对多关系。一条链可以应用多张表,一张表也可以用于多条链。对应关系如下:
IPtables中表-链对应关系图
将这张图和 Iptables流量流向图-链 结合起来,就得到下面的终极流量流向图。这里要细细的品!!
Iptables流量流向图-链表
注意:当一条链中包含多张表时,规则匹配会根据表的优先级进行匹配,优先级如下:
raw > mangle > nat > filter

小结

此篇文章主要对 Iptables 中涉及到的概念进行了介绍:

  • 链:preroutingpostroutingforwardinputoutput
  • 规则:匹配条件 + 处理动作
  • 表:raw > mangle > nat > filter

后面会以 SNATDNAT 举例来展开;以及一些扩展模块介绍;自定义链介绍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值