前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >k8s使用的iptables,具体原理是什么?深入浅出

k8s使用的iptables,具体原理是什么?深入浅出

原创
作者头像
hugo_lei
发布2022-08-05 16:22:57
8980
发布2022-08-05 16:22:57
举报

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有:

● 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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. netfilter
    • 1.1. iptables和netfilter的关系
    • 2. netfilter的5个hook
      • 2.1. 数据包常见的三种hook路径
      • 3. hook回调函数:rule
        • 3.1. match
          • 3.2. target
          • 4. table:对rule进行分类
          • 5. hook如何调rule:hook调chain,chain将rule组织成链
          • 6. 自定义chain
          • 7. 总结
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档