iptables的四表五链

news2024/12/24 9:01:11

文章目录

    • 1. Iptables的链
    • 2.Iptables的表
    • 3.数据包过滤的匹配流程
      • 3.1 规则表之间的顺序
      • 3.2 规则链之间的顺序
      • 3.3 规则链内部各条防火墙规则之间的顺序
      • 3.4如何应用

每个 规则表,其实就相当于一个内核空间的容器, 按照规则集的不同用途进行划分为默认的四个表在每个规则表中包含不同的规则链,处理数据包的不同时机分为 五种链,决定是否过滤或处理数据包的各种规则并按照先后顺序存放在 各规则链中。

  • 规则的作用:对数据包进行过滤或处理;
  • 链的作用:容纳多种防火墙规则;

在这里插入图片描述

1. Iptables的链

  • input 链:当收到访问防火墙本机地址的数据包时,将应用此链中的规则;
  • output 链:当防火墙本机向外发送数据包时,将应用此链中的规则;
  • forward 链:当收到需要通过防火墙中转发给其他地址的数据包时,将应用此链中的规则;
  • prerouting 链:在对数据包做路由选择之前,将应用此链中的规则;
  • postrouting 链:在对数据包做路由选择之后,将应用此链中的规则;

input 链 和 output 链主要用在主机型防火墙,是针对服务器本机进行保护的防火墙;

forward 链、prerouting 链、postrouting 链主要用在网络型防火墙,是针对公司内网与 Internet 之间进行安全控制。

2.Iptables的表

iptables管理着四个不同的规则表,分别由独立的内核模块实现。

  • filter 表用来对数据包进行过滤,具体的规则要求决定如何处理一个数据包。

    对应的内核模块为:iptable_filter其表内包括三个链:inputforwardoutput;

  • nat 表:nat 全称:network address translation 网络地址转换主要用来修改数据包的 IP 地址、端口号信息

    对应的内核模块为:iptable_nat,其表内包括三个链:preroutingpostroutingoutput;

  • mangle 表:主要用来修改数据包的服务类型生存周期,为数据包设置标记,实现流量整形、策略路由等。

    对应的内核模块为:iptable_mangle,其表内包括五个链:preroutingpostroutinginputoutputforward;

  • raw 表:主要用来决定是否对数据包进行状态跟踪

    对应的内核模块为:iptable_raw,其表内包括两个链:outputprerouting;

3.数据包过滤的匹配流程

在这里插入图片描述

3.1 规则表之间的顺序

当数据包到达防火墙时,如果对应的链内有规则存在,将按照顺序依次从raw 表mangle 表nat 表filter 表

3.2 规则链之间的顺序

  • 流入数据流向:如果是外边的数据包到达防火墙后,要先通过prerouting 链:对数据包做路由选择之后,将应用此链中的规则,然后将进行路由选择,确认数据包的目标地址是否是防火墙本机,结合内核传送给input链做处理,确认通过之后,便可以交给服务器端来进行响应。

    流入本机:PREROUTING --> INPUT --> PROCESS

  • 转发数据流向:如果是外边的数据包到达防火墙后,要先通过prerouting 链做相关处理,随后进行路由选择,数据包的目标地址是任何其他地址的话,则将通过内核传给forward来进行处理是否需要通过或直接丢弃,最后将交给postrouting 链来查看是否有需要修改的数据包信息来进行处理。

    经过本机:PREROUTING --> FORWARD --> POSTROUTING

  • 流出出数据流向:出流量,其实就是防火墙本机向外的地址发送数据包,首先被output 链处理,然后选择路由,然后在postrouting 链查看是否修改数据包的信息来进行处理。

    从本机流出:PROCESS --> OUTPUT --> POSTROUTING

3.3 规则链内部各条防火墙规则之间的顺序

数据包经过每条规则链时,将按照第一条规则、第二条规则……的顺序进行匹配和处理。

  • 将按照从匹配到停止的方式,如找到一条匹配的规则,将不再执行本链中后续的其他规则;
  • 如果对比整个链也找不到与数据包相匹配的规则时,将按照该规则链的默认策略进行处理;

