Почасовой доступ с ограничением по скорости

Технические вопросы по UTM 5.0
Ответить
jekahawk
Сообщения: 38
Зарегистрирован: Сб авг 20, 2005 02:10

Почасовой доступ с ограничением по скорости

Сообщение jekahawk »

Использую UTM5 15 билд.
ASPLinux 9.2
PoPToP-pptpd
pppd

VPN настроен и работает отлично. Оплата за потребленный трафик.

Возникла задача сделать почасовой доступ с ограничением по скорости в 32 и 64 Кбит.

Почитав необходимые материалы вообще, на сайте нетапа и тут, на форуме, пришел к выводу, что проще это сделать так... Маркировка пакетов в iptables меня не устраивает, поэтому...

С ограничением по скорости вопрос решился только через ppp.
Т.е. в дополнение к файлам ip-up и ip-down создал ip-up.local и ip-down.local, соответственно.

ip-up.local:
#!/bin/bash
# This file should not be modified -- make local changes to
# /etc/ppp/ip-up.local instead

PATH=/sbin:/usr/sbin:/bin:/usr/bin
export PATH

case "$5" in
172.16.16.1)
#IP-адрес, который необходимо шейпить
tc qdisc add dev $1 root handle 1: htb
tc class add dev $1 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit burst 200k
tc class add dev $1 parent 1:1 classid 1:10 htb rate 32kbit burst 4k
tc filter add dev $1 parent 1: protocol ip prio 3 u32 match ip dst $5 classid 1:10
;;
*)
esac

exit 0
Т.е. я решил использовать iproute2 и htb (CBQ не подходит, так как неизвестен заранее интерфейс ppp). После поднятия ррр-интерфейса, скрипт извлекает выданный IP-адрес, создает необходимые устройство, классы и фильтр для него с указанной скоростью шейпинга.

ip-down.local:
#!/bin/bash
# This file should not be modified -- make local changes to
# /etc/ppp/ip-down.local instead

PATH=/sbin:/usr/sbin:/bin:/usr/bin
export PATH

case $1 in
172.16.16.1)
/sbin/tc qdisc del dev $1 root
;;
*)
esac
exit 0
После отключения абонента, всё приводится в исходное состояние.

Это работает, хотя, возможно, и в корне неправильно. Если кто-то может поправить или подсказать - буду только рад!

Далее почасовка....

Завел нового абонента, создал услугу коммутируемого доступа, назначил ее абоненту. Тариф не создавал.

Коннекчусь к серверу через VPN-соединение, соединение устанавливается. Деньги снимаются согласнопроведенному времени. Всё как надо.

Но!

Так как явно нигде не указан IP абонента (он выдается из пула), следовательно iptables ничего не знает об этом, следовательно в инет не пускают. И как я понял, в случае коммутируемого доступа, передать хоть какой-нибудь IP через правила фаервола нельзя.

Или я неправ?

Получается, что весь пул адресов нужно заранее открывать в фаерволе??? И доступ с этих адресов в инет будет всегда? В принципе, это не проблема, т.к. используется коммутируемый доступ, но всё же!

Кто-то решал подобную задачу в целом и частности???

Буду весьма рад и благодарен услышать разносторонние мнения, в том числе и от разработчиков биллинга.

aospan
NetUP Team
Сообщения: 1639
Зарегистрирован: Чт янв 13, 2005 20:30

Сообщение aospan »

В последнем билде есть "фича", которая привязывает динамически IP-адрес на слинк "Передача IP-трафика". Таким образом на пользователя будет привязан именно тот адрес, который ему именно сейчас выдан.
Логин и пароль он при этом вводит от услуги "Диал-ап" - соответсвенно на пользователе "висит" две услуги.

Ответить