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

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


mgmikrotikdhcp

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
mgmikrotikdhcp [2019/12/18 15:04]
bobr [Когда DHCP-сервер у нас где-то там, а сам Mikrotik NAS - всего лишь relay]
mgmikrotikdhcp [2020/10/05 12:35] (текущий)
bobr [Когда DHCP-сервер у нас где-то там, а сам Mikrotik NAS - всего лишь relay]
Строка 7: Строка 7:
 В то же время нельзя не отметить и положительных моментов(такой себе островок надежды посреди тьмы и грусти):​ В то же время нельзя не отметить и положительных моментов(такой себе островок надежды посреди тьмы и грусти):​
   * Простота реализации. Применение <​del>​мозга</​del>​ глубоких мыслительных процессов практически не требуется.   * Простота реализации. Применение <​del>​мозга</​del>​ глубоких мыслительных процессов практически не требуется.
-  * Очень большая(практически идентичная) схожесть в работе ​Убиллинг ​с Mikrotik по API и авторизацией IP + MAC. Только IPшки и address lists теперь выдает радиус,​ а не Ubilling.+  * Очень большая(практически идентичная) схожесть в работе ​Ubilling ​с Mikrotik по API и авторизацией IP + MAC. Только IPшки и address lists теперь выдает радиус,​ а не Ubilling.
  
 ====== Конфигурация Ubilling ====== ====== Конфигурация Ubilling ======
Строка 21: Строка 21:
 Настраиваем биллинг стандартно как и для любых других устройств Настраиваем биллинг стандартно как и для любых других устройств
  
-в справочнике (сети и услуги) добавляем сети, создаем услуги(тип сети можете указать как "DHCP static"​ или "Other type"+в справочнике (сети и услуги) добавляем сети, создаем услуги(тип сети можете указать как "DHCP static"​ или "Other type")
  
 {{:​ub_add_network.png?&​300|}} {{:​ub_add_service.png?&​300|}} {{:​ub_add_network.png?&​300|}} {{:​ub_add_service.png?&​300|}}
Строка 50: Строка 50:
  
  
-Базовая минимальная настройки завершена. Теперь абоненты будут получать IP из биллинга. Абоненты с положительным состоянием счета будут добавлены в IP -> Firewall -> Address-List,​ в список **ALLOW**, а с отрицательным,​ соответственно,​ в **NOT_ALLOW**. Список **ALLOW** логично выпустить в инет в фаерволле,​ в то время как для **NOT_ALLOW** - заблокировать доступ в инет там же. Сделать это можно как-то так:\\+Базовая минимальная настройка завершена. Теперь абоненты будут получать IP из биллинга. Абоненты с положительным состоянием счета будут добавлены в IP -> Firewall -> Address-List,​ в список **ALLOW**, а с отрицательным,​ соответственно,​ в **NOT_ALLOW**. Список **ALLOW** логично выпустить в инет в фаерволле,​ в то время как для **NOT_ALLOW** - заблокировать доступ в инет там же. Сделать это можно как-то так:\\
 {{:​ros_firewall_allow_not_allow.png?&​300|}} {{:​ros_firewall_allow_not_allow.png?&​300|}}
  
Строка 74: Строка 74:
     /queue simple     /queue simple
     :foreach tQueue in=[/queue simple find target="​$leaseActIP/​32"​] do={     :foreach tQueue in=[/queue simple find target="​$leaseActIP/​32"​] do={
-            ​:set speed [get $tQueue max-limit]; ​       +        ​:set speed [get $tQueue max-limit];
  
-            ​:if ([get $tQueue name] != "​mlg_$leaseActIP"​) do={             +        ​:if ([get $tQueue name] != "​mlg_$leaseActIP"​) do={ 
-                remove $tQueue;  +            remove $tQueue; 
-            } else={ +        } else={ 
-                :set alreadyExists true; +            :set alreadyExists true; 
-            }+        }
     }     }
  
-    :if (!alreadyExists && ​$speed != ""​) do={         +    :if ($speed != ""​) do={ 
-        add name="​mlg_$leaseActIP"​ max-limit=$speed target="​$leaseActIP/​32";​+        :if (alreadyExists) do={ 
 +            :if ([get $tQueue max-limit] != $speed) do={ 
 +                set $tQueue max-limit=$speed;​ 
 +            } else={ 
 +                :log warning ("mlg_ changer: nothing to change for $leaseActIP - already exists with such speed";​ 
 +            } 
 +        ​} else={ 
 +            ​add name="​mlg_$leaseActIP"​ max-limit=$speed target="​$leaseActIP/​32";​ 
 +        }
     }     }
 } }
 </​code>​ </​code>​
   * в **IP -> DHCP Server -> DHCP** ​ в конфиг DHCP сервера в секцию Lease script(вкладка Script в боле поздних версиях ROS) название только что созданного скрипта //​SimpleQueueRebuild//​   * в **IP -> DHCP Server -> DHCP** ​ в конфиг DHCP сервера в секцию Lease script(вкладка Script в боле поздних версиях ROS) название только что созданного скрипта //​SimpleQueueRebuild//​
 +Логика работы данного скрипта следующая:​ в момент выдачи //​DHCP-lease//​ абоненту мы ищем в //simple queues// запись с таким же IP, который мы вот сейчас выдаем,​ и правим эту запись под свои нужды: точнее - удаляем и добавляем такую же, но с нужными нам параметрами. И да, **очень важно отметить**,​ что наличие префикса **mlg_** в наименовании //simple queue-записи//​ - **строго ОБЯЗАТЕЛЬНО**.\\
 Естественно,​ это только пример и в своем конкретном случае вы можете модифицировать его под ваши задачи и реалии(например,​ устанавливать burst'​ы и прочее).\\ Естественно,​ это только пример и в своем конкретном случае вы можете модифицировать его под ваши задачи и реалии(например,​ устанавливать burst'​ы и прочее).\\
  
