Зміст

Увага

Ця реалізація є застарілою з релізу 0.9.6 і більше не підтримується та не розвивається.
Використовуйте КупаГен aka MultiGen. Він неймовірно крутий і позбавлений усіх дитячих хвороб штурхання трупа ногами Mikrotik в API.

Налаштування MikroTik як NAS

У цьому розділі докладно описано процедуру зв'язування пристроїв під управлінням RouterOS з білінгом. Для початку вам потрібно:

  1. Сервер Ubilling:
    1. Встановлений за допомогою UBinstaller
    2. Параметри:
      1. Зовнішній інтерфейс, igb0 - 63.163.105.6/29
      2. Локальний інтерфейс, igb1 - 10.0.0.0.254/24
  2. Пристрій MikroTik з ОС RouterOS:
    1. Скинутий до стандартних конфігурацій
    2. Налаштовані тільки:
      1. Інтерфейси (WAN - ether1, LAN - bridge1)
      2. IP інтерфейсів (ether1 - 63.163.105.2/29, bridge1 - 10.0.0.1/24)
      3. Маршрути (0.0.0.0/0 63.163.105.1, 10.0.0.0.0/24 bridge1)

Розширення функціоналу скриптів On*

Для того, щоб скрипти On* могли керувати пристроями на базі RouterOS, необхідно замінити їх, послідовно виконавши такі команди в консолі сервера Ubilling:

# rm /etc/stargazer/Get* && rm /etc/stargazer/On* && rm /etc/stargazer/fullArp.php && rm /etc/stargazer/config
# cd /usr/local/www/apache24/data/billing
# cp -r docs/presets/MikroTik/ /etc/stargazer
# chmod a+x /etc/stargazer/On*

Важливо: Скрипти розроблено для керування NAS під керуванням ОС FreeBSD і RouterOS. Запуск скриптів можливий тільки на ОС FreeBSD.

Завершуємо заміну, вказавши параметри підключення до бази даних і шляхи до log-файлу у файлі «/etc/stargazer/config.ini» :

config.ini
[database]                 ; Настройки базы данных:
dbdriver = mysql             ; Драйвер (только `mysql`).
hostname = localhost         ; Хост сервера БД
username = root              ; Логин сервера БД
password = password          ; Пароль сервера БД
database = stg               ; Назва БД Ubilling
 
[log]                      ; Налаштування логування:
enabled = true               ; Чи ввімкнено логування (`true/false`)
method = 'file'              ; Метод логування (тільки `file`)
path = '/var/stargazer'      ; Шлях до log-файлу
file = 'allconnect.log'      ; Ім'я log-файлу
debug = false                ; Режим налагодження (`true/false`)
 
[rscriptd]                 ; Налаштування для RScriptD:
rate_val = 'Kbit/s'          ; У чому вимірюється швидкість
arpcmd = '/usr/sbin/arp'     ; Команда "arp"
fwcmd = '/sbin/ipfw -q'      ; Команда "ipfw"
 
[mikrotik]                 ; Налаштування для MikroTik:
api_port = 8728              ; Порт API
rate_val = 'k'               ; У чому вимірюється швидкість
attempts = 3                 ; Кількість спроб підключення
timeout = 2                  ; Тайм-аут спроби підключення
delay = 1                    ; Кількість спроб підключитися

Модуль "Розширене налаштування MikroTik"

Починаючи з версії 0.4.3 для кожного сервера доступу MikroTik у модулі “Сервера доступу (NAS)” доступна кнопавка розширеного налаштування, яке, водночас, є мінімальним. Після переходу в модуль і введення у відповідні поля правильних логіна і пароля від сервера доступу побачимо, приблизно, таку картину:

Тут ми бачимо 2 селектори з інтерфейсами:

Далі йде розділ “Встановлення поведінки скриптів OnConnect/OnDisconnect для NAS”. Тут ми ставимо галочки там, де це необхідно. Відповідно скрипти виконуватимуть ті чи інші дії, які ви вказали. Враховуйте, що перед встановленням галочки “Керувати DHCP” необхідна попередня налаштування MikroTik DHCP на інтерфейсі користувачів. Управління PPP - у розробці.

