首页 > 系统相关 >netfilter与iptables的基本原理

netfilter与iptables的基本原理

时间:2024-03-24 17:23:13浏览次数:32  
标签:iptables 72.32 基本原理 ping 30.102 数据包 netfilter

一、netfilter 与 iptables 简介

1. netfilter 是什么

  Netfilter 自 1998 年开发,2000 年合并到 Linux Kernel v2.4 版本,是 Linux 内核提供的一个流量处理框架,用于实现对 IP 数据包的控制和过滤等功能。即:netfilter 是 Linux 内核自带的防火墙架构。

2. iptables 是什么

  iptables 是位于用户空间的一个命令行工具,它作用于网络层,用于与内核的 netfilter 交互,相当于一个客户端代理,将用户设定的安全规则配置到 netfilter 中,进而实现对网络的控制、流量的转发。    

二、netfilter 与网络协议栈的无缝契合

1. hook 点定义

  Netfilter 是 Linux 2.4.x 引入的一个子系统,它作为一个通用的、抽象的框架,提供一整套的 hook 函数的管理机制,使得诸如数据包过滤、网络地址转换(NAT)和基于协议类型的连接跟踪成为了可能。   网络通信的协议栈基本模式如下: 大致分为三个路线: (1)接收数据:数据包入口 ——> A ——> 路由判决 ——> B ——> 上层协议; (2)转发数据:数据包入口 ——> A ——> 路由判决 ——> C ——> E ——> 数据包出口; (3)发送数据:上层协议 ——> 路由判决 ——> D ——> E ——> 数据包出口。   其中 A、B、C、D、E 五个关键点就是 netfilter 发挥作用的地方,netfilter 将它们重命名如下:   其它内核防火墙子模块可以向这些 hook 点注册处理函数,这样当数据包经过这些 hook 点时,其上注册的处理函数将被依次调用。这些钩子函数按功能可分为四大类:连接跟踪、数据包的过滤、网络地址转换(NAT)和数据包的修改。   Netfilter 提供了整个防火墙的框架,各个协议基于 Netfilter 框架来自己实现自己的防火墙功能。每个协议都有自己独立的表来存储自己的配置信息,他们之间完全独立的进行配置和运行。例如,链路层防火墙子模块 ebtables、ARP 防火墙子模块 arptables、网络层防火墙子模块 iptables 等。

2. 规则表

  Linux 内核中维护了四张表,按优先级排序如下:。

(1)raw

(2)mangle

  该表主要用于对数据包的修改,诸如修改数据包的 TOS、TTL 等字段。同时该表还会对数据包打上一些特殊的标签以便结合 TC 等工具,实现诸如 Qos 等功能。该表监视所有的 hook 点。

(3)nat

  主要用于 DNAT 和 SNAT 和地址伪装等操作。用于修改数据包的源、目的地址。目前版本的内核中 nat 表监视四个 hook 点:NF_IP_PRE_ROUTING、NF_IP_LOCAL_IN/OUT、NF_IP_POST_ROUTING。但在真正的实际应用中,我们一般仅需要在 nat 表的 PREROUTING 和 POSTROUTING 点上注册钩子函数。该表有个特性:只有新连接的第一个数据包会经过这个表,随后该连接的所有数据包将按照第一个数据包的处理动作做同样的操作,这种特性是由连接跟踪机制来实现的。

(4)filter

  该表是整个过滤系统中真正起“过滤”作用的地方。所有对数据包的过滤工作都在这个表里进行,也就是说用户如果需要对某种类型的数据包进行过滤拦截,那么最好在这个表中进行操作。filter 表会在NF_IP_LOCAL_IN、NF_IP_FORWARD和NF_IP_LOCAL_OUT 三个 hook 点注册钩子函数,也就是说所有配置到 filer 表中的规则只可能在这三个过滤点上进行设置。   这些在用户空间所认为的“表”的概念,在内核中有的是以模块的形式存在,如 filter;有的是以子系统方式存在的,如 nat,但它们都具有“表”的性质。因此,内核在处理它们时有很大一部操作都是相同的,例如表的初始化数据、表的注册、钩子函数的注册等等。   各个规则表与网络通信协议栈的结合如下:

 

 

三、iptables 与 netfilter 的协作

1. iptables 与 netfilter 的通信

  模块之间的关系及其通讯方式:   用户空间的 iptables 与内核的防火墙模块 ip_tables 通信,ip_tables 把自己所编写的一些钩子函数注册到 Netfilter 所监控的五个关键点,从而介入到对数据包的处理流程中。

2. iptables 命令解析

规则保存文件:/etc/sysconfig/iptables。    

四、实验

  下面对 iptables 命令进行实践,并通过 ping 与 tcpdump 验证结果。   tcpdump 对正常情况下 ping 的抓包结果如下:(从 30.102.72.32 ping 30.202.194.149)

1. 丢弃指定来源地址的数据包

  在 30.102.72.32 设置丢弃来自 30.202.194.149 的数据包:   在 30.102.72.32 ping 30.202.194.149:   在 30.102.72.32 tcpdump 抓包如下:   tcpdump 抓包结果能完整看到请求包与回应包,但 ping 结果却是不通的,说明来自 30.202.194.149 的回应 icmp 数据包在传入应用层之前就被丢弃了。

2. 丢弃去往目的地址的流量

  在 30.102.72.32 设置丢弃发送给 30.202.194.149 的数据包:   在 30.102.72.32 ping 30.202.194.149:   在 30.102.72.32 tcpdump 抓包如下:   ping 发出的数据包被丢弃了。

