Чи є життя без RADIUS

Як білінг використовується LanBilling 2.0 – у ньому реалізована непогана підтримка подій включення, відключення, редагування, створення та видалення абонентів. На цю роль з доопрацюванням підійде будь-яка система зі схожим механізмом подій.

Підготовка MikroTik RouterOS

подій

Вся взаємодія з RouterOS відбувається через API. Для початку на маршрутизаторі потрібно створити виділеного користувача, під яким буде здійснюватись віддалене керування, з такими реквізитами доступу:

  • Логін: api
  • Пароль: api
  • Доступ лише з сервера білінгу: 192.0.2.2

radius

  • Найпершим правилом дозволимо всім без винятку абонентам використовувати обрані ресурси. Наприклад, це може бути зовнішній DNS-сервер, сайт компанії чи мережа партнера.

# Повний доступ до вибраних ресурсів /ip firewall filter add chain=forward \ dst-address-list=permited-destinations \ out-interface=ether-wan

# Блокування популярних ресурсів, непотрібних для оплати /ip firewall layer7-protocol add name=social-networks \ regexp=vk.commail.ruok.ru # Пропускаємо абонентів у процесі оплати на https-ресурси /ip firewall filter add chain=forward \ dst-port=443 \ layer7-protocol=!social-networks \ out-interface=ether-wan \ protocol=tcp \ src-address-list=payers-list

  • Далі необхідно заблокувати доступ до Інтернету абонентам, які не оплатили послугу. Біллінг у момент блокування додає IP абонента до address-list blocked.

# Блокування неплатників /ip firewall filter add action=reject chain=forward \ out-interface=ether-wan \ reject-with=icmp-admin-prohibited \ src-address-list=blocked

  • Вищезгаданих правил у ланцюжку forward достатньо для надання послуги доступу до Інтернету. Додатково можна додати кілька правил в ланцюжок input, щоб обмежити доступ до маршрутизатора та забезпечити додатковий рівень безпеки.

Додатково, якщо в цьому є необхідність, можна активувати службу PPPoE/PPTP/L2TP – з білінгу надходять команди створення облікових записів у розділі /ppp secret. Все вищеописане працюватиме з тунельними протоколами без доопрацювань, що збільшує гнучкість рішення.

Підготовка білінгу

Підготовка білінгу, в даному випадку це буде Lanbilling, полягає в написанні скриптів обробки подій включення, відключення, створення, видалення та редагування облікового запису абонента. Додатково слід переконатися, що обліковими записами займається саме агент LBarcd.

Для початку білінгу потрібно вказати, для яких подій, які використовуються скрипти. Ці параметри вказуються у конфігураційному файлі /etc/billing.conf.LBarcd. Конфігураційний файл відноситься до RADIUS-агенту LBarcd, від якого в даному випадку потрібно лише реєстрація подій та виконання сценарію, прив'язаного до події. Кожен скрипт викликається з певним набором параметрів, для кожного скрипта набір той самий:

Конфігураційний файл подій агента можна завантажити з репозитарію на github.

Кожен сценарій обробки події включає бібліотеку функцій, яка, у свою чергу, використовує PHP-клас для роботи з RouterOS через API. Вихідний код кожного сценарію, бібліотеки функцій та клас для роботи з API доступні в репозиторії github.

Після внесення змін до billing.conf.LBarcd, редагування скриптів подій та розміщеннянеобхідні файли в потрібних каталогах, система готова до роботи. Абоненти, що оплатили послугу працюю в Інтернеті та качають файли на тарифній швидкості. Заблоковані абоненти мають доступ лише до локальної мережі та дозволених ресурсів.

Доступ до Інтернету для оплати

життя
життя

Для цього необхідно зробити невелику редагування вихідного коду в особистому кабінеті користувача, все інше вже налаштоване – address-list payers-list на MikroTik та додаткова функція allow_payment у бібліотеці functions.php.

В даному випадку для прийому онлайн-платежів використовується Яндекс.Каса, тому правку будемо вносити в файл /usr/local/billing/phpclient/client2/client/components/payment/yandex/Payment_Yandex_Pay.php метод обробки натискання кнопки "Оплатити" в особистому кабінеті користувача.

Необхідно вставити рядок

Додатково у сценарії активації потрібно передбачити випадок, коли абонент зловживає та часто включає доступ. Зловживання можна запобігти, наприклад, записуючи кожну спробу доступу до тимчасового файлу. Цей файл видаляється раз на тиждень. Варіантів насправді може бути безліч, у тому числі з використанням бази даних. Тут кожен продає так, як вважає за необхідне.

Висновок

Іншими словами, якщо у вас не більше 3000 абонентів і ви шукаєте просте надійне рішення щодо контролю доступу до Інтернету, то описаний у статті варіант може стати чудовим вибором.