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

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


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

Разделы

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

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
Главный микротико-скрипто-тестер - reductor

mgmikrotikdhcp.1576674247.txt.gz · Последние изменения: 2019/12/18 15:04 — bobr