В общем были задачи, которые были успешно решены изменением ip-up и ip-down
Вот что было добавлено, изменено:
- Блокирование одного или несколько IP узлов (черный список) для определённых аккаунтов
- Блокирование всех узлов и разрешение нужных IP узлов (белый список) для определенных аккаунтов
- Привязка аккаунта к определенному MAC адресу
- Немного доработан шейпер - более справедливое распределение.
- Добавлена защита от дурака в которой аккаунт не сможет подключиться если его скорость не указана
- Добавлена приоритетные скорости
Блокирование IPЧтобы заблокировать нужные узлы надо добавить пользователю радиус атрибут в биллинге: Filter-Id и прописать например(без кавычек):
",192.168.0.1,192.168.1.0/24" - что означает заблокировать адрес 192.168.0.1 и подсеть от 192.168.1.0-192.168.1.255
";192.168.0.1;192.168.1.0/24" - означает заблокировать все кроме 192.168.0.1 и подсети 192.168.1.0-192.168.1.255
Привязка по MAC адресуЧтобы сделать так чтобы определенный аккаунт смог подключаться только с нужного MAC адреса, надо добавить пользователю радиус атрибут в биллинге: Callback-Id и прописать MAC адрес например(без кавычек): "00:24:81:44:58:94"
Приориетные скоростиДля чего это нужно:
К примеру есть договор с определенным тарифом, на этом тарифе ограничение upstream/downstream скорости 512кбит, а вам нужно сделать скорость 1024кбит без смены тарифа
Либо другой пример на одном договоре несколько логинов, на одном нужно 512кбит на другом 1024 кбит
Чтобы добавить приоритетную скорость надо добавить пользователю радиус атрибут в биллинге:
PPPD-Downstream-Speed-Limit-1 и указать скорость в килобитах - это для Downstream
PPPD-Upstream-Speed-Limit-1 и указать скорость в килобитах - это для Upstream
Либо можно сделать это все атрибут сетами.
УстановкаВсегда делайте резервные копии, все что тут описано вы делаете на свой страх и риск!
1) Заменяем /etc/ppp/ip-up и /etc/ppp/ip-down на ip-up и ip-down из архива.
2) Добавляем в правила iptables еще 3:
Код:
/sbin/iptables -N DROP_FORWARD
/sbin/iptables -I FORWARD -j DROP_FORWARD
/sbin/iptables -A DROP_FORWARD -j RETURN
3) Добавляем(если нет) в словарь raduis атрибуты "PPPD-Downstream-Speed-Limit-1" и "PPPD-Upstream-Speed-Limit-1"
у меня так:
в /etc/radiusclient/dictionary
Код:
ATTRIBUTE PPPD-Upstream-Speed-Limit-1 232 integer
ATTRIBUTE PPPD-Downstream-Speed-Limit-1 233 integer
Для вашего удобства большую часть строк в скрипте прокомментировал.
Вроди бы ничего не забыл, прошу оставлять отзывы, жалобы и предложения внизу
UPD: v.1.01
Меликий фикс бага, из за которого не правильно работали фильтры, теперь все работает отлично
UPD2:Для более честного шейпирования апстрима, изменил на пропорциональный burst.
Добавил скрипт изменения пропускной полосы, бывают случаи когда нужно не отключая изменить скорость абоненту, для этого и нужен этот скрипт.
использовать так:
./tcchange <интерфейс> [ширина канала в килобитах]
например
./tcchange ppp10 4096 - установит ширину канала для интерфейса ppp10 в 4мбит
./tcchange ppp10 <интерфейс> - отобразит информацию по интерфейсу