热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

资料整理关于limithashlimit配置iptables限速配置

这几天正在捣鼓防火墙,用到了hashlimit模块。Google了一圈发现相关的文档无论英文还是中文都很少,所以我就把自己的折腾的心得记录下来吧。hashlimit是iptables的一个匹配模块,用它结合iptables的其它命令可以实现限速的功能。(注意,单独hashlimit模

 

这几天正在捣鼓防火墙,用到了hashlimit模块。Google了一圈发现相关的文档无论英文还

是中文都很少,

所以我就把自己的折腾的心得记录下来吧。

hashlimit是iptables的一个匹配模块,用它结合iptables的其它命令可以实现限速的功能

。(注意,单独hashlimit模块

是无法限速的)。

不过首先必须明确,hashlimit本身只是一个“匹配”模块。我们知道,iptables的基本原

理是“匹配--处理”,hashlimit在

这个工作过程中只能起到匹配的作用,它本身是无法对网络数据包进行任何处理的。我看到

网上有些hashlimit的例子里面说只

用一条包含hashlimit匹配规则的iptables语句就可以实现限速,那是错误的。

实际上,利用hashlimit来限速需要包括两个步骤。

1.对符合hashlimit匹配规则包放行

2.丢弃/拒绝未放行的包

下面是一个简单的例子:

iptables -A INPUT -p tcp --dport 22 -m hashlimit --hashlimit-name ssh

--hashlimit 5/sec --hashlimit-burst 10 --hashlimit-mode srcip

--hashlimit-htable-expire 90000 -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -j DROP

然后,我们来着重讲讲hashlimit模块具体是如何工作的。hashlimit的匹配是基于令牌桶

(Token bucket)模型的。令牌桶是一种网络通讯中常见的缓冲区工作原理,它有两个重要

的参数,令牌桶容量n和令牌产生速率s。我们可以把令牌当成是门票,而令牌桶则是负责制

作和发放门票的管理员,它手里最多有n张令牌。一开始,管理员开始手里有n张令牌。每当

一个数据包到达后,管理员就看看手里是否还有可用的令牌。如果有,就把令牌发给这个数

据包,hashlimit就告诉iptables,这个数据包被匹配了。而当管理员把手上所有的令牌都

发完了,再来的数据包就拿不到令牌了。这时,hashlimit模块就告诉iptables,这个数据

包不能被匹配。

除了发放令牌之外,只要令牌桶中的令牌数量少于n,它就会以速率s来产生新的令牌,直到

令牌数量到达n为止。

通过令牌桶机制,即可以有效的控制单位时间内通过(匹配)的数据包数量,又可以容许短

时间内突发的大量数据包的通过(只要数据包数量不超过令牌桶n)。

hashlimit模块提供了两个参数--hashlimit和--hashlimit-burst,分别对应于令牌产生速

率和令牌桶容量。

除了令牌桶模型外,hashlimit匹配的另外一个重要概念是匹配项。在hashlimit中,每个匹

配项拥有一个单独的令牌桶,执行独立的匹配计算。通过hashlimit的--hashlimit-mode参

数,你可以指定四种匹配项及其组合,即:srcip(每个源地址IP为一个匹配项),dstip(

每个目的地址IP为一个匹配项),srcport(每个源端口为一个匹配项),dstport(每个目

的端口为一个匹配项)

除了前面介绍的三个参数外,hashlimit还有一个必须要用的参数,即--hashlimit-name。

hashlimit会在/proc/net/ipt_hashlimit目录中,为每个调用了hashlimit模块的iptables

命令建立一个文件,其中保存着各匹配项的信息。--hashlimit-name参数即用来指定该文件

的文件名。

好了,以上我们已经介绍了hashlimit的工作原理和相应的参数,下面我们来看几个例子。

首先是前面的那个例子:

iptables -A INPUT -p tcp --dport 22 -m hashlimit --hashlimit-name ssh

推荐阅读
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • Python脚本编写创建输出数据库并添加模型和场数据的方法
    本文介绍了使用Python脚本编写创建输出数据库并添加模型数据和场数据的方法。首先导入相应模块,然后创建输出数据库并添加材料属性、截面、部件实例、分析步和帧、节点和单元等对象。接着向输出数据库中添加场数据和历程数据,本例中只添加了节点位移。最后保存数据库文件并关闭文件。文章还提供了部分代码和Abaqus操作步骤。另外,作者还建立了关于Abaqus的学习交流群,欢迎加入并提问。 ... [详细]
  • 本文介绍了brain的意思、读音、翻译、用法、发音、词组、同反义词等内容,以及脑新东方在线英语词典的相关信息。还包括了brain的词汇搭配、形容词和名词的用法,以及与brain相关的短语和词组。此外,还介绍了与brain相关的医学术语和智囊团等相关内容。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 本文介绍了使用SSH免密登录的步骤,包括生成公私钥、传递公钥给被登录机、修改文件权限的操作。同时提醒用户注意私钥的传递方式,建议使用U盘等离线方式传递。 ... [详细]
  • Java学习笔记之使用反射+泛型构建通用DAO
    本文介绍了使用反射和泛型构建通用DAO的方法,通过减少代码冗余度来提高开发效率。通过示例说明了如何使用反射和泛型来实现对不同表的相同操作,从而避免重复编写相似的代码。该方法可以在Java学习中起到较大的帮助作用。 ... [详细]
  • 原理:dismiss再弹出,把dialog设为全局对象。if(dialog!null&&dialog.isShowing()&&!(Activity.)isFinishing()) ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 本文详细介绍了在Centos7上部署安装zabbix5.0的步骤和注意事项,包括准备工作、获取所需的yum源、关闭防火墙和SELINUX等。提供了一步一步的操作指南,帮助读者顺利完成安装过程。 ... [详细]
  • GSIOpenSSH PAM_USER 安全绕过漏洞
    漏洞名称:GSI-OpenSSHPAM_USER安全绕过漏洞CNNVD编号:CNNVD-201304-097发布时间:2013-04-09 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
  •     这里使用自己编译的hadoop-2.7.0版本部署在windows上,记得几年前,部署hadoop需要借助于cygwin,还需要开启ssh服务,最近发现,原来不需要借助cy ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
  • Hadoop2.6.0 + 云centos +伪分布式只谈部署
    3.0.3玩不好,现将2.6.0tar.gz上传到usr,chmod-Rhadoop:hadophadoop-2.6.0,rm掉3.0.32.在etcp ... [详细]
author-avatar
娜一刻冻杰幸福
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有