3.SNAT

  在 30.102.72.32 设置规则,发出数据包之前,将来源 IP 改为 30.102.100.100:   在 30.102.72.32 ping 30.202.194.149:   在 30.102.72.32 tcpdump 抓包如下:   只看到请求数据包,未看到回复数据包。   在 30.202.194.149 tcpdump 抓包如下:   能完整看到请求包与回应包,但由于回应数据包的目的地址错了(被改了),所以 30.102.72.32 无法收到回应数据包,ping 的结果也就不通。         参考: https://cloud.tencent.com/developer/article/2144136 https://www.cnblogs.com/yangtao416/p/16756265.html https://mp.weixin.qq.com/s/bwK_ECwmL6OAjKHkiqGNpA https://cloud.tencent.com/developer/article/2312204?areaId=106001 https://zhuanlan.zhihu.com/p/632379601 http://www.taodudu.cc/news/show-5972449.html?action=onClick https://blog.csdn.net/qq_40989769/article/details/128925559 https://www.bilibili.com/read/cv18760033/    

标签:iptables,72.32,基本原理,ping,30.102,数据包,netfilter
From: https://www.cnblogs.com/wujuntian/p/18092691

相关文章

  • 利用GRACE球谐数据计算地表位移的基本原理与实现
    1.基本理论由于地表质量发生变化导致地表的负荷变形,利用GRACE数据计算地表的垂直(2)、水平东向(3)和水平北向位移(4)方法如下:我们之前已经利用冯伟老师提供的MATLAB工具包计算了EWH,下面我们具体看看两类计算公式的异同点:我们可以发现,有一些部分是一致的,即唯一不同的就是前面乘......
  • Python编程异步爬虫——协程的基本原理
    Python编程之异步爬虫协程的基本原理要实现异步机制的爬虫,自然和协程脱不了关系。案例引入先看一个案例网站,地址为https://www.httpbin.org/delay/5,访问这个链接需要先等5秒钟才能得到结果,这是因为服务器强制等待5秒时间才返回响应。下面来测试一下,用requests写一个遍历......
  • iptables-save 命令使用总结
    转载请注明出处:iptables-save 命令在Linux系统中用于将当前运行的 iptables 防火墙规则导出到一个文件中。这对于备份规则、迁移规则或在不同系统间共享规则配置非常有用。基本用法基本用法是将当前的 iptables 规则保存到文件中,如下所示:iptables-save>/pat......
  • Kubernetes之Pod基本原理与实践
    一、Pod的定义与基本用法1.Pod是什么Pod是可以在Kubernetes中创建和管理的、最小的可部署的计算单元。Pod不是进程,而是容器运行的环境。Pod所建模的是特定于应用的“逻辑主机”,其中包含一个或多个应用容器。当Pod包含多个应用容器时,这些容器的应用之间应该是......
  • GNSS载波相位平滑伪距基本原理
    相位平滑技术:削弱伪距欢测值的随机误差影响差分技术:削弱欢测方程中的系统误差影响相位平滑伪距原理:GPS接收机除了提供伪距测量外,可同时提供载波相位测量,由于载波相位测量的精度比码相位的测量精度高2个数量级,因此,如果能获得载波整周数,就可以获得近乎无噪声的伪距测量。一般......
  • netfilter: iptable的使用
    netfilter相关网址官网:netfilter/iptablesprojecthomepageiptables基础知识详解_LarryHai6的博客-CSDN博客_iptables使用iptables进行端口转发-云+社区-腾讯云(tencent.com)原理图iptables1.原理叙述iptables具有Filter,NAT,Mangle,Raw四种内建表:1.Filter......
  • 【机器学习】贝叶斯分类器 | 分类器基本原理,朴素贝叶斯,半朴素贝叶斯,贝叶斯网
    在学习贝叶斯分类器的过程中我逐渐理解了不同视角下的机器学习过程​我们的学习本质上是对于众多的属性,x1,x2,x3到一个结果分类y,线性分类器什么的是训练集拟合一个函数从众多属性x到y,SVM是学习一个分界线划分不同的y对应的x,而贝叶斯分类器本质上是对数据集观测做统计结......
  • 简述kube-proxy ipvs和iptables的异同
    iptables与IPVS都是基于Netfilter实现的,但因为定位不同,二者有着本质的差别:iptables是为防火墙而设计的;IPVS则专门用于高性能负载均衡,并使用更高效的数据结构(Hash表),允许几乎无限的规模扩张。与iptables相比,IPVS拥有以下明显优势:为大型集群提供了更好的可扩展性和性能;支持比iptabl......
  • iptables五表五链及对应实例
    iptables是Linux系统上用于配置网络包过滤规则的工具,它使用表(tables)和链(chains)来组织规则。以下是iptables中的五表五链及其对应的实例说明:五表filter表:默认表,用于过滤数据包,允许或拒绝数据包通过。它包含INPUT、OUTPUT和FORWARD三个链。nat表:用于网络地址转换(NAT),例如端口转发......
  • GRE基本原理
    GRE概述如图所示,通过在IPv4网络上建立GRE隧道,解决了两个IPv6网络的通信问题。GRE还具备封装组播报文的能力。由于动态路由协议中会使用组播报文,因此更多时候GRE会在需要传递组播路由数据的场景中被用到,这也是GRE被称为通用路由封装协议的原因。如图所示,乘客协议为IPv6,封装协......