3.4如何应用

  • 问题1:来自于10.0.0.1的地址,访问本机的web服务请求都不允许,应该在哪个表的哪个链上设定规则?
PREROUTING  ( nat、mangle、raw )  --》 INPUT  ( filter、nat、mangle )
要做过滤,只能需要filter表,所以是INPUT链
  • 问题2:所有由本机发往10.0.0.0/24网段的TCP服务都不允许?
OUTPUT ( filter ) --> POSTROUTING  ( nat  mangle )
要做过滤,只能需要filter表,所以是OUTPUT链
  • 问题3:所有来自己本地内部网络的主机,像互联网发送web服务器请求都允许?
PREROUTING  --> FORWARD ( filter )  --> POSTROUTING 
要做过滤,只能需要filter表,所以是FORWARD链 

应用总结

1.实现的功能是什么: 操作哪个表					filter
2.报文经过哪些路线: 判断规则添加到哪个链上			OUTPUT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/609440.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

w11+wsl+3060安装cuda等深度学习环境

把一切都重新又梳理学习了一遍,然后发现很多事情其实没必要弄 0. 显卡驱动、nvidia-smi、cuda、nvcc、cuDNN、pytorch、cudatoolkit与它们之间的关系 笔者本人鸟枪换炮了,还是wsl环境香,但是按照官方教程跑完后,遇到了bugRuntim…

RTMPose关键点检测实战——笔记3

文章目录 摘要安装MMPose安装虚拟环境安装pytorch安装MMCV安装其他的安装包下载 MMPose下载预训练模型权重文件和视频素材 安装MMDetection安装Pytorch安装MMCV安装其它工具包下载 MMDetection安装MMDetection下载预训练模型权重文件和视频素材 MMPose预训练模型预测命令行的方…

关于render: h => h(App)的解释

当我们第一次安装完脚手架,打开 的时候,我相信,一定有小伙伴和我一样,看到main.js里面的render: h > h(App),感觉懵懵的。 因为,在刚开始接触vue的时候,我们这里是这样写的: 而使用了脚手…

iOS性能优化-异步绘制与异步底层View处理

前言: 基于UIKit的性能优化似乎已经到了瓶颈,无论是使用frame代理snpakit,缓存高度,减少布局层次,diff刷新,压缩图片,选择合适队列,选择高性能锁,也不能满足当前庞大而又…

SpringBoot 整合 MongoDB 实现数据的增删改查功能

