背景

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

netfilter

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

那netfilter在哪过滤呢?

一个请求从宏观上看,就是先通过网卡,再通过内核空间,再到用户空间的应用,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,过滤的是网络层传输层的数据包


上下两个图一个意思

传输层、网络层


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,链路层就是几号楼,网络就是几单元,传输层就是门牌号。

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

总结

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

大白话netfilter相关推荐

  1. 大白话之 Iptables

    背景 今天在安装traefik的时候遇见了很神奇的问题,80端口没有任何程序在监听,但是访问的话会返回it works,想来想去可能是iptables的问题,由于Iptables每次都是现查,所以觉得 ...

  2. 大白话Docker入门(二)

    2019独角兽企业重金招聘Python工程师标准>>> 上篇的大白话Docker入门(一)让我们认识了docker,知道docker大概是怎么玩的.初步的印象可能会让你觉得和现在的V ...

  3. linux 防火墙 -netfilter

    2019独角兽企业重金招聘Python工程师标准>>> 关于iptables 什么是iptables? 常见于linx系统下的应用层防火墙工具 firewalld 和netfilte ...

  4. 大白话系列之C#委托与事件讲解(一)

    从序言中,大家应该对委托和事件的重要性有点了解了吧,虽然说我们现在还是能模糊,但是从我的大白话系列中,我会把这些概念说的通俗易懂的.首先,我们还是先说说委托吧,从字面上理解,只要是中国人应该都知道这个 ...

  5. netfilter的笔记3--那些内置的表

    通过netfilter的笔记2的例子,我们知道了怎么使用netfilter的框架,对于内核的设计原则来说,策略和机制分离,所以提供了iptables来供用户配置防火墙策略. 那么,怎么使用iptabl ...

  6. Linux centos7 Linux网络相关、firewalld和netfilter、netfilter5表5链介绍、iptables语法

    一. Linux网络相关 yum install net-tools ifconfig查看网卡ip ifup ens33开启网卡 ifdown ens33关闭网卡 设定虚拟网卡ens33:0 mii- ...

  7. 基于linux的netfilter处理数据包的过程分析,基于Linux的Netfilter处理数据包的过程分析...

    基于Linux的Netfilter处理数据包的过程分析 防火墙技术在保护网络安全方面的作用越来越明显.相比较window,Linux有更好的网络性能,因此基于Linux的Netfilter技术 (本文 ...

  8. 七周三次课(11月29日) 10.11 Linux网络相关 10.12 firewalld和netfilter 10.13 netfilter5表5链介绍 10.14 iptables语法...

    2019独角兽企业重金招聘Python工程师标准>>> 10.11 Linux网络相关 ifconfig 查看网卡ip (yum install net-tools) 安装 -a   ...

  9. Linux网络相关、firewalld、netfilter及其5表5链、iptables语法

    2019独角兽企业重金招聘Python工程师标准>>> 1.Linux 网络相关 ifconfig 查看网卡IP,见下图, net-tools 包之前安装过了,这边还可以执行这个命令 ...

最新文章

  1. 奇葩错误:灰度图也想转彩图???(凭空增加数据???)
  2. Android实现ListView圆角效果
  3. Silverlight开发历程—C#代码添加动画
  4. VSCode如何进入到终端中
  5. 如何在Mongoose中更新/更新文档?
  6. 使用38译码器扩展单片机接口
  7. SSM框架介绍以及功能原理
  8. PCB学习笔记——0201 0402 0603 0805 1206焊盘封装尺寸
  9. 如何用linux系统进行远程控制windows服务器
  10. android获取电话通话记录,Android获取手机通话记录
  11. C# - 此应用无法在你的电脑上运行
  12. Nebula 分布式图数据库介绍
  13. 微信分享网页 图标不显示
  14. 分布式tensorflow测试代码
  15. xxxxxxxxxxxxxxxxx
  16. 如何在 Windows 右键菜单中新建自己想要的文件格式
  17. Oracle归档日志使用情况及自动清理
  18. 众生百相:我的10年软件开发生涯
  19. CSS核心内容:标准流、盒子模型、浮动、定位
  20. 死亡细胞读取外部存档文件

热门文章

  1. CTFshow-菜狗杯-值覆盖-遍地飘零
  2. 使用java提取图片的色彩边界
  3. android百度地图加载不出来,imobile 加载百度地图不显示
  4. 游戏开发中,如何将配置表xlsx转lua文件
  5. 李嘉诚留住人才的秘诀
  6. 【转】高清视频分割器在日常生活中的重要作用
  7. 2021年T电梯修理考试资料及T电梯修理考试试卷
  8. BUG: scheduling while atomic 分析 and 为什么中断不能睡眠
  9. hive 插入数据映射到hbase_hive建表映射到hbase
  10. 杭电2017新生赛1005-整数的Alvin值