Авторизация абонентов DHCP на MikroTik методом IP + MAC при помощи КучаГен

Сразу следует оговорится, что информация ниже создана больше для развлекательных целей в общеобразовательных целях и к применению в реальной жизни рекомендуется не особо. Потому мы принимаем как данность, что все, кто все же решиться применить это в продакшине, скорее всего, понимают все возможные боль и безисходность последствия и ограничения, с которыми они всенепременно столкнутся:

  • Абсолютная невозможность какого либо управления абонентом после получения им DHCP lease от микротика. Никаких CoA и PoD. Только таймаут выданного лиза может изменить состояние подключения абонента.
  • Обязательное использование фаерволла и address lists для предоставления/ограничения доступа абоненту. Ну или каких либо других ухищрений на ваш вкус.
  • Никакого Walled Garden и прочих удобств, как у того же HotSpot. Так что, например, перенаправление должников будете мастерить сами.

В то же время нельзя не отметить и положительных моментов(такой себе островок надежды посреди тьмы и грусти):

  • Простота реализации. Применение мозга глубоких мыслительных процессов практически не требуется.
  • Очень большая(практически идентичная) схожесть в работе Убиллинг с Mikrotik по API и авторизацией IP + MAC. Только IPшки и address lists теперь выдает радиус, а не Ubilling.

Конфигурация Ubilling

Уже должен быть настроен КучаГен.
Не забываем добавить словарь для Mikrotik /usr/local/etc/raddb/dictionary

$INCLUDE        /usr/local/etc/raddb/dictionary_preset/mikrotik.dictionary

После чего перезапускаем FreeRADIUS

Настраиваем биллинг стандартно как и для любых других устройств

в справочнике (сети и услуги) добавляем сети, создаем услуги(тип сети можете указать как «DHCP static» или «Other type»

добавляем NAS

В конфигурации КучаГен для нашего NAS настраиваем атрибуты:

Как уже упоминалось выше - для NAS MikroTik + DHCP НЕ работают Coa\PoD, поэтому отключатся\включатся абоненты будут по истечении lease time (Session-Timeout). Время выберите подходящее для себя. В нашем примере абоненты, у которых баланс положительный, будут получать IP на 2 часа.

Конфигурация Mikrotik

Включаем RADIUS, и его работу с DHCP

В поле Address вписываем адрес нашего Ubilling(именно там ведь живет наш радиус?). В поле Secret вводим секрет, который можно посмотреть в Ubilling:

На интерфейс, который смотрит в сторону клиентов вешаем сеть:

И создаем на этом же интерфейсе dhcp-server(в поле Address Pool указываем static-only. В поле Use RADIUS ставим yes):

В IP → DHCP Server → Networks Настраиваем добавляем нашу абонентскую сеть и указываем адреса Default gateway и DNS, которые будут выдаваться клиентам:

Базовая минимальная настройки завершена. Теперь абоненты будут получать IP из биллинга. Абоненты с положительным состоянием счета будут добавлены в IP → Firewall → Address-List, в список ALLOW, а с отрицательным, соответственно, в NOT_ALLOW. Список ALLOW логично выпустить в инет в фаерволле, в то время как для NOT_ALLOW - заблокировать доступ в инет там же. Сделать это можно как-то так:

Получение графиков по статистике трафика абонента с Mikrotik

Если вы очень хотите получать графики по статистике трафика абонента с Mikrotik так же, как при работе с Mikrotik по API - можете использовать следующий костыль:

Включаем опцию alter.ini

MULTIGEN_USE_ROS_TRAFFIC_GRAPHS=1

Далее, в Mikrotik NAS добавляем

  • в System → Scripts скрипт примерно такого содержания(назовем его, скажем, SimpleQueueRebuild)
:global leaseBound;
:global leaseActIP;
:local speed "";
:local alreadyExists false;

:if ($leaseBound = 1) do={
    /queue simple
    :foreach tQueue in=[/queue simple find target="$leaseActIP/32"] do={
            :set speed [get $tQueue max-limit];        

            :if ([get $tQueue name] != "mlg_$leaseActIP") do={            
                remove $tQueue; 
            } else={
                :set alreadyExists true;
            }
    }

    :if (!alreadyExists && $speed != "") do={        
        add name="mlg_$leaseActIP" max-limit=$speed target="$leaseActIP/32";
    }
}
  • в IP → DHCP Server → DHCP в конфиг DHCP сервера в секцию Lease script(вкладка Script в боле поздних версиях ROS) название только что созданного скрипта SimpleQueueRebuild

Естественно, это только пример и в своем конкретном случае вы можете модифицировать его под ваши задачи и реалии(например, устанавливать burst'ы и прочее).

Отдельная благодарность за помощь в создании данного мануала - mohax_kh_ua

mgmikrotikdhcp.txt · Последние изменения: 2019/11/27 22:10 — bobr
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki