在Linux下使用xl2tpd或pptpd架设VPN服务后,如果需要对拨入的用户进行限速可以用shell脚本实现。笔者使用tc进行限速,该命令一般默认于Linux中。Linux的VPN在每一个用户拨入后,会建立一个名为ppp+数字编号的连接并加载 /etc/ppp/ip-up 脚本,因此我们可以把限速的脚本写在这个文件里,每次ppp连接建立执行脚本为新连接应用限速规则。
具体方法是在ip-up的文件末尾加入如下几行:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
down=400kbps upload=400kbps iprange=192.168.8.0/24 #down /sbin/tc qdisc del dev $1 root /sbin/tc qdisc add dev $1 root handle 2:0 htb /sbin/tc class add dev $1 parent 2:1 classid 2:10 htb rate $down /sbin/tc class add dev $1 parent 2:2 classid 2:11 htb rate 1024kbps /sbin/tc qdisc add dev $1 parent 2:10 handle 1: sfq perturb 1 /sbin/tc filter add dev $1 protocol ip parent 2:0 u32 match ip dst $iprange flowid 2:10 #upload /sbin/tc qdisc add dev $1 handle ffff: ingress /sbin/tc filter add dev $1 parent ffff: protocol ip u32 match ip dst $iprange police rate $upload burst 100k drop flowid 2:11 |
其中down为下行速率,upload为上行速率,这里的400就是400k/s,iprange是你为拨入用户分配的ip位址,该位址以外的ip将不受限速规则影响。以上方式笔者在Ubuntu测试通过。
======
kujou_rin