Зміст

UHW aka Unknown HardWare helper

В Ubilling починаючи з версії 0.3.1 з'явився сервіс, що дає змогу значно спростити життя під час використання авторизації IP+MAC і роздачі адрес абонентам за допомогою DHCP. Сам сервіс знаходиться в дистрибутиві Ubilling у каталозі /docs/uhw. Суть “спрощення життя” зводитися до того, що користувач, який купив собі роутер, поміняв мережеву карту, притягнув додому ноутбук, при спробі зайти на будь-який сайт, замість улюбленого сайту буде споглядати таку картину:


Встановлення та налаштування

Невідомим MAC DHCP має видавати адреси зі службової підмережі, яка не має доступу до інтернету і для якої має проводитися заворот на домен нашого сервісу.

1. Додаємо мережу невідомих пристроїв до шаблону головного конфіга dhcpd у Ubilling /config/dhcp/global.template після секції {SUBNETS}:

global.template
  ###### 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:

rc.conf
ifconfig_em0_alias0="inet 172.31.0.1 netmask 255.255.240.0"

3. Додаємо заворот на себе, для цієї підмережі у /etc/firewall.conf:

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:

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:

.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:

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:

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, а також дуже ретельного тестування.

UHW_MLG

При використанні КучаГена та авторизації IP+MAC і роздачі адрес абонентам за допомогою DHCP. Сам сервіс знаходиться в дистрибутиві Ubilling у каталозі /docs/uhw_mlg.

UHW_MLG Вам потрібен, якщо:

  1. Сконфігуровано КучаГен.
  2. У ролі DHCP сервера виступає NAS/BRAS
  3. Ваш NAS/BRAS шле radius accounting

Встановлення та налаштування

Робимо все як у прикладі вище з деякими винятками:

Корисні опції

  1. alter.ini: NMLEASES = /var/log/radius.log
  2. alter.ini: NMLEASES_EXTEND=1