iptables的概念与底层原理(详解)
一:iptables
1.iptables简介
什么是iptables?我们首先应该知道它是Linux平台最著名的防火墙工具,系统自带的,从什么版本的内核开始自带的呢,2.4以后。
它的全称应该是netfilter/iptables,从这个名称上看,它其实是两个软件。netfilter是运行在内核之中的,对数据包进行分析处理;iptables是提供用户的一个配置管理工具,它可以设置一些表、表中有一些链条、链条上面有一些规则。通过iptables建立的一整个的规则体系,netfilter来对数据包进行分析处理。
2.什么是防火墙?
防火墙一直被认为是保护敏感信息的第一道防线。它们在安全和受控内部网络之间建立了一道屏障,提供低级网络保护,以及重要的日志记录和审计功能。
它能监视传入和传出的网络流量,并根据一组已定义的安全规则决定是允许还是阻止特定流量。
3.防火墙种类
1.硬件防火墙(主机防火墙)
F5
2.软件防火墙(网络防火墙)
iptables
firewalld
二:iptables基本介绍
- 流程
用户层 ---> 调用iptables ---> ip_tables内核模块 ---> Netfilter(系统安全框架) ---> 过滤请求
1.解析内容
1.iptables:
iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的 “安全框架中” 才是真正的防火墙,这个框架的名字叫netfilter
iptables其实是一个命令行工具,位于用户空间,我们用这个工具操作真正的框架。
2.ip_tables内核模块:
ip_tables模块它是防火墙的核心模块,负责维护防火墙的规则表,通过这些规则,实现防火墙的核心功能。归纳起来,主要有三种功能:包过滤(filter)、NAT以及包处理(mangle)
3.netfilter:
netfilter才是防火墙真正的安全框架,netfilter位于内核空间
Netfilter是Linux操作系统核心层内部的一个数据包处理模块,它具有如下功能:网络地址转换(Network Address Translate), 数据包内容修改, 以及数据包过滤的防火墙功能
三:iptables流程(讲解)
1.流入本机
2.解析(流入本机)
讲解:
当外部的数据进入时通过网卡进入本机后,在网络层时会经过PREROUTING链,PREROUTING链继续前进到达用户层之前,会经过INPUT链。
解析流程:
数据进入(通过网线) --> 链接网卡设备 --> 网络接口层 --> Netfilter -->
在网络层时会经过PREROUTING链 --> TCP UDP协议 --> 进入用户层之前(INPUT链)
--> 到达用户层
3流出本机
4.解析(流出本机)
讲解:
当用户从用户层发出数据之后,会先经过OUTPUT链,在经过了OUTPUT链到达Netfilter防火墙,在经过防火墙到达设备驱动之前,会经过POSTROUTING链,之后在发送出去。
流程图解析:
用户操作命令工具(iptables) --> OUTPUT链 --> ip_tables内核模块 -->
Netfilter(防火墙) --> 网络层 --> 网络接口层 --> POSTROUTING链
-- 设备驱动 --> 网络传输出
5.经过本机
6.解析(经过本机)
讲解:
报文经过路由并且发觉目的并不是本机,在经过PREROUTING链进入本机发现最终目的并不是本机时被转到FORWORD链后经过POSTROUING链转发出去。
流程解析:
数据进入 --> PREROUTING --> FORWARD --> POSTROUTING --> 出去
四:什么是包过滤防火墙
1.什么是包?
在数据传输过程,并不是一次性传输完成的;而是将数据分成若干个数据包,一点一点的传输。
2.什么是包过滤防火墙?
过滤数据包的防火墙。
3.包过滤防火墙如何实现?
通过系统安全框架,过滤数据包。
五:Iptables四表五链的概念
1.什么叫表?
具备某种功能的集合叫做表
2.那四个表,有哪些作用?
filter: 负责做过滤功能呢 : INPUT、OUTPUT、FORWARD
nat: 网络地址转换 PREROUTING、INPUT、OUTPUT、POSTROUTING
mangle: 负责修改数据包内容 PREROUTING、INPUT、OUTPUT、POSTROUTING、FORWARD
raw: 负责数据包跟踪 PREROUTING、OUTPUT
解析内容:
filter:
负责过滤数据包功能(过滤,防火墙)
nat :a-b网络,中间经历c网络,本来访问b,但是通过c访问的b,这个时候由a访问c,转变成a访问b,中间就有一个地址转换(网络地址转换,端口映射,地址映射等)
mangle:
用于对特定数据包的修改(修改数据包的服务类型、TTL、并且可以配置路由实现QOS)
raw:
跟踪数据包走到那个位置了(决定数据包是否被状态跟踪机制处理)
3.那五条链,运行在那些地方?
1) PREROUTING: 主机外报文进入位置,允许的表mangle, nat(目标地址转换,,通常指响应报文)
2) INPUT:报文进入本机用户空间位置,允许的表filter, mangle
3) OUTPUT:报文从本机用户空间出去的位置,允许filter, mangle, nat
4) FOWARD:报文经过路由并且发觉不是本机决定转发但还不知道从哪个网卡出去,允许filter, mangle(中转)
5) POSTROUTING:报文经过路由被转发出去,允许mangle,nat(源地址转换,把原始地址转换为转发主机出口网卡地址)
五链
PREROUTING、INPUT、OUTPUT、FORWARD、POSTROUTING
六:iptables全面流程图(详解)
1.解析流程顺序
流入本机: A ---> PREROUTING ---> INPUT ---> B
解析:
网络经过该流程才能发出(出去)
流出本机:OUTPUT ---> POSTROUTING ---> B
网络经过该流程才能进入(进来)
经过本机: A ---> OUTPUT ---> POSTROUTING | ---> PREROUTING ---> FORWARD ---> POSTROUTING ---> C ---> PREROUTING ---> INPUT ---> B
2.经过本机(内容解析)
A ---> OUTPUT ---> POSTROUTING
作用于A阶段(出去)
c相当于是一个防火墙
PREROUTING ---> FORWARD ---> POSTROUTING ---> C
作用于C阶段(出去)
PREROUTING ---> INPUT ---> B
作用于B阶段(进入)
七:链包含表
filter : INPUT 、OUTPUT 、FORWARD
nat : PREROUTING 、 OUTPUT、 POSTROUTING
raw : PREROUTING、 OUTPUT
mangle : PREROUTING INPUT FORWARD OUTPUT POSTROUTING
iptables的概念与底层原理(详解)的更多相关文章
- Spring Aop底层原理详解
Spring Aop底层原理详解(来源于csdn:https://blog.csdn.net/baomw)
- 线程池底层原理详解与源码分析(补充部分---ScheduledThreadPoolExecutor类分析)
[1]前言 本篇幅是对 线程池底层原理详解与源码分析 的补充,默认你已经看完了上一篇对ThreadPoolExecutor类有了足够的了解. [2]ScheduledThreadPoolExecut ...
- volatile底层原理详解
今天我们聊聊volatile底层原理: Java语言规范对于volatile定义如下: Java编程语言允许线程访问共享变量,为了确保共享变量能够被准确和一致性地更新,线程应该确保通过排它锁单独获得这 ...
- HBase 底层原理详解(深度好文,建议收藏)
HBase简介 HBase 是一个分布式的.面向列的开源数据库.建立在 HDFS 之上.Hbase的名字的来源是 Hadoop database,即 Hadoop 数据库.HBase 的计算和存储能力 ...
- mysql学习笔记-底层原理详解
前言 我相信每一个程序员都避免不了和数据库打交道,其中Mysql以其轻量.开源成为当下最流行的关系型数据库.Mysql5.0以前以MyISAM作为默认存储引擎,在5.5版本以后,以InnoDB作为默认 ...
- CentOS 6.5 iptables原理详解以及功能说明
CentOS 6.5 iptables原理详解以及功能说明 来源 https://blog.51cto.com/tanxw/1389114 前言 iptables其实就是Linux下的一个开源的信息过 ...
- Storm概念、原理详解及其应用(一)BaseStorm
本文借鉴官文,添加了一些解释和看法,其中有些理解,写的比较粗糙,有问题的地方希望大家指出.写这篇文章,是想把一些官文和资料中基础.重点拿出来,能总结出便于大家理解的话语.与大多数“wordcount” ...
- 锁之“轻量级锁”原理详解(Lightweight Locking)
大家知道,Java的多线程安全是基于Lock机制实现的,而Lock的性能往往不如人意. 原因是,monitorenter与monitorexit这两个控制多线程同步的bytecode原语,是JVM依赖 ...
- Influxdb原理详解
本文属于<InfluxDB系列教程>文章系列,该系列共包括以下 15 部分: InfluxDB学习之InfluxDB的安装和简介 InfluxDB学习之InfluxDB的基本概念 Infl ...
随机推荐
- 【LeetCode】36. Valid Sudoku 解题报告(Python)
[LeetCode]36. Valid Sudoku 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址 ...
- D. Chloe and pleasant prizes
D. Chloe and pleasant prizes time limit per test 2 seconds memory limit per test 256 megabytes input ...
- Myeclipse查看jdk源代码
过程如下: 1.点 "window"-> "Preferences" -> "Java" -> "Install ...
- 【计组】《计算机组成与体系结构性能设计》William Stallings 第2部分 计算机系统 第3章 计算机功能和互连的顶层视图
关键词 address bus 地址总线 asynchronous timing 异步时序 bus 总线 bus arbitration 总线仲裁 bus width 总线宽度 centralized ...
- matplotlib 高阶之patheffect (阴影,强调)
目录 添加阴影 使Artist变得突出 更多效果 我们可以通过path来修饰Artist, 通过set_path_effects import matplotlib.pyplot as plt imp ...
- CS5211|CS5211参数|eDP转LVDS转换器芯片
CS5211概述 CS5211是一个eDP到LVDS转换器,配置灵活,适用于低成本显示系统.CS5211与eDP 1.2兼容,支持1车道和2车道模式,每车道速度为1.62Gbps和2.7Gbps.CS ...
- <数据结构>拓扑排序
有向无环图 有向无环图(Directed Acycilc Graph, DAG):从任意顶点出发都无法回到自身的有向图. 拓扑排序 定义 任一两个顶点u,v间,如果存在边u->v,则排序后u一定 ...
- SpringBoot集成Log4j2框架
1.说明 本文详细介绍Spring Boot集成Log4j2框架的方法, 基于已经创建好的Spring Boot工程, 由于Spring Boot默认使用的是Logback框架, 需要先排除掉Logb ...
- [学习笔记] SpringBoot 之 Helloworld
创建项目 IDEA / File / New / Project / Spring Initalizr / Next Group: com.wu 公司官网域名反写 Artifact: hellowor ...
- Java--Map的使用认知
Java里面的Map是一个抽象接口,有一些类实现的该接口比如HashMap.TreeMap等 HashMap 是一个散列表,存储的内容是靠键值对来映射的(key-value). 基本认识 HashMa ...