В Ubilling починаючи з версії 0.3.1 з'явився сервіс, що дає змогу значно спростити життя під час використання авторизації IP+MAC і роздачі адрес абонентам за допомогою DHCP. Сам сервіс знаходиться в дистрибутиві Ubilling у каталозі /docs/uhw. Суть “спрощення життя” зводитися до того, що користувач, який купив собі роутер, поміняв мережеву карту, притягнув додому ноутбук, при спробі зайти на будь-який сайт, замість улюбленого сайту буде споглядати таку картину:
Невідомим MAC DHCP має видавати адреси зі службової підмережі, яка не має доступу до інтернету і для якої має проводитися заворот на домен нашого сервісу.
1. Додаємо мережу невідомих пристроїв до шаблону головного конфіга dhcpd у Ubilling /config/dhcp/global.template після секції {SUBNETS}:
###### Unknown users network subnet 172.31.0.0 netmask 255.255.240.0 { default-lease-time 3600; option domain-name "isp"; option subnet-mask 255.255.240.0; option domain-name-servers 172.31.0.1; option routers 172.31.0.1; range 172.31.0.100 172.31.0.254; }
2. Переконуємося, що на інтерфейсі, який дивиться на абонентів, призначено відповідний alias у /etc/rc.conf:
ifconfig_em0_alias0="inet 172.31.0.1 netmask 255.255.240.0"
3. Додаємо заворот на себе, для цієї підмережі у /etc/firewall.conf:
#unknown users redirect ${FwCMD} add 5 fwd 127.0.0.1,80 ip from 172.31.0.0/20 to not me dst-port 80
4. Встановлюємо JavaScript редирект із замовчуваного VirtualHost на URL, де розташований UHW, у /usr/local/www/apache24/data/index.php:
<script type="text/javascript"> <!-- window.location = "http://172.31.0.1/uhw/" //--> </script>
(А ніхто до речі не забороняє підняти собі окремий VirtualHost для цього сервісу, скажімо uhw.isp і прописати його собі в локальну зону).
5. Для того, щоб заворот працював для відмінних від “/” посилань, за якими ходить користувач, слід додати таку річ у /usr/local/www/apache24/data/.htaccess:
ErrorDocument 404 /index.php
6. Забираємо uhw з дистрибутива Ubilling у відповідне місце:
# cp -R docs/uhw /usr/local/www/apache24/data/
7. Прописуємо відповідні налаштування у /usr/local/www/apache24/data/uhw/config/mysql.ini:
;Сервер БД server = "localhost" ;Порт БД port = "3306" ;Користувач username = "mylogin" ;Пароль користувача password = "newpassword" ;БД Ubilling db = "stg" character = "UTF8" prefix = "billing"
8. Редагуємо відповідно до наших реалій конфіг /usr/local/www/apache24/data/uhw/config/uhw.ini:
; ; Налаштування ISP і мережеві опції ; ;Чи запитувати в користувача логін, чи орієнтуватися тільки за паролем? USE_LOGIN=0 ; Назва ISP ISP_NAME="Роги&Копита" ; URL сайта ISP ISP_URL="http://ubilling.net.ua" ; Логотип ISP (може бути шляхом або URL) ISP_LOGO="images/logo.png" ; Маска IP підмережі невідомих користувачів UNKNOWN_MASK="172.31." UNKNOWN_LEASE="DHCPACK on " ; Ховати точки в MAC HIDE_DOTS=1 ; Показувати стільки-то останніх символів MAC користувачеві (0 - без обрізки) SHOW_MAC_SIZE=4 ; Шляхи до необхідного ПЗ SUDO_PATH="/usr/local/bin/sudo" CAT_PATH="/bin/cat" GREP_PATH="/usr/bin/grep" TAIL_PATH="/usr/bin/tail" ; За цим шляхом, будуть шукатись рядки з парами IP + MAC користувача. LOG_PATH="/var/log/dhcpd.log" ; ; Налаштування локалізації та сповіщень, сподіваємося тут усе зрозуміло ; ; Заголовок сторінки TITLE="Невідоме обладнання" ; Підзаголовок сторінки SUB_TITLE="Вибачте, ви використовуєте невідоме нам обладнання"; SUP_PHONES="12345 або 54321" SUP_DESC="Час роботи служби техпідтримки" SUP_DAYS="понеділок-субота" SUP_TIME="с 09:00 до 18:00" CALL_US="Будь ласка, зателефонуйте нам за номером" SUP_ACTIVATE="для того, щоб активувати ваше поточне обладнання для роботи в мережі." SUP_REQUIRE="Вам необхідно буде продиктувати службі техпідтримки адресу проживання, ваші П.І.Б. і наступний набір літер або цифр виділених червоним кольором:" SUP_SELFACT="Самостійна активація" SUP_PASS="Пароль користувача" SUP_PASSNOTICE="Пароль користувача НЕ є червоними літерами і цифрами які ви бачите на цій сторінці, дізнатися його ви можете зі свого договору. Він є конфіденційною інформацією, не довіряйте його нікому. Не забудьте перезавантажити ваше обладнання після активації, для отримання нових налаштувань." SUP_ACTIVATE_QUERY="Активувати моє поточне обладнання" SUP_MACEXISTS="...Ой, ваше обладнання здається вже активоване, перезавантажте його." SUP_ERROR="Помилка" SUP_NOMAC="Трапилася дивна помилка, перезавантажте ваше обладнання і спробуйте ще раз." SUP_WRONGPASS="Ви ввели неправильний пароль, у вас, до речі, не так багато спроб. Зверніть увагу на регістр букв." SUP_STRANGE="Дивна помилка, її взагалі не могло статися. Зверніться до адміністратора." SUP_BRUTEERROR="На жаль, ви вичерпали кількість спроб. Самостійна активація неможлива." SUP_SELFACTDONE="Активація вашого нового обладнання завершена. Не забудьте перезавантажити ваш пристрій, для отримання нових налаштувань." ; ; Опції самоактивації обладнання ; ;Чи ввімкнено самоактивацію взагалі? SELFACT_ENABLED=1 ;Тип поля, в яке користувач повинен вводити свій пароль (text або password) SELFACT_FIELDTYPE="text" ;Максимальна кількість неправильних спроб введення пароля перед блокуванням самоактивації SELFACT_BRUTE=3 ;Посилання на працюючий Ubilling для виклику функцій віддаленого API (Опція REMOTEAPI_ENABLED=1 в alter.ini) UBILLING_REMOTE="http://127.0.0.1/billing/" ;Серійний номер вашого Uilling (можна знайти в модулі "Стан системи") UBILLING_SERIAL="серійний номер вашого Ubilling"
Як видно з конфіга, функціонал “Самоактивації” вмикаємо та вимикаємо. Його використання вимагає наявності ввімкненої опції allow_url_fopen у php.ini, а також дуже ретельного тестування.
При використанні КучаГена та авторизації IP+MAC і роздачі адрес абонентам за допомогою DHCP. Сам сервіс знаходиться в дистрибутиві Ubilling у каталозі /docs/uhw_mlg.
Робимо все як у прикладі вище з деякими винятками: