在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