限制networking带宽为一个IP

对于一个stream量pipe理应用我应该限制带宽为客户的IP地址,每个IP有不同的限制

如何使用tc-tbf作为特定的ip地址

或者是其他解决scheme?

为了限制单个IP地址的带宽,我使用了HTB。 这里有一些有用的链接:

  • 主页: http : //luxik.cdi.cz/~devik/qos/htb/
  • 用户指南: http : //luxik.cdi.cz/~devik/qos/htb/manual/userg.htm
  • tcng是描述交通控制结构的一种相对简单的方法: http : //www.faqs.org/docs/Linux-HOWTO/Traffic-Control-tcng-HTB-HOWTO.html

作为一个简单的例子,为了限制存储在CLIENT_IP shellvariables中的单个IP地址的带宽,其限制如下:

  • 设备名称= eth0
  • 设备可用/可用的总带宽= 1000kbps,最高可达1500kbps
  • 默认带宽(对于不属于我们的filter的客户端)= 1kbps到2kbps
  • CLIENT_IP的带宽= 100kbps
  • CLIENT_IP的最大带宽(如果有更多可用带宽)= 200kbps

下面的命令就足够了:

tc qdisc add dev eth0 root handle 1: htb default 10 tc class add dev eth0 parent 1: classid 1:1 htb rate 1000kbps ceil 1500kbps tc class add dev eth0 parent 1:1 classid 1:10 htb rate 1kbps ceil 2kbps tc class add dev eth0 parent 1:1 classid 1:11 htb rate 100kbps ceil 200kbps tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src ${CLIENT_IP} flowid 1:11 

与您的问题半相关,限制客户的带宽不可能是最好的解决scheme,因为它必须以客户为基础。 您可能希望指定任何单个客户端可以使用的最大带宽量,而不是通过ip地址指定。

你最好的select是服务质量(QoS),并根据stream量types指定不同的服务优先级。

据我所知,你不能使用tc-tbf作为特定的IP地址。

http://man.he.net/man8/tc-tbf

如果你只是想提高性能,看看这篇文章。

http://lists.debian.org/debian-firewall/2005/07/msg00088.html

本文介绍如何使用iptables来限制新的连接: http : //www.debian-administration.org/articles/187

您可以将有状态检查删除,而是通过源IP进行限制。

几天后我做到了

我使用openvpn而不是freeradius

 tc qdisc del dev br0 root tc qdisc add dev br0 root handle 1: htb tc class add dev br0 parent 1: classid 1:1 htb rate "LineBandwidth"kbit tc class add dev br0 parent 1:1 classid 1:10 htb rate "MinUserBand"kbit ceil "MaxUserBand"kbit prio 2 #----- bandwidth and classid tc filter add dev br0 parent 1:0 prio 2 protocol ip handle 10 fw flowid 1:10 #----- MarkID1 and classId iptables -t mangle -A POSTROUTING -d "RealUserIP" -j MARK --set-mark 10 #----- RealIP and markID1 tc qdisc add dev br0 ingress tc filter add dev br0 parent ffff: protocol ip handle 50 fw police rate "MinUserBand"kbit mtu 12k burst 10k drop #----- BandWidth and MarkID2 iptables -t mangle -A PREROUTING -s "RealUserIP" -j MARK --set-mark 50 #----- RealIP and MarkID2