大白话netfilter
背景
最近在看k8s源码,读到了kube proxy,网络应该是k8s里重要的一章节,看着看着发现还是之前学的又给忘了,所以先来一波技术储备。
netfilter
net+filter,filter是过滤的意思,那我们从字面分析就是过滤数据包从而达到防火墙的目的。
那netfilter在哪过滤呢?
一个请求从宏观上看,就是先通过网卡,再通过内核空间,再到用户空间的应用,netfilter就是在内核网络协议栈中,也就是在网络层和传输层。
怎么过滤呢?
netfilter网络协议栈上设立了一个个检测点(HOOK)。就是下面的五个监测点。
- NF_IP_PRE_ROUTING
刚刚进入网络层的数据包通过此点 - NF_IP_LOCAL_IN
经路由查找后,送往本机的通过此检查点 - NF_IP_FORWARD
要转发的包通过此检测点 - NF_IP_POST_ROUTING
通过网络设备出去的包通过此检测点 - 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相关推荐
- 大白话之 Iptables
背景 今天在安装traefik的时候遇见了很神奇的问题,80端口没有任何程序在监听,但是访问的话会返回it works,想来想去可能是iptables的问题,由于Iptables每次都是现查,所以觉得 ...
- 大白话Docker入门(二)
2019独角兽企业重金招聘Python工程师标准>>> 上篇的大白话Docker入门(一)让我们认识了docker,知道docker大概是怎么玩的.初步的印象可能会让你觉得和现在的V ...
- linux 防火墙 -netfilter
2019独角兽企业重金招聘Python工程师标准>>> 关于iptables 什么是iptables? 常见于linx系统下的应用层防火墙工具 firewalld 和netfilte ...
- 大白话系列之C#委托与事件讲解(一)
从序言中,大家应该对委托和事件的重要性有点了解了吧,虽然说我们现在还是能模糊,但是从我的大白话系列中,我会把这些概念说的通俗易懂的.首先,我们还是先说说委托吧,从字面上理解,只要是中国人应该都知道这个 ...
- netfilter的笔记3--那些内置的表
通过netfilter的笔记2的例子,我们知道了怎么使用netfilter的框架,对于内核的设计原则来说,策略和机制分离,所以提供了iptables来供用户配置防火墙策略. 那么,怎么使用iptabl ...
- Linux centos7 Linux网络相关、firewalld和netfilter、netfilter5表5链介绍、iptables语法
一. Linux网络相关 yum install net-tools ifconfig查看网卡ip ifup ens33开启网卡 ifdown ens33关闭网卡 设定虚拟网卡ens33:0 mii- ...
- 基于linux的netfilter处理数据包的过程分析,基于Linux的Netfilter处理数据包的过程分析...
基于Linux的Netfilter处理数据包的过程分析 防火墙技术在保护网络安全方面的作用越来越明显.相比较window,Linux有更好的网络性能,因此基于Linux的Netfilter技术 (本文 ...
- 七周三次课(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 ...
- Linux网络相关、firewalld、netfilter及其5表5链、iptables语法
2019独角兽企业重金招聘Python工程师标准>>> 1.Linux 网络相关 ifconfig 查看网卡IP,见下图, net-tools 包之前安装过了,这边还可以执行这个命令 ...
最新文章
- 奇葩错误:灰度图也想转彩图???(凭空增加数据???)
- Android实现ListView圆角效果
- Silverlight开发历程—C#代码添加动画
- VSCode如何进入到终端中
- 如何在Mongoose中更新/更新文档?
- 使用38译码器扩展单片机接口
- SSM框架介绍以及功能原理
- PCB学习笔记——0201 0402 0603 0805 1206焊盘封装尺寸
- 如何用linux系统进行远程控制windows服务器
- android获取电话通话记录,Android获取手机通话记录
- C# - 此应用无法在你的电脑上运行
- Nebula 分布式图数据库介绍
- 微信分享网页 图标不显示
- 分布式tensorflow测试代码
- xxxxxxxxxxxxxxxxx
- 如何在 Windows 右键菜单中新建自己想要的文件格式
- Oracle归档日志使用情况及自动清理
- 众生百相:我的10年软件开发生涯
- CSS核心内容:标准流、盒子模型、浮动、定位
- 死亡细胞读取外部存档文件