大白话netfilter

news/2024/7/12 3:54:55 标签: 网络, http, https
http://www.w3.org/2000/svg" style="display: none;">

背景

最近在看k8s源码,读到了kube proxy,网络应该是k8s里重要的一章节,看着看着发现还是之前学的又给忘了,所以先来一波技术储备。

netfilter

net+filter,filter是过滤的意思,那我们从字面分析就是过滤数据包从而达到防火墙的目的。

那netfilter在哪过滤呢?
https://img-blog.csdnimg.cn/daeea628af3e442f9bbc02fe9de37f39.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5L2g5aSn5pmo5ZOl,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述" />
一个请求从宏观上看,就是先通过网卡,再通过内核空间,再到用户空间的应用,netfilter就是在内核网络协议栈中,也就是在网络层和传输层。
怎么过滤呢?
netfilter网络协议栈上设立了一个个检测点(HOOK)。就是下面的五个监测点。

  1. NF_IP_PRE_ROUTING
    刚刚进入网络层的数据包通过此点
  2. NF_IP_LOCAL_IN
    经路由查找后,送往本机的通过此检查点
  3. NF_IP_FORWARD
    要转发的包通过此检测点
  4. NF_IP_POST_ROUTING
    通过网络设备出去的包通过此检测点
  5. NF_IP_LOCAL_OUT
    本机进程发出的包通过此检测点

简称为prerouting、input、forword、output、postrouting,过滤的是网络传输层的数据包
https://img-blog.csdnimg.cn/6e84a568222d4841a5f8a2837e7476b5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5L2g5aSn5pmo5ZOl,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述" />

https://img-blog.csdnimg.cn/37851cf91b37422586038eb27125a7e4.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5L2g5aSn5pmo5ZOl,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述" />
上下两个图一个意思

传输层、网络

https://img-blog.csdnimg.cn/16e83184b04a4499b2c126419fe8bd02.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5L2g5aSn5pmo5ZOl,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述" />
osi7层模型真的必须要记牢,这玩意就是基本功了,大概我就简单的总结一下,传输层大多用tcp协议翻译成中文传输控制协议,翻译的不好,翻译成控制传输协议不就完了么?就是控制怎么传输的,那怎么控制啊?首先咱俩想传输要先连接吧,那谁和谁链接啊,就要有源端口目标端口,知道端点了就开始什么三次握手四次挥手。网络层呢,就是把报文发送到它应该去(的IP地址)的主机,我们都知道网络很复杂,就像你访问百度,你不可能直接访问到百度服务器,除非你跟他中间拉一条网线,所以中间要通过各种路由器,就像击鼓传花一样,假设我们的ip是a,百度的是z,中间的路由器是b-y,那就要a先知道b的ip,b在知道c的ip,c在知道d的ip这么传下去,最终到达z。那a怎么知道b的,b又怎么知道c的?路由表,假设a要找z,就去路由表查去了,没发现z,怎么办?那就b就是默认网关(一般就是个路由器),再让默认网关b去查他的路由表看看有没有z,没有就一直查下去。链路层呢,你知道ip了也没用啊,实际你还是要知道他的物理地址也就是mac地址,比如a知道了b的ip,那怎么知道b的ip呢?喊呗!ARP 协议会在以太网中以广播的形式,对以太网所有的设备喊出:“这个 IP 地址是谁的?请把你的 MAC 地址告诉我”。这时候b就把他的mac地址给了a,链路层就是几号楼,网络就是几单元,传输层就是门牌号。

https://img-blog.csdnimg.cn/a130acff1a3745959e2a83036122dd55.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5L2g5aSn5pmo5ZOl,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述" />

别怕别怕!我看见这图的时候我也特么心烦,但是你冷静看看我上面说的传输层,和网络层,你发没发现几个关键词,(NF_IP_PRE_ROUTING、NF_IP_LOCAL_IN、NF_IP_FORWARD、NF_IP_POST_ROUTING、
NF_IP_LOCAL_OUT
)这不就是那五个检测点么?看来上面说的没骗我netfilter在网络层和传输层。

总结

说白了,netfilter就是在网络层和传输层中设立了几个监测点来操作数据,至于怎么操作那是你的事,我只负责帮你设置监测点。


http://www.niftyadmin.cn/n/1715178.html

相关文章

有序01字符串(hihocoder164周)

问题描述 对于一个01字符串,你每次可以将一个0修改成1,或者将一个1修改成0。那么,你最少需要修改多少次才能把一个01串 S 变为有序01字符串(有序01字符串是指满足所有0在所有1之前的01串)呢? 输入 第一行是一个整数 T&#xff0c…

(翻译++)微软Hololens开发教程系列(1): Holograms 100-使用Unity构建第一个全息影像应用

前言 本系列博文翻译至微软Holograms的官方英文教程,其地址为: https://developer.microsoft.com/en-us/windows/holographic/academy 该系列文章由浅入深的讲解了如何一步步的使用Unity3D来开发Hololens的应用程序,教程中所使用到的项目文件可以作为后续的开发模板…

微软Hololens开发教程系列(2): Holograms 101-凝视、手势

原文来自微软学院(https://docs.microsoft.com/zh-cn/windows/mixed-reality/holograms-101) 本教程将带领您完成一个完整的项目,使用Unity构建,演示全息窗口上的核心功能,包括凝视、手势、语音输入、空间声音和空间映…

NNI使用体验

NNI简介 NNI (Neural Network Intelligence) 是自动机器学习(AutoML)的工具包。 它通过多种调优的算法来搜索最好的神经网络结构和(或)超参,并支持单机、本地多机、云等不同的运行环境。 NNI开源地址:htt…

LeetCode的解题思路、代码总结

文章目录LeetCode_Practice算法排序二分查找动态规划动态规划解决买卖股票贪心算法双指针回溯算法DFS,BFS数据结构栈链表队列树堆哈希表图数学骚操作LeetCode_Practice python C 本人是研二菜鸟一枚,这是我的LeetCode练习记录,记录了我的解题代码和解题…

关于机器学习需要知道的基础知识(持续更新)

数学基础:机器学习的数学理论基础 知识点总结:目前我正按照牛客网面试知识点总结的目录,来复习、整理我所欠缺的知识。 常见的机器学习算法:代码和讲解 面试中各种问题的比例如下图,可见机器学习算法、深度学习算法…

latex写论文

今天发现一个latex画表格的神器,https://www.tablesgenerator.com/latex_tables

后端开发面经

计算机网络 如何通过udp实现可靠传输? 编程 如果多个指针指向同一个对象,怎么避免野指针?说说你了解的排序算法有哪些,有什么区别? 数据库 事务的4种特性? A,atomicity,原子性 &…