skew_death Опубликовано 3 февраля, 2017 · Жалоба Всем доброго времени суток, собственно нужно реализовать редирект при отрицательном балансе юзверей. В наличии самописный биллинг, freeradius, и циска 7200 которая разрешает доступ в интернет, на выходе всего этого микротик, в бд хранятся значения депозита, нужно чтобы при проверке баланса заплативших юзверей выпускало в интернет,а тех кто не заплатил, заворачивало на страницу редиректа, что кто подскажет? в iptables в данный момент только это. Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination TCPMSS tcp -- anywhere anywhere tcpflags: SYN,RST/SYN tcpmss match 1400:65495 TCPMSS clamp to PMTU Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination P.S. У пользователей статический ip, формата 10.0.0.0. Запрос freeradius к БД, на данный момент не выпускающий при отрицательном балансе authorize_check_query = "SELECT uid,user,'User-Password' as Attribute,passwd,'==' as op FROM ${authcheck_table} \ WHERE user = '%{SQL-User-Name}' AND blocked='0' AND active='1' AND macblock='0' AND gid not in (1,5) AND (deposit+credit) > -1 ORDER BY uid" Где blocked = блокированный пользователь или нет, active = активирован, gid = группа для блокированных и отключенных пользователей. P.P.S. До этого был вариант пускать на ограниченной скорости, не помогает, пользователи упорно не видят что у них задолженность и звонят в техподдержку или также пользуются интернетом, думая что переустановка винды поможет решить их проблему с низкой скоростью. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Tau Опубликовано 3 февраля, 2017 · Жалоба Кто обращается по RADIUSу к биллингу? Микротик? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
FATHER_FBI Опубликовано 3 февраля, 2017 · Жалоба А почему не реализовать более стандартное решение, при отрицательном балансе, выдавать IP из другого диапазона, а дальше удобным для Вас методом (cisco/некрот/iptables), заруливать весь трафик с этих адресов на заглушку. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
gawric Опубликовано 3 февраля, 2017 (изменено) · Жалоба А почему не реализовать более стандартное решение, при отрицательном балансе, выдавать IP из другого диапазона, а дальше удобным для Вас методом (cisco/некрот/iptables), заруливать весь трафик с этих адресов на заглушку. +1 так же сделал Freeradius (radusergroup)2 пула - allow|block radclient во время блокировки отправляет mikrotik (нужно сменить poll). Изменено 3 февраля, 2017 пользователем gawric Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Saab95 Опубликовано 3 февраля, 2017 · Жалоба А почему не реализовать более стандартное решение, при отрицательном балансе, выдавать IP из другого диапазона, а дальше удобным для Вас методом (cisco/некрот/iptables), заруливать весь трафик с этих адресов на заглушку. Это не стандартное, а кривое решение. Если у абонента нет средств его IP должен попадать в особый список должников и по нему перенаправляется на ЛК. Как только абонент пополнил счет или взял обещанный платеж, у него тут же включается интернет. А не требуется переподключение. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
FATHER_FBI Опубликовано 4 февраля, 2017 · Жалоба Это не стандартное, а кривое решение. Если у абонента нет средств его IP должен попадать в особый список должников и по нему перенаправляется на ЛК. Как только абонент пополнил счет или взял обещанный платеж, у него тут же включается интернет. А не требуется переподключение. Какое переподключение? Если ТС выдает IP посредством DHCP, можно выдавать IP из группы должников на 1 минуту Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
skew_death Опубликовано 6 февраля, 2017 (изменено) · Жалоба Tau, циска. FATHER_FBI, У пользователей статические ip за натом(насколько я понимаю), часть пользователей по договору имеют белый выделенный ip. Saab95,По группам разделение уже есть, но вот что с этой группой делать, хотелось бы реализовать ваш вариант. Пример. Изменено 6 февраля, 2017 пользователем skew_death Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Saab95 Опубликовано 6 февраля, 2017 · Жалоба У вас по группам внутри биллинга. Естественно биллинг должен только управлять оборудованием, а не работать софтроутером. Если IP адреса статические, то когда у абонента есть средства, то на оборудование никаких команд по нему приходить не должно, то есть не нужно делать схему, когда блокируется все, а доступ разрешен тем, кто есть в списке - доступ должен быть разрешен всем, а блокируются те, кто находится в адрес листе должников. Поэтому биллинг по событию перехода баланса в минус, должен отправлять команды на помещение IP адреса в список должников, при этом, если используется радиус, можно помещать абонента сразу в нужный адрес лист, если он вновь подключается и т.п. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
skew_death Опубликовано 6 февраля, 2017 · Жалоба Saab95, не подскажете как это все реализовать, в общих чертах то все понятно, но дальше все плохо... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Saab95 Опубликовано 6 февраля, 2017 · Жалоба Допустим на сервере доступа ничего нет и он авторизует абонентов по статическим IP. Для работы абоненту нужно ограничить скорость - биллинг отправляет команду по SSH на микротик с данными по ограничению скорости, это IP адрес и максимальная входящая и исходящая скорости. Все, после этого абонент может работать. Никакие другие правила не нужны. Разрешено все что не запрещено. Теперь абонента надо заблокировать при отсутствии оплаты - на биллинг отправляется команда по SSH, где IP адрес этого абонента помещается в адрес-лист микротика, в котором содержатся должники. На сервере доступа создается правило, что для всех абонентов из адрес-листа должники, доступ на все сети, кроме IP адреса биллинга и странички заглушки запрещены. Следовательно абонент не может работать в интернете. Так же создается второе правило, которое перенаправляет все запросы абонентов на 80 порт на веб прокси микротика, который уже перенаправляет их на web страничку блокировки, на этой страничке показана информация для абонента и есть ссылка на личный кабинет биллинга. Сразу на биллинг перенаправлять не стоит, что бы не загружать его зря. Тут может появиться вопрос, что если используется оплата через интернет, абонент не может ее совершить, потому что доступ заблокирован. Вместо того, что бы добавлять платежные системы в список разрешенных, можно создать правило, что если IP из списка должников передает данные на IP веб странички и биллинга, то разрешить ему доступ в интернет на 5-10 минут, после чего заблокировать на час или большее время, что бы любители халявы не пользовались этой лазейкой. Реализовать такое можно через несколько адрес листов, в которые и из которых адреса перепрыгивают по таймауту. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
skew_death Опубликовано 7 февраля, 2017 · Жалоба Saab95, спасибо, буду курить мануалы, а вот нарезать скорость через микротик нужды нету, они уже нарезаны на циске и если пользователь в группе блокированные то ему и так снижается скорость. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
skew_death Опубликовано 8 февраля, 2017 · Жалоба Saab95, в ходе гугления выяснилось, что просто так из мускуль не получится выгрузить данные и отправить на микротик, или упираемся в актуальность, или будет огромная нагрузка на БД. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Saab95 Опубликовано 8 февраля, 2017 · Жалоба А какая там может быть не актуальность? Если абонент подключен у него же никакие параметры не меняются. Вот и отправляйте только новых и удаленных. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
skew_death Опубликовано 9 февраля, 2017 · Жалоба Saab95, я имел в виду делать выгрузку БД->файл-> микротик, чтобы в меньшей мере нагружать БД ну или делать напряму, тогда можете поделиться мануалом по отправке данных из mysql(centos) на микротик? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Saab95 Опубликовано 12 февраля, 2017 · Жалоба В файл-то зачем? Вообще просто так выгружать тоже смысла нет, обычно все происходит по неким событиям, например надо изменить скорость, надо отправить блокировку и т.п. В эти моменты и надо обращаться к БС. Тогда обновления пойдут только по событиям и просматривать все данные БС не требуется, а это экономия ресурсов. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
skew_death Опубликовано 13 февраля, 2017 · Жалоба Saab95, В конце месяца запускается php файл на кроне, который списывает абонентку, блокирует если не хватает средств на счету, так понимаю что нужно использовать вместе с ним, но как данные из блокированных в этот момент отправить на микротик в адрес лист? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Saab95 Опубликовано 13 февраля, 2017 · Жалоба Через SSH или Telnet. /ip firewall address-list add address=10.10.10.10 list=balance_negative Только подставляете нужный IP абонента, так же можно добавить в комментарии номер договора, что бы было удобнее искать в списке абонентов. Но если абоненты будут оплачивать, их из списка нужно удалять. А это тоже из биллинга нужно как-то вытаскивать и удалять записи. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
skew_death Опубликовано 13 февраля, 2017 · Жалоба Saab95, немного не так выразился, нужно соорудить хотя бы на первое время костыль(БД->файл), через крон раз в 10 минут забираются IP адреса должников, при оплате, собственно убираем из списка, абонентов больше >400 человек, вручную бессмысленно :) Блокировка, тарифы и все остальное на биллинге, микротик в роли шлюза, циска по радиусу сверяет данные, если все окей то пускает в гугл, собственно еще идея, а если сделать чтобы сам радиус закидывал IP в список микротика? Т.к. он как раз ловит IP при авторизации, и далее выдавать только разрешение на допуск к заглушке? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Saab95 Опубликовано 13 февраля, 2017 · Жалоба В радиусе можно передавать параметр address-list, там можно указать название, куда помещать. Но самое лучшее это заливать IP в вашем же скрипте, тем более из него можно и сразу команды на микротик отправить. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
axisBeam Опубликовано 21 июня, 2018 · Жалоба Добрый день! Появилась идея перевести freeradius с файлов на sql, но вылезла проблема, если в username есть "+" - получаю Access-Reject. Кто что подсказать может? Спасибо! radtest "241-28 eth 0/17:3401" password 127.0.1.1 0 secret Sending Access-Request of id 25 to 127.0.1.1 port 1812 User-Name = "241-28 eth 0/17:3401" User-Password = "password" NAS-IP-Address = 127.0.1.1 NAS-Port = 0 Message-Authenticator = 0x00000000000000000000000000000000 rad_recv: Access-Accept packet from host 127.0.1.1 port 1812, id=25, length=20 radtest "Vlan3265+Ethernet1/12" password 127.0.1.1 0 secret Sending Access-Request of id 78 to 127.0.1.1 port 1812 User-Name = "Vlan3265+Ethernet1/12" User-Password = "password" NAS-IP-Address = 127.0.1.1 NAS-Port = 0 Message-Authenticator = 0x00000000000000000000000000000000 rad_recv: Access-Reject packet from host 127.0.1.1 port 1812, id=78, length=20 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
paradox_ Опубликовано 21 июня, 2018 · Жалоба в лог радиус сервера смотрите, ну и дебага добавьте в него Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
GrandPr1de Опубликовано 21 июня, 2018 (изменено) · Жалоба чую я что там просто фильтр на username который обрезает много чего и плюс в том числе Изменено 21 июня, 2018 пользователем GrandPr1de Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
axisBeam Опубликовано 22 июня, 2018 (изменено) · Жалоба On 21.06.2018 at 12:59 PM, GrandPr1de said: чую я что там просто фильтр на username который обрезает много чего и плюс в том числе Да вот пока не могу найти где. Изменено 22 июня, 2018 пользователем alexmasz Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
polmax Опубликовано 22 июня, 2018 · Жалоба 48 минут назад, alexmasz сказал: Да вот пока не могу найти где. policy.conf? Что-то вида: deny_realms { if (User-Name =~ /@|\\/) { reject } } Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
GrandPr1de Опубликовано 22 июня, 2018 (изменено) · Жалоба 4 часа назад, alexmasz сказал: Да вот пока не могу найти где. радиус в sql бд ходит? ищите где назначаются переменные, который потом в квери пихаются например: authorize_check_query = "SELECT (@cnt := @cnt + 1) AS `id`, `UserName`, `Attribute`, `Value`, `op` \ FROM `${authcheck_table}` \ CROSS JOIN (SELECT @cnt := 0) AS `dummy` \ WHERE `UserName` = '%{SQL-User-Name}' \ ORDER BY `id`" #sql_user_name = "%{%{Stripped-User-Name}:-%{%{User-Name}:-DEFAULT}}" # sql_user_name = "%{User-Name}" Ну и про полиси выше уже сказали. А вообще radiusd -X в руки и вперед Изменено 22 июня, 2018 пользователем GrandPr1de Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...