Наступний розділ “Загальна інформація про стан MikroTik`a”, який показує uptime, відсоток використання CPU, RAM та іншу інформацію про стан пристрою MikroTik.

Увімкнення MikroTik API

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

/ip service set api port=8728 address=10.0.0.254 disabled=no

Опис параметрів:

Експорт статистики по трафіку

Для того, щоб споглядати статистику по трафіку в Ubilling, треба увімкнути NetFlow-сенсор (у MikroTik його іменують як Traffic Flow) і налаштувати експорт на сервер Ubilling. Для цього послідовно виконуємо в консолі пристрою з RouterOS такі команди:

/ip traffic-flow set enable=yes interfaces=all cache-entries=256k active-flow-timeout=30m inactive-flow-timeout=15s
/ip traffic-flow target add address=10.0.0.254:42111 version=5

Опис параметрів:

Налаштування фаєрвола MikroTik

/ip firewall nat add chain=srcnat out-interface="ether1" src-address-list="NAT" action=masquerade
/ip firewall address-list add address=10.0.0.0/24 list="NAT"

* Додамо правила, що дозволяють адресам зі списку “ALLOW” ходити з локальної мережі в Інтернет (1) і назад (2), а також забороняють проходження всього трафіку, що не потрапив під вищезазначені правила (3):

/ip firewall filter \ 
add chain=forward action=accept in-interface="bridge1" out-interface="ether1" src-address-list="ALLOW"
add chain=forward action=accept in-interface="ether1" out-interface="bridge1" dst-address-list="ALLOW"
add chain=forward action=drop

Налаштування MikroTik DHCP

У разі, якщо сервер Ubilling і пристрій MikroTik розташовані в різних широкомовних сегментах, ви можете використовувати DHCP-сервер MikroTik. Для цього потрібно:

/ip dhcp-server network add address=10.0.0.0/24 gateway=10.0.0.1 netmask=24 dns=10.0.0.1
/ip dhcp-server add interface="bridge1" address-pool=static-only authoritative=yes

Налаштування MikroTik PPPoE

У разі, якщо сервер Ubilling повинен створювати користувачів PPP:

/interface pppoe-server server  \
add service-name="service1" interface="bridge1" default-profile="default" one-session-per-host="yes" disabled="no"

Налаштування MikroTik Queue Tree

З версії 0.7.7 скрипти ініціалізації вміють керувати деревами черг. З версії 0.7.7 ця функція йде з коробки, для всіх попередніх налаштувань, необхідно в консолі білінгу прописати такі команди:

cp -r /etc/stargazer/system /etc/stargazer/system.bak
rm -r /etc/stargazer/system
cd /usr/local/www/apache24/data/billing
cp -r ./docs/presets/MikroTik/system /etc/stargazer/system

Додатково

* У разі, якщо ви раптом таки вирішили випробувати долю і спробувати використовувати Mikrotik NAS під Linux - можна спробувати звернути свій погляд на ось цей пост на форумі.

* Починаючи з релізу 0.8.3 до пресетів додано firewall_off.ini, що дає змогу використовувати різні аддрес-листи для авторизованих і неавторизованих користувачів. Докладніше тут. * Оскільки в RouterOS 6.43 і вище змінено метод авторизації під час підключення до RouterOS API, починаючи з релізу 0.9.0 додано можливість вказувати, який метод підключення використовувати для кожного конкретного NAS. * Починаючи з релізу 0.9.2 модуль тепер може використовувати телепатію для визначення версії RouterOS і усвідомлення методу підключення до Mikrotik API. Регулюється опцією ROUTEROS_VERSION_TELEPATHY і супутніми опціями ROUTEROS_VERSION_GET_WEB_PORT і ROUTEROS_VERSION_GET_SNMP_COMMUNITY в alter.ini.
Логіка роботи фічі така:

  1. намагаємося визначити версію NAS, до якого підключаємося через SNMP або, якщо через SNMP не вдалося - шляхом парсингу стандартної login web page
  2. якщо версію визначити вдалося:
    • відключаємо “мануальне” керування методами підключення
    • виводимо замість чекбокса відповідне повідомлення
  3. якщо версію визначити НЕ вдалося:

* Починаючи з релізу 1.0.4, кастомний API-порт тепер використовується не тільки розширеним конфігуратором мікротікоНАСів, але й динамічним шейпером для Mikrotik та і самим Старгейзером (під час роботи з Mikrotik через API, звісно ж).

Біль

У разі, якщо ви все ж таки використовуєте цей функціонал, замість крутого і модного КучаГен-а та періодично відчуваєте біль, під час використання функціоналу кредитування вашими клієнтами, можете придивитися до опції SC_MTAPI_FIX, яка в теорії, може відтермінувати ваш перехід на КучаГен, але це не точно.