iptables简述

news2024/10/6 18:32:00

netfilter

iptables的底层实现是netfilter。netfilter实在Linux内核2.4版引入的子系统,作为通用框架提供一套hook函数的管理机制,使得数据包过滤、地址转换、访问控制、连接跟踪等功能得以实现。netfilter的架构就是在整个网络流程中放置了一些钩子,并在钩子上挂载一些函数进行处理。
下面是一张netfilter的原理图。
图

当网卡收到一个数据包到达协议栈时:

  1. 经过PREROUTING 钩子,如果这里有用户配置的钩子函数,那么内核在这里对数据包做DNAT。
  2. 不管在PREROUTING 有没有做DNAT,内核都会查本地路由表决定这个数据包是发个本地还是其它设备。
  3. 如果经过路由决策内核把数据包发给本地,就会经过INPUT钩子。
  4. 本地进程收到数据包后发送回程包,先经过OUTPUT钩子,然后经过路由决策出口,
  5. 最后经过POSTROUTING出协议栈,这里可以设置SNAT的钩子函数。
  6. 如果经过路由决策内核把数据包发给其它设备或net namespace,就会经过FORWARD钩子这里可以设置包过滤函数例如reject。
  7. 最后是POSTROUTING出协议栈,这里可以设置SNAT的钩子函数。

iptables 三件套:chain、table、rule

iptables是一个用户空间程序,负责往钩子上配置回调函数。一般用于构建Linux内核防火墙。

链chain

5条链chain对应netfilter的5个钩子:
INPUT链:处理进入本地进程的数据包;
OUTPUT链:处理本地进程发出的数据包;
FORWARD链:处理转发到其它设备或net namespace的数据包;
PREROUTING链:处理DNAT;
POSTROUTING链:处理SNAT。
除此之外用户还可以自定义链,自定义的链没有与netfilter绑定,所以不会自动触发,只能从其它链上JUMP跳转过来。

表table

5张表table分别是:
filter表:用于控制某条链上的数据包放行、丢弃、拒绝;
nat表:用于修改数据包的源目IP地址;
mangle表:用于修改数据包的IP头信息;
raw表:iptable是有状态的,即连接追踪(connection tracking),raw可以去掉追踪机制;
security表:数据包上应用SELinux。
5张表的优先级从高到底依次是:raw、mangle、nat、filter、security

链和表的对应关系

不是每个链都能挂表
在这里插入图片描述

规则rule

iptables的规则rule是通过表table来分类管理的,或者说iptables规则被划分到不同的表集合中。例如,filter表是过滤数据包的规则,nat表是做地址转换的规则。
iptables规则由用户自定义。一般规则包含两部分:匹配条件和动作。匹配条件包括:协议类型、五元组、连接状态等,多匹配条件可以任意组合。
动作包括:DROP直接丢弃、REJECT丢弃后返回提示、ACCEPT数据包通过并执行下一个规则、JUMP跳到其它用户自定义链上继续执行等。

iptables用法

iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作
例如:
iptables -L -n 输出iptables所有filter表的规则,-n 表示IP地址形式展示
iptables -t nat -L -n 输出iptables所有nat表的规则
iptables -A INPUT -s 10.0.0.1/32 -j ACCEPT 在INPUT最后追加一条记录
iptables -I INPUT 1 -i lo -j ACCPET 在第1条的位置插入一条记录,接受所有来自lo网口的访问
iptables -D INPUT 2 删除INPUT第2条记录
保存iptables规则:
iptables-save > /etc/sysconfig/iptables
从文件里面恢复iptables规则:
iptables-restore < /etc/sysconfig/iptables

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

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

相关文章

[附源码]计算机毕业设计springboot海滨学院学生大创项目申报与审批系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

大中型园区网络拓扑架构

目录 园区出口区 数据中心区 网络管理区 DMZ区 核心层 汇聚层 终端层 接入层 大中型园区网络通常采用核心层为“根”的树形网络架构&#xff0c;拓扑稳定&#xff0c;易于扩展和维护。 园区网络可划分为多个层次&#xff1a;接入层、汇聚层、核心层&#xff0c; 以及多个分区&a…

iwebsec靶场 SQL注入漏洞通关笔记9- 双写关键字绕过

系列文章目录 iwebsec靶场 SQL注入漏洞通关笔记1- 数字型注入_mooyuan的博客-CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记2- 字符型注入&#xff08;宽字节注入&#xff09;_mooyuan的博客-CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记3- bool注入&#xff08;布尔型盲注&#…

雨水情监测及视频监控解决方案 水库雨水情自动测报系统 介绍 功能 特点

平升电子水雨情自动监测系统/雨水情监测及视频监控解决方案/水库雨水情自动测报系统辅助水利管理部门实现水库雨水情信息“全要素、全量程、全覆盖”自动测报。系统具备水库水位、雨量、现场图像/视频等水文信息采集、传输、处理及预警广播等功能&#xff0c;有效提升了雨水情信…

技术分享 oracle中fm的作用

SQL> select |||to_char(5,999)||| from dual; 结果为&#xff1a;| 5| SQL> select |||to_char(5,000)||| from dual; 结果为&#xff1a;| 005| 如何去除多余的空格&#xff1f; SQL> select |||to_char(5,fm000)||| from dual; 结果为&#xff1a;|005| 空格…

mysql相关基础知识篇(三)

1.一条更新sql语句怎么执行的了解吗&#xff1f; 更新语句的执行是 Server 层和引擎层配合完成&#xff0c;数据除了要写入表中&#xff0c;还要记录相应的日志。 执行器先找引擎获取 ID2 这一行。ID 是主键&#xff0c;存储引擎检索数据&#xff0c;找到这一行。如果 ID2 这…

