LiFengMing LiFengMing
首页
云原生
中间件
工具导航
资源导航
  • 分类
  • 标签
  • 归档
关于作者
GitHub (opens new window)

LiFengMing

IT届李哥
首页
云原生
中间件
工具导航
资源导航
  • 分类
  • 标签
  • 归档
关于作者
GitHub (opens new window)
  • 编程语言

  • 问题排查手册

  • 容器编排技术

    • Linux 之 iptables 原理分析
      • K8s常见问题排查技巧
      • K8s应用存储与存储卷
      • k8s scheduler调度器原理以及核心源码分析
      • k8s scheduler调度算法及源码分析
      • k8s scheduler之拓展调度器
    • 云原生
    • 容器编排技术
    LiFengMing
    2021-10-16
    目录

    Linux 之 iptables 原理分析

    问题

    K8s中 Service 是怎么将Pod服务的端口?

    # iptables 的四表五链

    # 四表

    iptables 的四个表 iptable_filter,iptable_mangle,iptable_nat,iptable_raw,默认表filter(没有指定表的时候就是filter表)。

    • filter 表:
      • 用来对数据包进行过滤,具体的规则要求决定如何处理一个数据包。
      • 对应的内核模块为:iptable_filter,其表内包括三个链:input、forward、output;
    • nat 表:
      • nat 全称:network address translation 网络地址转换,主要用来修改数据包的 IP 地址、端口号信息。
      • 对应的内核模块为:iptable_nat,其表内包括三个链:prerouting、postrouting、output;
    • mangle 表:
      • 主要用来修改数据包的服务类型,生存周期,为数据包设置标记,实现流量整形、策略路由等。
      • 对应的内核模块为:iptable_mangle,其表内包括五个链:prerouting、postrouting、input、output、forward`;
    • raw 表:
      • 主要用来决定是否对数据包进行状态跟踪。
      • 对应的内核模块为:iptable_raw,其表内包括两个链:output、prerouting;

    # 五链

    iptables 的五个链 PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING。

    • input 链:当收到访问防火墙本机地址的数据包时,将应用此链中的规则;
    • output 链:当防火墙本机向外发送数据包时,将应用此链中的规则;
    • forward 链:当收到需要通过防火中转发给其他地址的数据包时,将应用此链中的规则,注意如果需要实现forward转发需要开启Linux内核中的ip_forward功能;
    • prerouting 链:在对数据包做路由选择之前,将应用此链中的规则;
    • postrouting 链:在对数据包做路由选择之后,将应用此链中的规则;

    # iptables 的工作原理

    Netfilter挂载点

    # iptables 的配置

    在了解清楚iptables的工作原理和每个表以及链的作用之后,我们就可以根据其特点进行针对性的配置。

    iptables 的基本语法命令格式

     iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]
    
    1
    • 表名、链名:指定iptables命令所操作的表和链,未指定表名时将默认使用filter表;
    • 管理选项:表示iptables规则的操作方式,比如:插入、增加、删除、查看等;
    • 匹配条件:指定要处理的数据包的特征,不符合指定条件的数据包不处理;
    • 控制类型:指数据包的处理方式,比如:允许accept、拒绝reject、丢弃drop、日志LOG等;
     iptables 命令的常用管理选项
     -A:在指定链的末尾添加一条新的规则
     -D:删除指定链中的某一条规则,可删除指定序号或具体内容
     -I:在指定链中插入一条新规则,未指定序号时默认作为第一条规则
     -R:修改、替换指定链中的某一条规则,可指定规则序号或具体内容
     -L:列出指定链中所有的规则,未指定链名,则列出表中的所有链
     -F:清空指定链中所有的规则,未指定链名,则清空表中的所有链
     -P:设置指定链的默认策略
     -n:使用数字形式显示输出结果
     -v:查看规则列表时显示详细的信息
     -h:查看命令帮助信息
     --line-numbers:查看规则列表时,同时显示规则在链中的顺序号
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    # 参考资料

    • https://www.cnblogs.com/zllong/p/7236881.html

    • https://www.netfilter.org/

    • http://ipset.netfilter.org/iptables.man.html#index

    • https://www.thegeekstuff.com/2011/01/iptables-fundamentals/

    #Linux#Kubernetes
    上次更新: 2025/01/19, 23:15:59
    K8s技术文档
    K8s常见问题排查技巧

    ← K8s技术文档 K8s常见问题排查技巧→

    最近更新
    01
    云原生资源
    05-25
    02
    快速搭建Spring项目
    03-27
    03
    kafka版本迭代说明
    03-11
    更多文章>
    Theme by Vdoing | Copyright © 2018-2025 LiFengMing | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式