Инструменты пользователя

Инструменты сайта


Боковая панель

Разделы

Общее описание
История изменений
Рекомендации к обновлению
Планы на будущее
Известные проблемы
Онлайн демо
Случайная статья
Видео
Помощь проекту
Люди

FAQ



Редактировать сайдбар

mgmikrotikdhcp

Это старая версия документа!


Авторизация абонентов 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

Далее:

Когда DHCP-сервером у нас сам Mikrotik NAS

в 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'ы и прочее).


Когда DHCP-сервер у нас где-то там, а сам Mikrotik NAS - всего лишь relay

Этот способ, кстати, может подойти и для MikroTik IPoE (Hotspot)
Как и в предыдущем случае в Mikrotik NAS добавляем

  • в System → Scripts скрипт примерно такого содержания(назовем его, скажем, SimpleQueueRebuild)
:local qSpeed "";
:local qTarget "";
:local qIP "";

/queue simple
:local tQueueList [find where (name~"^mlg_" = false)];

:log warning ("Not mlg_ queues found: " . [:len $tQueueList]);

:if ([:len $tQueueList] > 0) do={
    :foreach tQueue in=$tQueueList do={
        :set qSpeed [get $tQueue max-limit];
        :set qTarget [get $tQueue target];
        :set qIP [:pick [:tostr $qTarget] 0 [:find [:tostr $qTarget] "/"]];

        remove $tQueue;

        :if ([:len [find where (name="mlg_$qIP")]] <= 0) do={            
            add name="mlg_$qIP" max-limit=$qSpeed target=$qTarget;
        }        
    }
}
  • дальше идем в System → Scheduler и создаем там задачу, которая будет запускать наш SimpleQueueRebuild, скажем, раз в 30 сек. Можно и чаще. Можно и реже - всецело на ваш вкус.

По сути, эта штука следует тому же принципу, что и предыдущая, только вот в силу того, что DHCP lease выдается не нашим НАСом и «поймать», собственно, этот момент мы не можем - мы производим периодическую проверку на наличие «неправильных» наименований шейперов и делаем из них «правильные».

Стоит ли говорить, что если у вас на каком-то конкретном микротикоНАСе в simple queue есть какие-то свои, нужные вам записи - то приведенный выше скрипт не остановится ни перед чем, лишь бы переделать их полностью. Так что - осторожнее в продакшене, а фильтрование в него внедряйте уже самостоятельно…


Включаем сами графики на Mikrotik NAS

Ну и как показывает практика, нужно не забыть включить эти самые графики на каждом отдельном Mikrotik NAS. Сделать это можно следующим образом:

Tools → Graphing

Нажимаем «Graphing Settings«

и устанавливаем желаемую частоту сбора и записи статистических данных.

Далее обращаем внимание на вкладки «… Rules«

здесь мы можем указать детали сбора статистики(для сущностей типа интерфейсы, правила шейперов и системные ресурсы) и доступа к этой статистике. Поскольку нас интересуют графики трафика наших юзеров - нам нужна вкладка «Queue Rules». Тыкаем по ней, потом по кнопке с синим плюсом «Добавить»:

и добавляем правило для наших будущих графчиков:

  • Simple Queue - шейперы, для которых будет собираться статистика. Здесь логично оставить all.
  • Allow Address - адрес/подсеть с которых будет разрешен доступ к этим графикам. Логично указать здесь адрес нашего Убиллинг сервера. Значение 0.0.0.0/0, естественно, разрешит доступ всем.
  • Store On Disk - хранить ли данные статистики на диске. Лучше включить - мы ведь не хотим, чтобы при каждом перезапуске НАСа у нас обнулялась стата?
  • Allow Target - очень интересная опция, определяющая разрешено ли юзеру, чья стата собирается этим правилом, смотреть свою же статистику. Если вашим пользователям разрешен доступ к http://ROS_NAS_IP/graphs/ и эта опция включена - они смогут видеть каждый свой график. ИРЛ такое, как правило, не практикуется.

Теперь, когда «графичковая тулза» у нас настроена и правило сбора статы добавлено - можем перейти на http://ROS_NAS_IP/graphs/ и лицезреть там наши графички.
А если не лицезреем - значит что-то не так и идем переделываем, ибо в таком случае в Убиллинге мы их, скорее всего, тоже не увидим. Ну или мы забыли добавить в Allow Address адрес своего хоста, с которого пытаемся эти графички увидеть.

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

mgmikrotikdhcp.1576673329.txt.gz · Последние изменения: 2019/12/18 14:48 — bobr