工业服务被忽视的销售力量:他们的技术人员

目录 1.从销售到服务的普遍 2.从服务到销售的滞后 3.是什么阻碍了售后服务时销售行为的发生 3.如何改善这种状况 1.从销售到服务的普遍 服务销售窗口的提前在工业企业已经是非常普遍的现象&#xff0c;特别是在互联网经济高度发达的今天&#xff0c;销售的触角已经直达消费…

MySQL如何确定查询处理各个阶段所消耗的时间

使用profile set profiling1; 启动profile 这是一个session级的配置 执行查询 show profiles; 查询每一个查询所消耗的总时间信息 show profile for query N; 查询的每个阶段所耗的时间 show profile cpu for query 1; 但是每次使用都会有一个warning 使用performanc…

59 - 类模板与函数模板的深度剖析

---- 整理自狄泰软件唐佐林老师课程 1. 多参数模板 类模板可以定义 任意多个不同的 类型参数 2. 类模板可以被 特化 模板本来是一组通用逻辑的实现&#xff0c;但是可能存在特定的参数类型下&#xff0c;通用的逻辑实现不能满足要求&#xff0c;这时就需要针对这些特殊的类型&…

【密码学基础】RSA加密算法

1 RSA介绍 RSA是一种非对称加密算法&#xff0c;即加密和解密时用到的密钥不同。加密密钥是公钥&#xff0c;可以公开&#xff1b;解密密钥是私钥&#xff0c;必须保密保存。基于一个简单的数论事实&#xff1a;两个大质数相乘很容易&#xff0c;但想要对其乘积进行因式分解却…

IIS 部署 SSL 证书提示证书链中的一个或多个中间证书丢失

现象描述 IIS Web 服务部署免费 SSL 证书时提示 “证书链中的一个或多个中间证书丢失&#xff0c;要解决此问题&#xff0c;请确保安装了所有中间证书”。 下载中间证书文件&#xff0c;根据您的证书加密算法类型下载中间证书至您的云服务器中。 安装中间证书 1. 在您需要部…

Arcgis地理配准栅格数据

前提 有时候获取的不同数据没有坐标,而却有共同点,这时候需要对数据进行配准校正,数据才能最终拼接镶嵌在一起 效果 1、准备数据 2、打开地理配准工具 3、地理配准中设置待配准数据 4、添加控制点 这份数据目测很容易找到控制点 在待配准数据上先选择控制点,再在基准数…

JavaScript_BOM

JavaScript_BOM BOM&#xff1a;Browser Object Model 浏览器对象模型。也就是 JavaScript 将浏览器的各个组成部分封装为对象。 我们要操作浏览器的各个组成部分就可以通过操作 BOM 中的对象来实现。 BOM 中包含了如下对象&#xff1a; Window&#xff1a;浏览器窗口对象N…

JavaScript基础语法(类型转换)

JavaScript基础语法&#xff08;类型转换&#xff09; 使用运算符的时候会发生类型转换。 其他类型转为number string转换为 number类型&#xff1a;按照字符串的字面值&#xff0c;转为数字。如果字面值不是数字&#xff0c;则转为NaN 将 string转换为 number有两种方式&…

存储器管理

文章目录存储器的层次结构存储器的指标多层结构的存储器系统主存储器与寄存器高速缓存和磁盘缓存程序的装入和链接对用户程序的处理步骤程序的装入程序的链接连续分配的存储管理方式单一连续分配固定分区分配动态分区分配基于顺序搜索的动态分区分配算法基于索引搜索的动态分区…

EventLoop

1.javascript是一门单线程语言 任务1 ---> 任务2--->任务3 单线程执行任务队列的问题&#xff1a; 如果前一个任务非常耗时&#xff0c;则后面的任务不得不一直等待&#xff0c;从而导致程序假死问题 2.同步任务和异步任务 同步任务&#xff1a;js主线程直接执行 同…

沉睡者IT - 什么是Web3.0?

欢迎关注沉睡者IT&#xff0c;点上面关注我 ↑ ↑ 什么是Web3.0&#xff1f; Web3&#xff08;也称为Web 3&#xff09;用最简单的话来解释就是&#xff0c;第三代互联网。 那么有朋友要问了&#xff0c;那么什么是第一代&#xff0c;什么是第二代&#xff1f;第三代又有什么…

2.1 Redis中SDS的定义

每个sds.h/sdshdr 结构表示一个SDS值 struct sdshdr { //记录 buf 数组中已经使用的字节数量 //等于SDS所保存字符串的长度 int len;//记录buf数组中未使用字节的数量 int free;//字节数组,用于保存字符串 char buf[]; };图2-1 展示了一个SDS 示例: 1、free 属性值为0&#x…

Kotlin 开发Android app(十三):RadioGroup和ViewPager控件实现底层分页按钮

安卓的控件是挺多的&#xff0c;没有办法一个一个的来说明&#xff0c;我们挑出了一些重点的控件&#xff0c;组成一些常见的布局&#xff0c;这样以后在遇到相同功能的界面时&#xff0c;就会有自己的思路&#xff0c;或者进行复用。 在这一节中&#xff0c;我们实现一个底层分…

CANoe-vTESTstudio之State Diagram编辑器(元素介绍)

State Diagram编辑器里的工具箱,有多个图形符号,它们是组成状态图表的图形元素,具有不同的作用。图形元素能够高效并快速地创建状态图表,然后生成测试用例 1. 基本测试设计元素 1.1 Setup Setup元素的测试代码能够执行一次,在检查测试用例之前。例如,用于建立诊断连接 …