1、介绍说明 在 MongoDB 中有三个比较重要的名词:数据库、集合、文档 数据库(Database):和关系型数据库一样,每个数据库中有自己的用户权限,不同的项目组可以使用不同的数据库 集合(Collectio…

汽车新能源 - 单体电压值为什么通常是5V以内

常见蓄电池单体电压的值(25℃),如下表: 蓄电池类型单体电压(V)铅酸 蓄电池2.08镍金属氢 蓄电池(NIMH)1.32锂离子 蓄电池2.5~4.2(典型3.6) 单体电压为什么不…

安卓学习笔记(一)

从今天开始我们开始学习安卓的知识: 1.0 Android基础入门教程 1.Android背景与当前的状况 Android系统是由Andy Rubin创建的,后来被Google收购了;最早的版本是:Android 1.1版本 而现在最新的版本是今年5.28,Google I/O大会上推…

Logstash部署与使用

ElasticSearch 1、ElasticSearch学习随笔之基础介绍 2、ElasticSearch学习随笔之简单操作 3、ElasticSearch学习随笔之java api 操作 4、ElasticSearch学习随笔之SpringBoot Starter 操作 5、ElasticSearch学习随笔之嵌套操作 6、ElasticSearch学习随笔之分词算法 7、ElasticS…

123网盘在线解析PHP版源码

123网盘解析PHP版本源码是一种非常实用的工具,可以方便地帮助用户在网页上直接解析出其它网站中的资源,并提供下载链接。当用户需要获取某些资源时,往往需要通过各种搜索引擎或者专业的资源网站进行查找,而且很多时候找到了资源链…

Android NDK集成OpenCV使用C++的.h和.so库函数

Android NDK集成OpenCV使用C的.h和.so库函数 opencv可以作为一个单独的Android module库,被工程下的其他模块使用,但是这样就没法在Android NDK项目的c代码直接使用opencv的.h文件和.so文件。要在Android NDK项目C代码文件中使用,则需要以An…

Nautilus Chain上首个DEX PoseiSwap即将开启IDO

据悉,Nautilus Chain 上的首个 DEX PoseiSwap 即将开启 IDO ,根据官方的最新公告显示,PoseiSwap 即将于 6 月 13 日至 6 月 14 日期间,在 Bounce 平台开启其治理通证 $POSE 的 IDO(Initial DEX Offering)&a…

数据分析--Numpy初级(一)

Numpy初级 Ndarray对象dtype对象 Numpy是数据分析的基础库,它支持大量的维度计算与矩阵运算。同时他也是一个运行速度非常快的数学库,主要用于数组计算,具有线性代数、傅里叶变换、随机数生成等功能。 Ndarray对象 Numpy最重要的一个特点就…

【内部类】

目录 1.什么是内部类2.内部类分类2.1静态内部类2.非静态内部类2.3 局部内部类(几乎不用,大家了解) 3.匿名内部类 1.什么是内部类 在Java中,可以将一个类定义在一个类中或者在一个方法中,前者称为内部类,后…

JAVA打印Hello World的底层实现

任何一个学过JAVA的人应该都对这段代码非常熟悉。空闲时间翻了下代码,看看它的底层是怎么实现的 public class HelloWorld {public static void main(String[] args) {System.out.print("Hello, World!");} }首先点开out,发现它是System类中的…

JAVA微服务_网关

服务网关 什么是服务网关/API网关 API Gateway(APIGW / API 网关),顾名思义,是系统对外的唯一入口。API网关封装了系统内部架构,为每个客户端提供定制的API。 近几年来移动应用与企业间互联需求的兴起。从以前单一的…

数据结构学习记录——图-最短路径问题(无权图单源最短路径算法、有权图单源最短路径算法、多源最短路径算法、Dijkstra(迪杰斯特拉)算法、Floyd算法)

目录 问题分类 无权图单源最短路径算法 思路 伪代码 时间复杂度 代码实现(C语言) 有权图单源最短路径算法 Dijkstra(迪杰斯特拉)算法 伪代码 时间复杂度 代码实现(C语言) 多源最短路径算法 …

《Apollo 智能驾驶进阶课程》四、感知

1. 感知概貌 2. 传感器和标定 激光雷达:主动式,发射功率限制 Camera: 被动式,受到光照影响大 Radar : 多普勒效率 相对速度 超声波: 感知距离有限,倒车时使用。 … 最后设备还在研发过程中。 PnP问题,解决标定。 IC…

chatgpt赋能python:Python实现字符串匹配的SEO优化

Python实现字符串匹配的SEO优化 在现代网络中,SEO(搜索引擎优化)已成为一项必不可少的技能。它涉及到网站的排名、用户的流量和营销策略等方面。关键字匹配是一种常见的SEO技术,它可以帮助你的网站在搜索引擎中排名更高。 本篇文…

Java 实现判定顺序表中是否包含某个元素的方法

一、思路 1.定义一个toFind变量来传入要查找的元素 2.遍历整个顺序表并判定当前下标的元素等不等于toFind 3.如果等于就返回一个true,否则返回false。 二、图解 首先调用以下的方法求出顺序表的长度,再使用 for 循环遍历每一个元素。 // 求顺序表的长…

《嵌入式系统》知识总结9:使用STM32固件库操纵GPIO

STM32固件库(函数库) “STM32 标准函数库”它是由 ST 公司针对 STM32 提供的函数接口,即 API (Application Program Interface),开发者可调用这些函数接口来配置 STM32的寄存器,使开发人员得以脱离最底层的寄存器操作&…