最近在研究一个话题,就是iptables 怎么利用hashlimit 和limit 结合限速使有效的带宽最大用户使用

测试环境:MTU=1492

                    eth1 (内网口)   eth0(公网出口)     

着先,明白hashlimit 各参数的意义

-m
  hashlimit
 --hashlimit-name
 --hashlimit
 --hashlimit-burst
 --hashlimit-mode
  srcip     (每个源地址IP为一个匹配项)
  dstip      (每个目的地址IP为一个匹配项)
  srcport    (每个源端口为一个匹配项)
  dstport   (每个目的端口为一个匹配项)
 --hashlimit-htable-expire

FORWARD default DROP

本实验只针对FORWARD  eth1

首先自定义BASE链,放过NEW,ESTABLISHED,RELATED,并使用hashlimit 进行第一次限速

script:

然后分别在FORWARD 用三个ip 进行测试

 

测试流理详细图

 

针对192.168.10.1 解释

    测试下载速度AVG 100/Kbps

    由于forward 链中对192.168.10.1 没有什么出任何限速,故限速体现在hashlimit

针对192.168.10.2 解释

  测试下载速度AVG 28/Kbps

  由于forward 链中对192.168.10.2 做出了limit 30/sec的限速,故限速体现在limit

针对192.168.10.3解释

测试下载速度为AVG 100Kbps

 它的速度限制来出hashlimit

 

结论:当hashlimit 同时存在时,以最小的为准

        hashlimit 比limit 更精确(请查阅相关资料)

经测试:  hashlimit 对-i eth1 state 状态包限速和实际速度大约存在三倍关系

hashlimit                                         下载速度AVG

10/sec                                               27/Kbps

20/sec                                               60/Kbps

30/sec                                              100/Kbps

40/sec                                              125/Kbps