我们有一个很棒的 squid 代理和 dansguardian 用于过滤,它们都运行得很好。有没有简单的方法来限制总带宽使用量?我想将 squid 用户互联网使用量的最大数量设置为 1200,因为我们的总带宽是 2000,我需要剩余的带宽来确保其他服务(如 voip)能够正常工作,而不会出现与我们连接的“互联网端”的大量下载相关的故障和类似问题。我的意思是总 squid 带宽限制,而不是基于用户的限制。
非常感谢大家。
答案1
您可以使用类似这样的规则来设置形状:
tc qdisc del dev eth0 root
tc qdisc add dev eth0 root handle 1: htb default 1 r2q 160
tc class add dev eth0 parent 1: classid 1:1 htb rate 2000kbit burst 1k
tc class add dev eth0 parent 1:1 classid 1:2 htb rate 2000kbit ceil 2000kbit burst 1k
tc class add dev eth0 parent 1:1 classid 1:3 htb rate 1200kbit ceil 1200kbit burst 1k
tc qdisc add dev eth0 parent 1:2 handle 2: sfq perturb 10
tc qdisc add dev eth0 parent 1:3 handle 3: sfq perturb 10
然后,您可以使用 iptables 将数据包分为以下几类:
iptables -t mangle -A POSTROUTING -o eth0 --set-class 1:2
iptables -t mangle -A POSTROUTING -o eth0 -m tcp -p tcp --dport 80 -j CLASSIFY --set-class 1:3
请注意,设置类的是最后匹配的规则,当一条规则匹配时,它不会短路。我花了一段时间才理解这一点。