k8s使用的iptables,具体原理是什么?一学就会
1. netfilter
指的是内核中的netfilter框架,这个框架在协议栈中增加了5个hook,并维护内核模块在这些hook的地方注册的callback函数。
1.1. iptables和netfilter的关系
iptables是用户空间的一个程序,通过一定机制和内核的netfilter打交道,负责往hook上配置callback函数。
2. netfilter的5个hook
2.1. 数据包常见的三种hook路径
● 本机收到的,目的IP是本机的package:NF_IP_PRE_ROUTING -> NF_IP_LOCAL_IN
● 本机收到的,目的IP不是本机的package:NF_IP_PRE_ROUTING -> NF_IP_FORWARD -> NF_IP_POST_ROUTING
● 本机发出去的package:NF_IP_LOCAL_OUT -> NF_IP_POST_ROUTING
3. hook回调函数:rule
向hook注册的回调函数就是rule,rule = match + target
示例:
#允许ftp服务的21端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
3.1. match
● -p tcp:–protocol tcp协议
● --dport 21:–destination-port,目的port是21
3.2. target
● -j ACCEPT :接收此package
常见的target有:
常见的target有:
● DROP丢弃
● RETURN跳出当前chain
● ACCEPT通过
● QUEUE放入用户空间队列
● custom-chain:跳转到用户自定义的chain
4. table:对rule进行分类
rule具备不同的能力,根据rule的能力分为5类,如:
● FIlter表:rule用于过滤
● NAT表:rule用于地址转换
● Mangle表:rule用来修改IP数据包头,如修改TTL
● Raw表:rule给package打标记
● Security表:rule和SELinux有关
5. hook如何调rule:hook调chain,chain将rule组织成链
rule有很多很多,hook只有5个点位,hook如何调这么多的rule呢?
答:将rule组织成5条链,每条链对应一个hook
table-chain-rule关系:
6. 自定义chain
创建自定义chain时需要指定,在哪个table里创建,默认是在filter表。
在nat表里创建自定义chain
iptables -t nat -N CUSTOM_NAT
hook无法直接调用自定义chain,hook调用5大chain,5大chain里的rule通过jump到自定义的chain。
7. 总结
netfilter包的处理流程汇总如下:
● 包按netfilter框架分别经过5个hook点
● 每个hook点调用自己对应的官方chain
● 官方chain串联的rule按类别分散在5张表里
● 官方chain按照预先定义的表的顺序来执行rule
● 表里的rule可以jump到表里自定义的chain
k8s使用的iptables,具体原理是什么?一学就会相关推荐
- K8s系列之:网络原理
K8s系列之:网络原理 一.K8s网络模型 二.Docker的网络模型 三.网络的命名空间 1.网络命名空间的实现 2.网络命名空间的操作 3.网络命名空间的一些技巧 四.Veth设备对 1.Veth ...
- linux防火墙究竟如何使用?iptables的原理与简单应用
iptables的原理与简单应用 1. 什么是防火墙? 1.1 netfilter和iptables的关系 2.iptables的基本概念 2.1 链的概念 2.2 表的概念 2.3 表链的关系 2. ...
- babel原理_带你了解 snowpack 原理,你还学得动么(下)
作者:AlienZHOU 转发链接:https://zhuanlan.zhihu.com/p/149351900 目录 带你了解 snowpack 原理,你还学得动么(上) 带你了解 snowpack ...
- 朱娜斐编译原理复习笔记-北京工业大学软件学院
朱娜婓编译原理学习笔记 说明 笔记大部分内容来自参考资料[1], 看了B站上中科大华保健老师的编译原理课视频(参考资料[2]),补充完善了DFA的代码表示.Hopcroft 算法.文法重写.LL(1) ...
- K8S之ipvs负载均衡原理
文章目录 前言 一.ipvs vs iptables: 二.ipvs kube-proxy原理分析: 总结 前言 IPVS简介: 尽管 Kubernetes 在版本v1.6中已经支持5000个节点,但 ...
- Iptables防火墙原理
一.IPTABLES概念 iptables是隔离主机以及网络的工具,通过自己设定的规则以及处理动作对数据报文进行检测以及处理.从设备上分类,防火墙分为软件防火墙.硬件防火墙.芯片级防火墙.从技术上分类 ...
- Linux笔记-iptables规则原理和组成
Netfilter Netfilter:是Linux操作系统内核层内部的一个数据包处理模块. Hook point:数据包在Netfilter中的挂载点(PRE_ROUTING.INPUT.OUTPU ...
- k8s里面的iptables和ipvs有什么区别?怎么选?为什么选择ipvs
在 Kubernetes 中,Iptables 和 IPVS 都是负责流量转发的工具,但是在实现上有一些区别,可以根据不同的场景来选择使用. Iptables 是 Linux 系统内置的一个工具,可以 ...
- k8s安装工具:sealos设计原理及离线包结构分析
执行流程 在执行机器上生成证书和kubeconfig文件 在执行机器上wget下载离线包和sealos二进制使用scp拷贝到目标机器上(masters和nodes) 在master0上执行kubead ...
最新文章
- JVM年轻代,老年代,永久代详解​​​​​​​
- ubuntu16.04开机卡死解决方案
- 23-爬虫之scrapy框架增量式实时监测数据爬取10
- 洛谷2619/bzoj2654 Tree(凸优化+MST)
- 分区变为RAW的解决办法
- Apple Mac OS X每日一技巧016:MacBook电源线如何缠绕
- 27. Spring Boot 部署与服务配置
- Virtual Serial Port Driver虚拟串口vspd v7.2 下载及破解方法
- bool类型头文件_C++ Primer Chapter2 变量和基本类型
- 凯撒密码的超详细讲解
- 配置管理工具SVN的使用
- apdu 移动sim_做移动sim卡读写程序, 用APDU指令, 怎么给白卡写入iccid和IMSI?
- C++中 二维数组的定义
- 云计算的特征:基本功能
- Adobe Dreamweaver CS6快捷键使用
- 什么是类?以及类的分类
- 计算机里面的固态硬盘,怎么判断电脑里面的是不是固态硬盘?
- Hyper-V新建Windows7虚拟机
- 富途客户端软件测试笔试and面试
- 敏捷 Scrum 大师班认证培训的终极方案 | The Ultimate Agile Scrum Master Certification Training
热门文章
- 如何做数据分析报告?
- HDU 6461 hzy 和zsl 的生存挑战
- 用少量箭射爆气球,leetcode习题
- 爱普生Epson Stylus SX235W 一体机驱动
- 讯飞输入法android版升级日志,讯飞输入法Android版7.0 实力解锁三大输入难题
- [Go实战]怎么写测试类,运用testing.T
- 关于Linux系统中文件名中带有空格问题分析
- Android Jetpack之DataBinding+ViewModel+LiveData+Room
- 重头系统的学习,不会咱就学!2014.6.18
- 计算机专业高级工程师考哪些专业,高级工程师职称考试项目有哪些