当前位置: 首页 > news >正文

Linux实现Cisco风格ACL之空想

本来上周末想实现一个Cisco风格的Linux版本ACL,也就是说将rule绑定在Interface上而不是HOOK点,然而发现net_device的private data非常不好用,就把半拉子工作仍在那里了...其实即使实现了Cisco风格的ACL,还是基于Netfilter实现的,然而FORWARD上的ruleset就简单多了,变成了下面这个样子:
static unsigned int ipt_hook(unsigned int hook,      struct sk_buff *skb,      const struct net_device *in,      const struct net_device *out,      int (*okfn)(struct sk_buff *)) {    struct ruleset *rs = (struct ruleset *)get_obj(in->private, IDX_RULESET);    if(rs == NULL)       return NF_ACCEPT;    return rule_XXX(rs, hook, skb, in, out, okfn); }

这样效率的提供就不依赖iptables规则的配置顺序了,如果该接口上没有配置ruleset,则直接就ACCEPT了,将Interface从普通match提升到了一个ruleset宿主的位置。

       Cisco以接口的入站和出站方向控制所有流量,而Netfilter则在协议栈的5个位置控制所有流量,接口对于它来讲仅仅是一个match。无论在配置,在理解还是在效率上,Cisco的方式都更胜一筹,这一点上,Cisco真正的将用户配置接口和内部实现相分离了,实际上,Cisco IOS的内部实现估计也是类似Netfiler的那种。Netfilter就很不同,它的实现和iptables用户接口(ipt只是Netfilter的用户接口之一,很多其它机制也是Netfilter实现的,比如ipvs等)基本是一致的,初学者不得不彻底理解这5个HOOK,理解Chain,table等概念才能写出正确高效的规则。ipt的使用者无法集中精力去针对数据包做规则,不得不花费大量时间和精力来摆平ipt的chain,table,顺序之间的关系......



 本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1268865

相关文章:

  • Android自动化测试+性能监控预警系统搭建
  • Python 3.x 模块
  • java 不可不知的数据库知识-----事物
  • JavaScript 浏览器对象(三)
  • 命令行程序测试自动化
  • Linux命令行翻译工具
  • 保障邮件安全
  • Linux系统_Centos7下安装Nginx
  • 源码安装Apache服务器遇到的问题及解决方法
  • 优秀互联网高级测试工程师应该具备的能力
  • raid5实现原理
  • Go 可变参数和切片
  • Tomcat7 catalina.out 日志分割
  • storm drpc实例
  • 监控CPU(一)
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • ES6--对象的扩展
  • extract-text-webpack-plugin用法
  • IDEA常用插件整理
  • JSONP原理
  • Mybatis初体验
  • SSH 免密登录
  • sublime配置文件
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 第2章 网络文档
  • 使用SAX解析XML
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • ###C语言程序设计-----C语言学习(6)#
  • #100天计划# 2013年9月29日
  • $GOPATH/go.mod exists but should not goland
  • $L^p$ 调和函数恒为零
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (8)STL算法之替换
  • (二)fiber的基本认识
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (算法)前K大的和
  • (转)h264中avc和flv数据的解析
  • (轉)JSON.stringify 语法实例讲解
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • @Autowired注解的实现原理
  • [\u4e00-\u9fa5] //匹配中文字符
  • [2024] 十大免费电脑数据恢复软件——轻松恢复电脑上已删除文件
  • [Asp.net mvc]国际化
  • [C/C++]数据结构 深入挖掘环形链表问题
  • [CVPR2021]Birds of a Feather: Capturing Avian Shape Models from Images
  • [Excel VBA]单元格区域引用方式的小结
  • [HeadFrist-HTMLCSS学习笔记][第一章Web语言:开始了解HTML]