问题现象:使用ip6tables 添加端口过滤规则,只允许指定端口IPv6报文进来,测试结果显示如果是分片报文,只有第一个分片报文能够收到,后续分片会被丢弃。

内核版本:3.4.39

问题原因: 因为同样的规则如果是IPv4分片报文则能够生效,通过分析内核源码,发现问题出在netfilter IPv6连接跟踪模块。

netfilter IPv4 连接跟踪模块会对分片报文进行重组处理使得系统网络协议栈处理的是重组报文,因为iptables添加的规则优先级在连接跟踪后面,所以IPv4 的端口过滤能够生效,因为处理的是重组报文。IPv6的连接跟踪功能同样会出重组分片报文,不过重组后的报文只有netfilter 连接跟踪自己可见,网络协议栈处理的仍然是分片报文,这就使得ip6tables 规则处理的是分片报文。

解决方法:在Linux内核官网上查找更高的版本发现,在3.12.4版本上有一个补丁,这个补丁的作用就是使得IPv6 连接跟踪模块重组报文后直接传递给网络协议栈使用,这样ip6tables就能够基于端口过滤分片报文了。

补丁地址:https://github.com/torvalds/linux/commit/6aafeef03b9d9ecf255f3a80ed85ee070260e1ae#diff-4ee79b665234e6518f6f34a107032118

注意事项:该补丁修改了skbuff.h和skbuff.c文件,为了和现有内核版本兼容,不能够直接拿来使用,只需要将连接跟踪模块相关的处理去掉就ok了。

author  Jiri Pirko <jiri@resnulli.us>    2013-11-06 17:52:20 +0100
committer   David S. Miller <davem@davemloft.net>    2013-11-11 00:19:35 -0500
commit  6aafeef03b9d9ecf255f3a80ed85ee070260e1ae (patch)
tree    48c7f8ff1709c9874342c02c7039d4431a00b333
parent  9037c3579a277f3a23ba476664629fda8c35f7c4 (diff)
download    linux-6aafeef03b9d9ecf255f3a80ed85ee070260e1ae.tar.gz
netfilter: push reasm skb through instead of original frag skbs

ip6tables 无法基于端口过滤IPv6 分片报文问题解决相关推荐

  1. tcp/ip 协议栈Linux源码分析五 IPv6分片报文重组分析一

    做防火墙模块的时候遇到过IPv6分片报文处理的问题是,当时的问题是netfilter无法基于传输层的端口拦截IPv6分片报文,但是IPv4的分片报文可以.分析了内核源码得知是因为netfilter的连 ...

  2. tcp/ip 协议栈Linux内核源码分析九 IPv6分片ip6_fragment 分析

    内核版本:3.4.39 IPv6的分片流程和IPv4基本一致,这一点内核源码作者也说了.流程比较简单,分片的时候判断是否满足快速分片,满足的话直接一个接一个加上分片扩展选项发送出去,不满足的话就只能走 ...

  3. BPF高阶 - 使用BPF过滤固定特征报文

    这篇文章主要介绍如何使用BPF过滤固定特征报文 参考文章:https://www.freebsd.org/cgi/man.cgi?query=bpf&sektion=4&manpath ...

  4. 技术干货 | 人大金仓KFS基于分区索引的分片入库技术解析

    在之前的文章<技术干货:人大金仓KFS精准过滤和分片并行入库技术解析>中,KFS利用分片并行入库技术,解决了某金融POC数据同步项目中数据入库持续积压问题.经过优化后,在200并发的压测场 ...

  5. MySQL 基于MyCAT配置数据分片

    目录 MySQL 基于MyCAT配置数据分片 相关概念 分库/分表 垂直分割 水平分割 MyCAT介绍 软件介绍 分片规则 工作过程 部署MyCAT服务 环境部署 拓部结构 IP规划 部署MyCAT服 ...

  6. IP分片报文的接收与重组

    对于长度超过接口MTU的数据包,需要进行分片处理,IP报头中与分片相关的字段有如下几个: Identification       -  用来确认不同的分片是否属于同一个IP报文: Flags     ...

  7. linux查找数据包contr,基于Linux防火墙的P2P报文识别研究-计算机技术专业论文.docx...

    基于Linux防火墙的P2P报文识别研究-计算机技术专业论文 掣哪炒I掣j!:|l哕必磐 掣哪炒I掣j!:|l哕必磐Y1 9 1 7709 原创性声明 本人声明,所呈交的学位论文是本人在导师指导下进行 ...

  8. 思科服务器查看生成树协议,思科基于端口的生成树协议命令

    思科基于端口的生成树协议命令 [命令格式]set port [portlist|all] spanning-tree enable [使用指南]该命令用于使能基于端口的生成树协议.参数为交换机物理端口 ...

  9. 技术干货 | 人大金仓KFS精准过滤和分片并行入库技术解析

    "技术干货"是人大金仓推出的系列主题内容.本期展示的是人大金仓KFS V2.0通过精准过滤和基于表的分片并行入库特性来提升数据的入库效率,打破传统数据同步性能瓶颈,为用户提供极致高 ...

最新文章

  1. Python培训分享:Python发展前景怎么样?
  2. DNS Serv管理与维护
  3. Hadoop之Storm命令
  4. 算法提高课-搜索-Flood fill算法-AcWing 1098. 城堡问题:flood fill、bfs
  5. java enum 关联_Java:如果EnUM常量在本质上是静态的,那么它如何可以拥有与其相关联的构造函数和方法...
  6. 牛客题霸 [子数组最大乘积] C++题解/答案
  7. mysql的on和in用法_数据库中in、on、with的用法及示例。
  8. page对保护的作用
  9. (51)FPGA状态机描述(四段式)
  10. 为什么SpringBoot中main方法执行完毕后程序不会直接退出呢
  11. kali安装步骤失败 选择并安装软件_【完全手册】3dmax2020软件下载和安装步骤教程@模渲大师技术部...
  12. python爬电影_零基础Python爬虫实现(爬取最新电影排行)
  13. 一种保护应用程序的方法 模拟Windows PE加载器,从内存资源中加载DLL
  14. 力扣-面试题 16.10. 生存人数
  15. Adobe Premiere(Pr视频剪辑)下载安装
  16. android平板生产力工具,重塑应用生态,让安卓平板成为生产力工具:华为MatePad Pro简体验!...
  17. 2019年规划与目标
  18. 倍加福光电传感器OBE10M-18GM60-SE5-V1
  19. FLOPS, FLOPs and MACs
  20. 2023年最新版kali linux安装教程

热门文章

  1. [projectEuler.net]12
  2. 不要让海浪中奔腾的豪情任岁月摧折,不要让江风中许下的誓言随流水消逝
  3. python copy模块_python日记第四章:python文件copy模块shutil
  4. 概率模型分子动力学模拟五元环吡咯C4H5N
  5. Paper Reading: Papers in Frontiers of NLP 2018 collection
  6. mysql悲观锁只用于读取吗_MySQL中悲观锁和乐观锁到底是什么?
  7. 【Matlab 控制】函数调用函数
  8. 玩转Mixly – 6、Arduino AVR编程 之 文本
  9. 2021/6/20~22 每天学习python 30分钟 -了解python - python的运算符
  10. android:persistent属性