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,具体原理是什么?一学就会相关推荐

  1. K8s系列之:网络原理

    K8s系列之:网络原理 一.K8s网络模型 二.Docker的网络模型 三.网络的命名空间 1.网络命名空间的实现 2.网络命名空间的操作 3.网络命名空间的一些技巧 四.Veth设备对 1.Veth ...

  2. linux防火墙究竟如何使用?iptables的原理与简单应用

    iptables的原理与简单应用 1. 什么是防火墙? 1.1 netfilter和iptables的关系 2.iptables的基本概念 2.1 链的概念 2.2 表的概念 2.3 表链的关系 2. ...

  3. babel原理_带你了解 snowpack 原理,你还学得动么(下)

    作者:AlienZHOU 转发链接:https://zhuanlan.zhihu.com/p/149351900 目录 带你了解 snowpack 原理,你还学得动么(上) 带你了解 snowpack ...

  4. 朱娜斐编译原理复习笔记-北京工业大学软件学院

    朱娜婓编译原理学习笔记 说明 笔记大部分内容来自参考资料[1], 看了B站上中科大华保健老师的编译原理课视频(参考资料[2]),补充完善了DFA的代码表示.Hopcroft 算法.文法重写.LL(1) ...

  5. K8S之ipvs负载均衡原理

    文章目录 前言 一.ipvs vs iptables: 二.ipvs kube-proxy原理分析: 总结 前言 IPVS简介: 尽管 Kubernetes 在版本v1.6中已经支持5000个节点,但 ...

  6. Iptables防火墙原理

    一.IPTABLES概念 iptables是隔离主机以及网络的工具,通过自己设定的规则以及处理动作对数据报文进行检测以及处理.从设备上分类,防火墙分为软件防火墙.硬件防火墙.芯片级防火墙.从技术上分类 ...

  7. Linux笔记-iptables规则原理和组成

    Netfilter Netfilter:是Linux操作系统内核层内部的一个数据包处理模块. Hook point:数据包在Netfilter中的挂载点(PRE_ROUTING.INPUT.OUTPU ...

  8. k8s里面的iptables和ipvs有什么区别?怎么选?为什么选择ipvs

    在 Kubernetes 中,Iptables 和 IPVS 都是负责流量转发的工具,但是在实现上有一些区别,可以根据不同的场景来选择使用. Iptables 是 Linux 系统内置的一个工具,可以 ...

  9. k8s安装工具:sealos设计原理及离线包结构分析

    执行流程 在执行机器上生成证书和kubeconfig文件 在执行机器上wget下载离线包和sealos二进制使用scp拷贝到目标机器上(masters和nodes) 在master0上执行kubead ...

最新文章

  1. JVM年轻代,老年代,永久代详解​​​​​​​
  2. ubuntu16.04开机卡死解决方案
  3. 23-爬虫之scrapy框架增量式实时监测数据爬取10
  4. 洛谷2619/bzoj2654 Tree(凸优化+MST)
  5. 分区变为RAW的解决办法
  6. Apple Mac OS X每日一技巧016:MacBook电源线如何缠绕
  7. 27. Spring Boot 部署与服务配置
  8. Virtual Serial Port Driver虚拟串口vspd v7.2 下载及破解方法
  9. bool类型头文件_C++ Primer Chapter2 变量和基本类型
  10. 凯撒密码的超详细讲解
  11. 配置管理工具SVN的使用
  12. apdu 移动sim_做移动sim卡读写程序, 用APDU指令, 怎么给白卡写入iccid和IMSI?
  13. C++中 二维数组的定义
  14. 云计算的特征:基本功能
  15. Adobe Dreamweaver CS6快捷键使用
  16. 什么是类?以及类的分类
  17. 计算机里面的固态硬盘,怎么判断电脑里面的是不是固态硬盘?
  18. Hyper-V新建Windows7虚拟机
  19. 富途客户端软件测试笔试and面试
  20. 敏捷 Scrum 大师班认证培训的终极方案 | The Ultimate Agile Scrum Master Certification Training

热门文章

  1. 如何做数据分析报告?
  2. HDU 6461 hzy 和zsl 的生存挑战
  3. 用少量箭射爆气球,leetcode习题
  4. 爱普生Epson Stylus SX235W 一体机驱动
  5. 讯飞输入法android版升级日志,讯飞输入法Android版7.0 实力解锁三大输入难题
  6. [Go实战]怎么写测试类,运用testing.T
  7. 关于Linux系统中文件名中带有空格问题分析
  8. Android Jetpack之DataBinding+ViewModel+LiveData+Room
  9. 重头系统的学习,不会咱就学!2014.6.18
  10. 计算机专业高级工程师考哪些专业,高级工程师职称考试项目有哪些