[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Ограничение вх/исх скорости VPN подключения



On Tue, 2009-07-28 at 14:20 +0700, Vladi wrote:
Подскажите, есть ли способ ограничить скорость трафика одновременно исходящего и входящего.

Если у вас стоит vpn сервер между вашими клиентами и интернет, то для него любой трафик является исходящим (в какой-то момент. Понятно что сначала он приходит, потом уходит). Шейпить исходящий трафик советуют с
помощью дисциплины HTB.

К слову, хорошая дока: HTB 3 performance compared
http://luxik.cdi.cz/~devik/qos/htb/htb3perf/cbqhtb3perf.htm

Шейпить входящий трафик не советуют, это было бы нужно, насколько я понимаю, если бы и vpn сервер и torrent клиент были бы на одной и той же машине (что было бы очень странно, да и в этом случае входящий трафик лучше было бы шейпить с помощью torrnet клиента)


>> Зажал исходящий трафик (помечаю пакеты идущие от
>> vpn clients в internet и потом по htb их зажимаю до 30 кбит).
>> Работает :) Но хотелось бы выделить те же 200 кбит одному ip "на всё",

Не уверен, что правильно понял ваш вопрос. Тем не менее:

Когда ваши клиенты подключаются к openvpn, они получают новый IP, его можно сделать постоянным для каждого пользователя (берется из имени файла сертификата, если идет авторизация по x.509).

http://www.opennet.ru/base/net/openvpn_x509.txt.html


А шейпить можно не "eth0", а "tapX", который можно указать в конфиге openvpn:

ovpn.conf
local xx.xx.xx.xx
dev tapX                #<---
port 80
...
ifconfig                192.168.1.5 255.255.1.0
ifconfig-pool           192.168.1.8 192.168.1.9
...

ifconfig-pool - указывает пул адресов, которые будут выданы "бесхозным" клиентам (с ошибочным сертификатом) динамически (в этом варианте предполагается что таких быть не должно). Хотя можно дать и больший диапазон, если хотите всем давать каждый раз разный ip. Речь идет о внутренних ip 192... (их можно шейпить), внешний может быть один.

Пример конфига TC:

tap4_del
#!/bin/bash
tc qdisc del dev tap4 root

tap4_on
#!/bin/bash

tc qdisc add dev tap4 root handle 4: htb default  9944
tc class add dev tap4 parent 4: classid 4:9994  htb rate 1mbps burst 150k
tc class add dev tap4 parent 4:9994 classid 4:9944 htb rate 64kbps ceil 128kbps burst 150k
tc qdisc add dev tap4 parent 4:9944 handle 9944: sfq perturb 10
#...............................................................................................................
tc class add dev tap4 parent 4:9994 classid 4:41 htb rate 64kbps ceil 128kbps burst 150k tc class add dev tap4 parent 4:9994 classid 4:42 htb rate 64kbps ceil 128kbps burst 150k tc class add dev tap4 parent 4:9994 classid 4:43 htb rate 64kbps ceil 128kbps burst 150k
...
tc qdisc add dev tap4 parent 4:41 handle 41: sfq perturb 10
tc qdisc add dev tap4 parent 4:42 handle 42: sfq perturb 10
tc qdisc add dev tap4 parent 4:43 handle 43: sfq perturb 10
...
tc filter add dev tap4 parent 4: protocol ip prio 1 u32 match ip src 192.168.1.1 flowid 4:41 tc filter add dev tap4 parent 4: protocol ip prio 1 u32 match ip src 192.168.1.2 flowid 4:42 tc filter add dev tap4 parent 4: protocol ip prio 1 u32 match ip src 192.168.1.3 flowid 4:43

При этом вы можете и для eth0 иметь доп. правила, если они вам нужны.

Удачи.

--
Sincerely,
	Nicholas


Reply to: