Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
| Порівняння попередніх версій Попередня ревізія | Попередня ревізія | ||
|
multigen [2019/11/05 18:24] |
multigen [2025/10/15 15:24] (поточний) nightfly [Використання] |
||
|---|---|---|---|
| Рядок 1: | Рядок 1: | ||
| + | ====== КупаГен aka MultiGen ====== | ||
| + | Ця механіка з' | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ===== Попереднє налаштування ===== | ||
| + | |||
| + | Починаючи з FreeBSD 12.1 достатньо лише увімкнути (і запустити) FreeRADIUS в **/ | ||
| + | |||
| + | Ми сподіваємося, | ||
| + | |||
| + | <file ini rc.conf> | ||
| + | radiusd_enable=" | ||
| + | </ | ||
| + | |||
| + | Тепер можна спробувати запустити FreeRADIUS, але поки що в debug-режимі: | ||
| + | < | ||
| + | # radiusd -X | ||
| + | </ | ||
| + | |||
| + | І якщо ви побачили щось схоже на код нижче - можна продовжувати далі. | ||
| + | < | ||
| + | ... adding new socket proxy address * port 10049 | ||
| + | Listening on authentication address * port 1812 | ||
| + | Listening on accounting address * port 1813 | ||
| + | Listening on command file / | ||
| + | Listening on authentication address 127.0.0.1 port 18120 as server inner-tunnel | ||
| + | Listening on proxy address * port 1814 | ||
| + | Ready to process requests. | ||
| + | </ | ||
| + | |||
| + | ===== Включення підтримки в Ubilling | ||
| + | |||
| + | Вмикаємо відповідну опцію у **alter.ini** | ||
| + | |||
| + | <code ini> | ||
| + | ;Чи ввімкнено підтримку КупаГен? | ||
| + | MULTIGEN_ENABLED=1 | ||
| + | ;Ця опція не обов' | ||
| + | ;Може зменшити швидкодію. Радикально. Рекомендується вмикати тільки на час налагодження або конфігурації нових NAS. Логує в exports/ | ||
| + | ; | ||
| + | ;Шлях і опції за замовчуванням radclient для КупаГен. Необов' | ||
| + | ; | ||
| + | ; | ||
| + | ;за допомогою вирубування автокомміта і ручної роботи з транзакціями. | ||
| + | ; | ||
| + | ; | ||
| + | ; | ||
| + | ; | ||
| + | ; | ||
| + | ; | ||
| + | ; | ||
| + | ;Чи ввімкнено планетарний тельбухач Ішимура? | ||
| + | ISHIMURA_ENABLED=0 | ||
| + | ; | ||
| + | ;Так, циферка в секундах. Відсутня або рівна 0 опція вимикає кешування взагалі. | ||
| + | ; | ||
| + | ; | ||
| + | MULTIGEN_POD_ON_IP_CHANGE=0 | ||
| + | ; | ||
| + | MULTIGEN_POD_ON_MAC_CHANGE=0 | ||
| + | ;Чи ввімкнено Mea Culpa -свої логіни для авторизації абонентів, | ||
| + | MEACULPA_ENABLED=0 | ||
| + | </ | ||
| + | |||
| + | ===== Використання | ||
| + | Виклик [[remoteapi|RemoteAPI]] | ||
| + | ubapi " | ||
| + | | ||
| + | Куди це засовувати? | ||
| + | |||
| + | **crontab -e** | ||
| + | <code bash> | ||
| + | */2 * * * * /bin/ubapi " | ||
| + | </ | ||
| + | |||
| + | (воно там вже є) | ||
| + | |||
| + | ===== Конфігурація серверів доступу ===== | ||
| + | Все гранично прозоро і тривіально | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Кожен NAS може мати свої власні механіки роботи, | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Слід також зазначити, | ||
| + | \\ | ||
| + | \\ | ||
| + | **Не забуваємо**, | ||
| + | \\ | ||
| + | **Не забуваємо №2**, що під час усіляких ваших експериментів із набором атрибутів (типу видалення, | ||
| + | |||
| + | ===== Кастомні налаштування NAS ===== | ||
| + | |||
| + | Також, починаючи з Ubilling 1.2.8, з' | ||
| + | |||
| + | {{: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Зайвохромосомні NAS мають пріоритет перед нормальними | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Власне ось результат | ||
| + | |||
| + | {{: | ||
| + | |||
| + | І звичайно ж **не забуваємо**, | ||
| + | |||
| + | ===== Як перевірити чи все гаразд? | ||
| + | При запущеному в одному вікні | ||
| + | # radiusd -X | ||
| + | | ||
| + | робимо в сусідньому щось на кшталт | ||
| + | |||
| + | # radtest testlogin testpassword 127.0.0.1 0 dec0071981b1 | ||
| + | | ||
| + | Де testlogin і testpassword, | ||
| + | |||
| + | Що ми маємо побачити в результаті? | ||
| + | |||
| + | < | ||
| + | root@test11_1x64: | ||
| + | Sending Access-Request of id 252 to 127.0.0.1 port 1812 | ||
| + | User-Name = " | ||
| + | User-Password = " | ||
| + | NAS-IP-Address = 127.0.0.1 | ||
| + | NAS-Port = 0 | ||
| + | Message-Authenticator = 0x00000000000000000000000000000000 | ||
| + | rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=252, length=32 | ||
| + | Framed-IP-Address = 172.16.0.2 | ||
| + | Framed-IP-Netmask = 255.255.255.0 | ||
| + | |||
| + | </ | ||
| + | |||
| + | У випадку, | ||
| + | < | ||
| + | root@test11_1x64: | ||
| + | radclient:: Failed to find IP address for test11_1x64 | ||
| + | radclient: Nothing to send. | ||
| + | </ | ||
| + | |||
| + | варто звернути увагу як мінімум на **/ | ||
| + | < | ||
| + | 127.0.0.1 | ||
| + | </ | ||
| + | |||
| + | ===== Макроси ===== | ||
| + | |||
| + | Наразі підтримуються такі макроси, | ||
| + | |||
| + | ^ Макрос | ||
| + | | {IP} | IP користувача у форматі x.x.x.x | | ||
| + | | {MAC} | MAC користувача у форматі за замовчуванням aa: | ||
| + | | {MACFDL} | ||
| + | | {MACFML} | ||
| + | | {MACTMU} | ||
| + | | {MACTML} | ||
| + | | {LOGIN} | ||
| + | | {USERNAME} | ||
| + | | {PASSWORD} | ||
| + | | {TARIFF} | Ім' | ||
| + | | {STATE} | Стан користувача (ON-LINE/ | ||
| + | | {NETID} | ID мережі нетхоста користувача | | ||
| + | | {NETADDR} | Мережа користувача | | ||
| + | | {NETCIDR} | CIDR мережі користувача | | ||
| + | | {NETSTART} | початкова IP мережі користувача | | ||
| + | | {NETEND} | кінцева IP мережі користувача | | ||
| + | | {NETDESC} | Мережа користувача у форматі network/ | ||
| + | | {NETMASK} | Маска мережі користувача у форматі xxx.xxx.xxx.xxx.xxx | | ||
| + | | {SPEEDDOWN} | Швидкість даунлоду користувача в Kbit/s | | ||
| + | | {SPEEDUP} | Швидкість аплоду користувача в Kbit/s | | ||
| + | | {SPEEDDOWNB} | Швидкість даунлода користувача в bit/s з 1024 бітами в кілобіті | | ||
| + | | {SPEEDUPB} | Швидкість аплоду користувача в bit/s з 1024 бітами в кілобіті | | ||
| + | | {SPEEDDOWNBD} | Швидкість даунлода користувача в bit/s з 1000 бітами в кілобіті | | ||
| + | | {SPEEDUPBD} | Швидкість аплоду користувача в bit/s з 1000 бітами в кілобіті | | ||
| + | | {SPEEDDOWNBC} | Швидкість даунлода користувача в bit/s з 1024 бітами в кілобіті поділена на 8 (Cisco burst) | | ||
| + | | {SPEEDUPBC} | Швидкість аплоду користувача в bit/s з 1024 бітами в кілобіті поділена на 8 (Cisco burst) | | ||
| + | | {SPEEDMRL} | Швидкість даунлода і аплода у вигляді downspeedk/ | ||
| + | | {USERSWITCHIP} | IP присвоєного світча користувача у форматі x.x.x.x | | ||
| + | | {USERSWITCHPORT} | Порт присвоєного світча користувача | | ||
| + | | {USERSWITCHMAC} | MAC присвоєного світча користувача у форматі aa: | ||
| + | | {RADCLIENT} | Шлях до radclient з опціями за замовчуванням | | ||
| + | | {SUDO} | Шлях до sudo за замовчуванням | | ||
| + | | {PRINTF} | Шлях до printf за замовчуванням | | ||
| + | | {NASIP} | IP NAS-а користувача | | ||
| + | | {NASSECRET} | Radius secret NAS-а користувача | | ||
| + | | {NASPORT} | Віддалений порт для radclient за замовчуванням (3799) | | ||
| + | | {NETEXT} | Користувацькі підмережі з NETWORKS_EXT для Framed-Route атрибуту | | ||
| + | |||
| + | |||
| + | ===== Шаблони атрибутів з однаковими іменами ===== | ||
| + | Слід також зауважити, | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Внаслідок чого, ми отримаємо від FreeRADIUS таку відповідь: | ||
| + | |||
| + | <code bash> | ||
| + | .... | ||
| + | mpd-limit = " | ||
| + | mpd-limit = " | ||
| + | .... | ||
| + | </ | ||
| + | |||
| + | це ж стосується і випадків, | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ===== Сервіси NAS ===== | ||
| + | |||
| + | Наразі підтримуються сервіси PoD (RADIUS Packet of Disconnect) і CoA (RADIUS Change of Authorization). У межах цих сервісів ви можете скриптувати все, що вам заманеться, | ||
| + | |||
| + | ^ Сервіс | ||
| + | | PoD | Користувач активний | Користувач не активний | PoD | | ||
| + | | CoA | Користувач не активний | Користувач активний | CoA Connect | | ||
| + | | CoA | Користувач активний | Користувач не активний | CoA Disconnect | | ||
| + | | CoA | Користувач активний | Користувач активний + змінився будь-який його атрибут | CoA Disconnect + CoA Connect | | ||
| + | |||
| + | Відповідно для сервісу POD+CoA при вивалюванні користувача в офлайн правила послідовно ті самі. Для користувачів, | ||
| + | |||
| + | ===== Багато NAS-ів ===== | ||
| + | |||
| + | Ніхто вас не змушує вручну клікати всю конфігурацію для кожного вашого NAS сервера. Ви можете конфігурувати тільки один і переносити всі його опції, шаблони атрибутів і сервісів на інші просто за допомогою " | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ===== А що по швидкості? | ||
| + | Наздожени мене цегла | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ===== Про облік трафіку ===== | ||
| + | Сам сервер FreeRADIUS вести облік трафіку не буде. Трафік має враховуватися за допомогою протоколу NetFlow: сенсором виступатиме сам RADIUS-клієнт, | ||
| + | |||
| + | ===== А все ж таки якщо дуже хочеться? | ||
| + | Якщо дуже хочеться, | ||
| + | < | ||
| + | 20 * * * * /bin/ubapi " | ||
| + | </ | ||
| + | Це запихатиме дані з акаунтингу в Stargazer. | ||
| + | ===== А можна щоб це було не так повільно? | ||
| + | Так, тепер можна. Використовуйте для тельбуханя даних акаунтингу планетарний тельбухач Ішимура. Просто ввімкнувши опцію | ||
| + | <code ini> | ||
| + | ISHIMURA_ENABLED=1 | ||
| + | </ | ||
| + | у конфігах [[alteriniconf|alter.ini]] та [[userstats|userstats.ini]]. Це активує шоковий двигун, | ||
| + | |||
| + | ===== А як чистити дані акаунтингу? | ||
| + | |||
| + | В Ubilling 1.3.0 і далі, все це керується опціями MULTIGEN_AUTOCLEANUP_* конфіга [[alteriniconf|alter.ini]] і відбувається **автоматично**. | ||
| + | |||
| + | У більш ранніх релізах, | ||
| + | |||
| + | Наприклад якихось таких: | ||
| + | <code php> | ||
| + | $cleanupDays=30; | ||
| + | |||
| + | $query=" | ||
| + | nr_query($query); | ||
| + | |||
| + | $query=" | ||
| + | nr_query($query); | ||
| + | </ | ||
| + | |||
| + | Зберігаємо якось так | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Після чого залишаємо періодичний виклик у **crontab -e** якось так | ||
| + | |||
| + | <code bash> | ||
| + | 4 4 * * * / | ||
| + | </ | ||
| + | |||
| + | ===== А як зробити з аккаунтингу DN? ===== | ||
| + | У разі, якщо ви використовуєте планетарний тельбухач Ішимура, | ||
| + | |||
| + | <code php> | ||
| + | | ||
| + | //directory clanup | ||
| + | $oldDnData = rcms_scandir($dnPath); | ||
| + | if (!empty($oldDnData)) { | ||
| + | foreach ($oldDnData as $deleteFile) { | ||
| + | unlink($dnPath . $deleteFile); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | $accounting = new NyanORM(MultiGen:: | ||
| + | $accounting-> | ||
| + | $accounting-> | ||
| + | $allSessions = $accounting-> | ||
| + | |||
| + | //saving new DN data | ||
| + | if (!empty($allSessions)) { | ||
| + | foreach ($allSessions as $io=> | ||
| + | file_put_contents($dnPath.$each[' | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | */20 * * * * / | ||
| + | </ | ||
| + | |||
| + | ===== Mea Culpa ===== | ||
| + | |||
| + | Документація поки відстуня | ||