Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
abills:docs:nas:mikrotik:ppp_sync [2017/04/13 20:12] anton |
abills:docs:nas:mikrotik:ppp_sync [2017/04/14 09:41] (текущий) anton |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ==== Mikrotik: accounting backup ==== | + | ==== Mikrotik: PPP Auth backup ==== |
Функционал позволяет пользователям авторизоваться если отсутствует связь между Микротиком и FreeRADIUS-сервером. | Функционал позволяет пользователям авторизоваться если отсутствует связь между Микротиком и FreeRADIUS-сервером. | ||
- | Включаем скрипт синхронизации в ''/etc/crontab''. | + | Включаем скрипт синхронизации аккаунтов в ''/etc/crontab''. |
<code> | <code> | ||
*/15 * * * * root /usr/abills/libexec/billd auth_export NAS_IDS=%NAS_ID% | */15 * * * * root /usr/abills/libexec/billd auth_export NAS_IDS=%NAS_ID% | ||
Строка 10: | Строка 10: | ||
Все экспортированые аккаунты добавляются выключенными, для того, чтоб не мешать нормальному процесу авторизации. | Все экспортированые аккаунты добавляются выключенными, для того, чтоб не мешать нормальному процесу авторизации. | ||
- | Нам нужно, чтоб они включались только когда нет связи с радиусом, для этого, нужно запускать скрипт на микротике. | + | Нам нужно, чтоб они включались только когда нет связи с радиусом. |
+ | \\ | ||
+ | Создадим на Микротике скрипты для отслеживания ситуации потери связи с радиусом. | ||
**Через winbox** | **Через winbox** | ||
Строка 27: | Строка 28: | ||
:local logMessage [:pick [:toarray $logParseVar] 2] | :local logMessage [:pick [:toarray $logParseVar] 2] | ||
:set logParseVar "" | :set logParseVar "" | ||
- | |||
- | :local ruleop | ||
- | :local loguser | ||
- | :local logsettings | ||
- | :local findindex | ||
- | :local tmpstring | ||
# Check for radius timeout | # Check for radius timeout | ||
- | log info ("InputMessage" . $logMessage) | ||
:if ( $logMessage ~ "radius timeout" ) do={ | :if ( $logMessage ~ "radius timeout" ) do={ | ||
log info ("Radius is timeout. will activate all current ppp secrets") | log info ("Radius is timeout. will activate all current ppp secrets") | ||
Строка 42: | Строка 36: | ||
</code> | </code> | ||
- | Для того чтобы скрипт запустился, нужно парсить лог. Для этого создаём еще один скрипт, который будет выбирать из всех строк лога те, которые нам нужно.\\ | + | Для того чтобы скрипт запустился когда потеряна связь с радиусом, нужно парсить лог, ожидая сообщения ''radius timeout''. Для этого создаём еще один скрипт, который будет выбирать из всех строк лога те, которые нам нужно.\\ |
Включаем логирование в память | Включаем логирование в память | ||
Строка 169: | Строка 163: | ||
Всё. Теперь, когда в логе появится запись с текстом "radius timeout", у нас включатся сохранённые записи, которые отключатся через 5 минут. Если Radius сервер еще не будет отвечать к этому времени ( а проверка через секунду после отключения ), то они включатся снова. | Всё. Теперь, когда в логе появится запись с текстом "radius timeout", у нас включатся сохранённые записи, которые отключатся через 5 минут. Если Radius сервер еще не будет отвечать к этому времени ( а проверка через секунду после отключения ), то они включатся снова. | ||
+ | |||
+ | ** Если нужно более быстрое время реакции на неполадки, можно уменьшить время запуска в шедулере на 1 минуту для ''disable_accounting_backup'' и 10 секунд для ''log_parser''** |