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

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


mgmikrotikdhcp

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
mgmikrotikdhcp [2020/01/20 10:25]
bobr [Когда DHCP-сервером у нас сам Mikrotik NAS]
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 ======
Строка 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";​ 
 +        }
     }     }
 } }
Строка 106: Строка 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]);​
Строка 117: Строка 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;​
     }     }
 } }
Строка 125: Строка 140:
   * дальше идем в **System -> Scheduler** и создаем там задачу,​ которая будет запускать наш //​SimpleQueueRebuild//,​ скажем,​ раз в 30 сек. Можно и чаще. Можно и реже - всецело на ваш вкус.\\ ​   * дальше идем в **System -> Scheduler** и создаем там задачу,​ которая будет запускать наш //​SimpleQueueRebuild//,​ скажем,​ раз в 30 сек. Можно и чаще. Можно и реже - всецело на ваш вкус.\\ ​
 По сути, эта штука следует тому же принципу,​ что и предыдущая,​ только вот в силу того, что DHCP lease выдается не нашим НАСом и "​поймать",​ собственно,​ этот момент мы не можем - мы производим периодическую проверку на наличие "​неправильных"​ наименований шейперов и делаем из них "​правильные"​.\\ По сути, эта штука следует тому же принципу,​ что и предыдущая,​ только вот в силу того, что DHCP lease выдается не нашим НАСом и "​поймать",​ собственно,​ этот момент мы не можем - мы производим периодическую проверку на наличие "​неправильных"​ наименований шейперов и делаем из них "​правильные"​.\\
 +И конечно же, **нужно не забыть об очень важном моменте**,​ а именно о том, что наличие префикса **mlg_** в наименовании //simple queue-записи//​ - **строго ОБЯЗАТЕЛЬНО**.\\
 \\ \\
 Стоит ли говорить,​ что если у вас на каком-то конкретном микротикоНАСе в simple queue есть какие-то свои, нужные вам записи - то приведенный выше скрипт не остановится ни перед чем, лишь бы переделать их полностью. Так что - осторожнее в продакшене,​ а фильтрование в него внедряйте уже самостоятельно... ​ Стоит ли говорить,​ что если у вас на каком-то конкретном микротикоНАСе в simple queue есть какие-то свои, нужные вам записи - то приведенный выше скрипт не остановится ни перед чем, лишь бы переделать их полностью. Так что - осторожнее в продакшене,​ а фильтрование в него внедряйте уже самостоятельно... ​
mgmikrotikdhcp.1579508738.txt.gz · Последние изменения: 2020/01/20 10:25 — bobr