stream量整形出站客户端使用tc / iptables源IP

我的问题是我试图限制服务器上的用户带宽,想知道这样做的最好方法。 在深入研究tc / iptables之前,我想知道是否可以得到任何build议,如果有人可以给我一个示例configuration,可能是我可以玩的东西,这将不胜感激。

从我所了解的可以用tc制定规则,然后使用mark语句在iptables中应用规则。 有些人说使用破解或输出,但不能100%确定哪一个是最好的,哪怕是最重要的。 我相信与tc我将使用htb(令牌桶来限制带宽),但人们说有性能权衡,我正在寻找最低的延迟方法。 这些用户不在内部networking上,而是连接到服务器。

我有两种types的用户,所以只需要有两个规则来限制它们。 到目前为止,我所看到的是tc / iptables组合是我想要的,但是我可以为替代scheme提供build议。

我认为iptables的命令将如下所示

带宽限制规则1

iptables -A PREROUTING -s xxx.xxx.xxx.xxx -t mangle -j MARK --set-mark 0x1 

带宽限制规则2

 iptables -A PREROUTING -s xxx.xxx.xxx.xxx -t mangle -j MARK --set-mark 0x2 

我想要发生的事情

  • 用户进入eth0(他们的IP将是已知的,而不是随机的IP)
  • 从服务器请求信息
  • 服务器应用规则将eth0上的信息发回给用户

使用tc是在linux中进行整形的正确方法。 最好的文档是LARTC 。 首先,您需要了解您将形成什么样的stream量 – 出口或入口。 之后,您必须select一个接口来做到这一点(在NAT之前根据源地址对输出接口进行形成,在NAT之后基于目的地址在本地接口上输出stream量更简单)。 也可能根本没有iptables规则,例如,如果你为两种types的用户使用不同的接口(可能是VLAN接口)。 之后,你应该在你select的接口上设置qdisc。 如果您的用户按接口划分,或者如果您使用一个接口为less数用户types划分带宽,则可能是无阶级的。 之后,你必须设置一个filter(如果你使用有特色的scheme)。 下面的链接中有很多例子。 祝你好运…