Строка 105: Строка 114:
 /queue simple /queue simple
 :local tQueueList [find where (name~"​^mlg_"​ = false)]; :local tQueueList [find where (name~"​^mlg_"​ = false)];
 +:local tQueueMLG "";​
  
 :log warning ("Not mlg_ queues found: " . [:len $tQueueList]);​ :log warning ("Not mlg_ queues found: " . [:len $tQueueList]);​
Строка 116: Строка 126:
         remove $tQueue;         remove $tQueue;
  
-        :if ([:​len ​[find where (name="​mlg_$qIP"​)]] ​<= 0) do={             +        :set tQueueMLG ​[find where (name="​mlg_$qIP"​)]
-            add name="​mlg_$qIP"​ max-limit=$qSpeed target=$qTarget;​ + 
-        }        ​+ :if ([:len $tQueueMLG0) do={ 
 +     :foreach eachQueueMLG in=$tQueueMLG do={ 
 + remove $eachQueueMLG;​ 
 +     } 
 +
 + 
 +        ​add name="​mlg_$qIP"​ max-limit=$qSpeed target=$qTarget;​
     }     }
 } }
Строка 124: Строка 140:
   * дальше идем в **System -> Scheduler** и создаем там задачу,​ которая будет запускать наш //​SimpleQueueRebuild//,​ скажем,​ раз в 30 сек. Можно и чаще. Можно и реже - всецело на ваш вкус.\\ ​   * дальше идем в **System -> Scheduler** и создаем там задачу,​ которая будет запускать наш //​SimpleQueueRebuild//,​ скажем,​ раз в 30 сек. Можно и чаще. Можно и реже - всецело на ваш вкус.\\ ​
 По сути, эта штука следует тому же принципу,​ что и предыдущая,​ только вот в силу того, что DHCP lease выдается не нашим НАСом и "​поймать",​ собственно,​ этот момент мы не можем - мы производим периодическую проверку на наличие "​неправильных"​ наименований шейперов и делаем из них "​правильные"​.\\ По сути, эта штука следует тому же принципу,​ что и предыдущая,​ только вот в силу того, что DHCP lease выдается не нашим НАСом и "​поймать",​ собственно,​ этот момент мы не можем - мы производим периодическую проверку на наличие "​неправильных"​ наименований шейперов и делаем из них "​правильные"​.\\
 +И конечно же, **нужно не забыть об очень важном моменте**,​ а именно о том, что наличие префикса **mlg_** в наименовании //simple queue-записи//​ - **строго ОБЯЗАТЕЛЬНО**.\\
 \\ \\
 Стоит ли говорить,​ что если у вас на каком-то конкретном микротикоНАСе в simple queue есть какие-то свои, нужные вам записи - то приведенный выше скрипт не остановится ни перед чем, лишь бы переделать их полностью. Так что - осторожнее в продакшене,​ а фильтрование в него внедряйте уже самостоятельно... ​ Стоит ли говорить,​ что если у вас на каком-то конкретном микротикоНАСе в simple queue есть какие-то свои, нужные вам записи - то приведенный выше скрипт не остановится ни перед чем, лишь бы переделать их полностью. Так что - осторожнее в продакшене,​ а фильтрование в него внедряйте уже самостоятельно... ​
Строка 136: Строка 153:
 Нажимаем "​__Graphing Settings__"​\\ Нажимаем "​__Graphing Settings__"​\\
 {{:​ros_graphs1.png?&​300|}}\\ {{:​ros_graphs1.png?&​300|}}\\
-и устанавливаем желаемую частоту сбора и записи статистических данных.\\+и устанавливаем желаемую частоту сбора и записи статистических данных. Обычно это - 5 минут. Многим,​ наверное,​ хотелось бы чаще, но Микротик пока чаще не умеет.\\
  
 Далее обращаем внимание на вкладки "__... Rules__"​\\ ​ Далее обращаем внимание на вкладки "__... Rules__"​\\ ​
mgmikrotikdhcp.1576674247.txt.gz · Последние изменения: 2019/12/18 15:04 — bobr