Dr.zlo
NoDeny
Пользователь
Карма: 0
Offline
Сообщений: 61
|
|
« : 05 Декабря 2013, 18:57:38 » |
|
Ребята подскажите как передать через радиус скорость на микротик.
|
|
|
Записан
|
|
|
|
|
Dr.zlo
NoDeny
Пользователь
Карма: 0
Offline
Сообщений: 61
|
|
« Ответ #2 : 06 Декабря 2013, 13:50:47 » |
|
Какой атрибут я знаю. Меня интересует как видернуть из бд ету скорость.
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #3 : 06 Декабря 2013, 14:54:55 » |
|
Дело в том, что данные услуги хранятся в закодированном (серилизованном) виде для того, чтобы делать услуги любой сложности - включать любую комбинацию полей хоть для интернета, хоть для подсчета яблок. Из mysql выудить эти поля не то чтобы невозможно, но очень и очень геморно - будет громадная процедура. Тут есть 2 пути: в радиусе заменить mysql-процедуры на вызов perl скрипта - этим у нас будет ацкая гибкость, но пока я этим вопросом не занимался и понятно, что завтра скрипты не будут.
Второй вариант - я подправлю модуль услуг так, чтобы он в поле "теги" дописывал через запятую скорость тарифа. Из тегов выудить для мускула будет проще. Если такой вариант устраивает, то в принципе можно сегодня-завтра внести эту фичу
|
|
|
Записан
|
|
|
|
Dr.zlo
NoDeny
Пользователь
Карма: 0
Offline
Сообщений: 61
|
|
« Ответ #4 : 06 Декабря 2013, 15:03:03 » |
|
Второй вариант мне подходит. Я так понял что при втором варианте я могу свой mpd не трогать и микротик заработает с ограничением скорости. У меня просто сечас один нас ето mpd а другой ето mikrotik.
|
|
|
Записан
|
|
|
|
Dr.zlo
NoDeny
Пользователь
Карма: 0
Offline
Сообщений: 61
|
|
« Ответ #5 : 06 Декабря 2013, 16:46:25 » |
|
Зробив для себе костиль. Так як в мене всі швидкості симетричні. І послуги тіки з швидкістю. Да і тіки один напрямок. То мені підходить. DROP PROCEDURE IF EXISTS `radreply`; DELIMITER $$ CREATE PROCEDURE `radreply`(IN login VARCHAR(64)) BEGIN DECLARE usr_id INT; DECLARE usr_ip VARCHAR(15) DEFAULT NULL; DECLARE usr_service INT; DECLARE usr_speed INT;
SELECT id INTO usr_id FROM users WHERE name=login LIMIT 1; SELECT service_id INTO usr_service FROM users_services WHERE uid=usr_id; SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(param,'\'',22),'\'',-1) INTO usr_speed FROM services WHERE service_id=usr_service; SELECT get_ip(usr_id) INTO usr_ip;
SELECT NULL,login,'Framed-IP-Address',usr_ip,'='; SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','='; SELECT NULL,login,'Framed-Protocol','PPP','='; SELECT NULL,login,'Mikrotik-Rate-Limit',usr_speed,'='; END$$ DELIMITER ; Тепер можу спокійно чекати рішення якогось більш вміняймого від розробника.
|
|
|
Записан
|
|
|
|
YuSHa
NoDeny
Постоялец
Карма: 6
Offline
Сообщений: 183
|
|
« Ответ #6 : 06 Декабря 2013, 16:49:47 » |
|
to Dr.zlo а как вы будите перенаправлять заблокированных на заглушку? может умная мысли поможет решить мою проблему перехода на nodeny. у нас сейчас реализовано так: если в биллинге (не нодени) абонент продлен(есть деньги) то получает ip из пула, который натится, если заболокирован - получает ip из другой подсети и в микротике дропается все кроме 80 порта и все запросы 80 порта перенаправляются на статическую заглушку типа "дай денег"
|
|
|
Записан
|
|
|
|
Dr.zlo
NoDeny
Пользователь
Карма: 0
Offline
Сообщений: 61
|
|
« Ответ #7 : 06 Декабря 2013, 16:58:50 » |
|
Ну так можна при авторизации дьорнуть статус щьота і видать ip с другого пула ip. Пули ip можна создавать разние. Но я правда не знаю насколько правильно оно будет.
|
|
|
Записан
|
|
|
|
stek
Пользователь
Карма: 0
Offline
Сообщений: 7
|
|
« Ответ #8 : 09 Декабря 2013, 18:45:46 » |
|
to Dr.zlo а как вы будите перенаправлять заблокированных на заглушку? может умная мысли поможет решить мою проблему перехода на nodeny. у нас сейчас реализовано так: если в биллинге (не нодени) абонент продлен(есть деньги) то получает ip из пула, который натится, если заболокирован - получает ip из другой подсети и в микротике дропается все кроме 80 порта и все запросы 80 порта перенаправляются на статическую заглушку типа "дай денег"
На микротике это сделать легче всего chain=dstnat action=dst-nat to-addresses=10.105.1.1 to-ports=80 protocol=tcp src-address=10.105.7.0/24 src-address-list=!goodboys dst-port=80 если народа нет в гудбойсах то попадает на 10.105.1.1 то-есть не нужно абонента по пулам гонять пусть себе сидит со своей айпишкой. просто добавляй его в фаер а лист если ему можно ходить в правила NAT можно добавить любое количество подсетей
|
|
|
Записан
|
|
|
|
YuSHa
NoDeny
Постоялец
Карма: 6
Offline
Сообщений: 183
|
|
« Ответ #9 : 10 Декабря 2013, 14:31:54 » |
|
так заглушка у нас сейчас и сделана. но как добавлять/удалять гудбоев из аксес листа? для 49/50 был скрипт управления фаером, но как его скрестить с N+ я не знаю. минус ещё в том, что при передаче скорости при поднятии pppoe динамически скорость не изменить
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #10 : 10 Декабря 2013, 15:16:32 » |
|
минус ещё в том, что при передаче скорости при поднятии pppoe динамически скорость не изменить
По идее, если микротик поддерживает http://wiki.sirmax.noname.com.ua/index.php/CoA , то можно сделать. Ладно, скажите мне, скрипт микротика для N49/50 имеет недостаток лишь в том, что иногда создаются дублирующиеся записи?
|
|
|
Записан
|
|
|
|
YuSHa
NoDeny
Постоялец
Карма: 6
Offline
Сообщений: 183
|
|
« Ответ #11 : 10 Декабря 2013, 15:36:11 » |
|
в продакшене этот скрипт не использовал. только на тестах.
|
|
|
Записан
|
|
|
|
Dr.zlo
NoDeny
Пользователь
Карма: 0
Offline
Сообщений: 61
|
|
« Ответ #12 : 10 Декабря 2013, 17:03:29 » |
|
так заглушка у нас сейчас и сделана. но как добавлять/удалять гудбоев из аксес листа? для 49/50 был скрипт управления фаером, но как его скрестить с N+ я не знаю. минус ещё в том, что при передаче скорости при поднятии pppoe динамически скорость не изменить Ну как би поидеи есть атрибут Mikrotik-Address-List которий является строкой. При передачи параметров в него можна вписать значение столбца "state" в результате получим две таблички адресов корие будут називатся "on" и "off". Ну а дальше уже с етими табличками что хотим то и делаем.
|
|
|
Записан
|
|
|
|
YuSHa
NoDeny
Постоялец
Карма: 6
Offline
Сообщений: 183
|
|
« Ответ #13 : 10 Декабря 2013, 17:13:49 » |
|
но это только для pppoe. опять же нужно ограничивать время сессии. т.к. динамически абонента мы не переведем из одного листа в другой
|
|
|
Записан
|
|
|
|
sov
|
|
« Ответ #14 : 10 Декабря 2013, 17:54:47 » |
|
Ладно, скажите мне, скрипт микротика для N49/50 имеет недостаток лишь в том, что иногда создаются дублирующиеся записи?
Давно не использовал микротик, поэтому заранее прошу прощения, если ошибаюсь, но, насколько я помню - на микротике сначала удалялись все правила, а затем создавались заново из переданного ему полного списка всех клиентов всех сателлитов. Эта операция "пригружала" микротик и у клиентов возникали кратковременные проблемы с доступом в интернет. Поэтому хотелось-бы, чтобы на микротик передавались и обрабатывались только изменения в правилах, а не полностью все таблицы. И нужно оставить только правила для "своих" клиентов, а обмен данными с клиентами других сателлитов полностью запретить, соответственно, кардинально сократив количество правил. Поясняю мысль. Маленький аппаратный микротик имеет смысл ставить где-нибудь на дальних окраинах, где мало клиентов. И получается, что ради десятка-сотни клиентов самого микротика, на него грузятся (и постоянно обновляются) тысячи правил, учитывающих связь с клиентами других сателлитов. Это создаёт совершенно ненужную и достаточно ощутимую нагрузку. Проще вообще этот трафик запретить - для 99,9% клиентов нужен только доступ в интернет.
|
|
|
Записан
|
|
|
|
|