IPTables六—— IPTable规则优化IPSet

简介: 六、IPSetiptables在进行包过滤的时候,对每个数据包都过滤一遍iptables中的规则。假设我们有如下三条规则:-s 1.1.1.1 -p tcp accpet-s 2.2.2.2 -p tcp accpet-s 3.3.3.3 -p tcp accpet那么当一个数据包源地址是3.3.3.3的时候,它首先去匹配第一条规则,不匹配再匹配第二条,最后在第三条匹配中了。

六、IPSet

iptables在进行包过滤的时候,对每个数据包都过滤一遍iptables中的规则。假设我们有如下三条规则:

-s 1.1.1.1 -p tcp accpet

-s 2.2.2.2 -p tcp accpet

-s 3.3.3.3 -p tcp accpet

那么当一个数据包源地址是3.3.3.3的时候,它首先去匹配第一条规则,不匹配再匹配第二条,最后在第三条匹配中了。想一想如果我有类似的100条规则呢?内核最差的情况是不是对一个数据包需要做100个规则匹配,这是相当没有效率的事情。在上述的例子中,其动作都是一样的能不能把这三条规则总结成一条规则呢 ?有那就是IPSet,它将多条iptable规则富集到一个ip set里,这个ip set使用hash或者图来组织,在netfilter过滤的时候,采用hash或者图方式规则运算进行查找,比原来的iptable一个顺序的规则查找方法运算速度提升很多,特别是规则条目很多的时候。

1、IPSet支持的匹配集

1.1 bitmap

支持bitmap:ip bimap:ip,mac和bitmap:port

支持hash:ip,hash:net ,hash:ip,port,net hash:ip,port,ip hash:net,port hash:net,if

支持list

2、使用例子:

针对上例,我们使用如下方法设置ipset

IPSet -N zxy_set hash:ip  hashsize 256 maxelem 1024

IPSet add zxy_set 1.1.1.1

IPSet add zxy_set 2.2.2.2

IPSet add zxy_set 3.3.3.3

Iptable -I INPUT -m set --match-set zxy_set src -p tcp -j Accept

目录
相关文章
|
负载均衡 安全 网络虚拟化
|
JavaScript 前端开发 算法
设计一个简单的JavaScript版“俄罗斯方块”游戏的基本逻辑流程。
```md 设计JavaScript版俄罗斯方块游戏涉及初始化环境、创建游戏容器、管理变量、加载音效。游戏循环中生成方块、键盘控制移动与旋转、碰撞锁定、行消除及分数更新。当游戏区域填满时结束游戏,显示结束画面。还包括暂停、重置等辅助功能。伪代码示例展示了核心逻辑,实际实现需考虑更多细节和用户体验增强。 ```
531 3
|
机器学习/深度学习 PyTorch TensorFlow
|
10月前
|
缓存 监控 负载均衡
如何提升 API 性能:来自 Java 和测试开发者的优化建议
本文探讨了如何优化API响应时间,提升用户体验。通过缓存(如Redis/Memcached)、减少数据负载(REST过滤字段或GraphQL精确请求)、负载均衡(Nginx/AWS等工具)、数据压缩(Gzip/Brotli)、限流节流、监控性能(Apipost/New Relic等工具)、升级基础设施、减少第三方依赖、优化数据库查询及采用异步处理等方式,可显著提高API速度。快速响应的API不仅让用户满意,还能增强应用整体性能。
|
JavaScript 前端开发 开发工具
Flutter&鸿蒙next 中如何实现 WebView【跳、显、适、反】等一些基础问题
在 Flutter 项目中集成 WebView 可以展示网页或进行在线操作。本文介绍了如何添加依赖、配置平台权限、创建 WebView 页面、适配不同机型、处理页面间参数传递等详细步骤,帮助开发者高效实现 WebView 功能,提升用户体验。
725 4
|
Java 开发者
使用Calendar.add进行日期计算
使用Calendar.add进行日期计算
|
机器学习/深度学习 数据采集 算法
【MATLAB】PSO_BP神经网络回归预测(多输入多输出)算法原理
【MATLAB】PSO_BP神经网络回归预测(多输入多输出)算法原理
605 3
keepalived的抢占与非抢占模式
keepalived的抢占与非抢占模式
619 0
|
人工智能 达摩院 API
|
Java Linux Go
知识分享之Golang——go-i18n国际化组件
知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。 知识分享系列目前包含Java、Golang、Linux、Docker等等。
1239 0
知识分享之Golang——go-i18n国际化组件