Новые возможности в скриптах Роутер Ос 7 Микротик
Появления Роутер ОС 7 давно ждали. Новая система создавалась разумеется для более производительных устройств, имеющих новые процессоры и больше оперативной памяти. Новое ядро Linux, поддержка WireGuard и ZieroTier, новые возможности маршрутизации и BGP, новый users manager, обновление MPLS, запуск приложений в контейнерах далеко не полный список новинок.
Но в этой статье мы будем обсуждать нововведения только в скриптовом языке системы вплоть до актуальной beta версии 7.12.
Итак версия 7 (по состоянию на 7.12 beta 3) получила несколько новых команд:
Необходимость команды полностью очевидна. Вся работа со временем должна проводиться через вычисление универсального времени UNIX, равного числу секунд, прошедших с полуночи (00:00:00 UTC) 1 января 1970 года; этот момент называют «эпохой Unix». Ранее, в том числе во всех ветках Роутер ОС 6, приходилось програмно вычислять UNIX time с помощью весьма объемного скрипта. Теперь для этого достаточно всего одной команды:
:put [:timestamp]
которая вычисляет Unix time с учетом часового пояса пользователя (GMT offset) не считая секунды високосных лет.
Правда формат вывода мне не нравится. Не знаю зачем, то в Рос 7 изменился и сам формат времени. Разработчики РоутерОС зачем то поддерживают вычисление количества недель.
Команда, приведенная выше выдает:
Ну и как это понимать?
Для читабельности можно воспользоваться ещё одной новинкой – командой :tonsec. Обратите внимание, именно :tonsec, а не :tosec. Команда преобразует аргумент в количество наносекунд. Таким образом, для вычислений можно использовать такое преобразование:
:put [:tonsec [:timestamp]]
Получим такой результат:
По сути, без учета GMT
[:tonsec [:timestamp] = [:tonsec ([:totime [/system clock get date]]+[/system clock get time])]
Следующее нововведение – команда :rndnum служит для генерации случайного числа. Без параметров использоваться не может и требует указания диапазона, из которого нужно выбрать случайное число.
:rndnum from=[num] to=[num]
:put [:rndnum from=1 to=99]
Целесообразна для генерации ключей, паролей, выборки случайных значений из диапазона для чего угодно.
:rndstr from=[str] length=[num]
Команда генерации случайной строки. Может использоваться без параметра length, тогда длина строки устанавливается по умолчанию 16 символов.
:put [:rndstr from="abcdef%^&" length=33]
Символы для генерации берутся только из указанных в «from=». Команда также очень полезна для генерации ключей и паролей.
Например, генерация случайного МАК-адреса теперь может быть проще, чем в Роутер ОС 6 (примеры взяты из этого поста официального форума Микротик:
< :local array < "c8:ea:f8"; "70:9f:2d"; "38:3b:26"; "5c:fa:fb"; "9c:7b:ef" >:local part1 ($array->[:rndnum from=0 to=([:len $array]-1)]) :local hex1 [:rndstr length=6 from="0123456789abcdef"] :local part2 ([:pick $hex1 0 2].":".[:pick $hex1 2 4].":".[:pick $hex1 4 6]) :local Mac ($part1.":".$part2) :put $Mac >
Или вообще скриптом в одну строку:
:put "$[:rndstr length=1 from="0123456789ABCDEF"]$[:rndstr length=1 from="048C"]$[:rndstr length=10 from="0123456789ABCDEF"]"
:retry command= delay=[num] max=[num] on-error=
Новая команда :retry призвана обеспечить выполнения инструкций в блоке «command» с максимальным количеством попыток, указанном в параметре max= с заданной задержкой между попытками delay=. При ошибке исполнения блока command выполняется блок on-error=<>
:retry delay=1s max=3 on-error= command=
:retry delay=1s max=3 on-error= command=
# trying…
# trying…
# trying…
# I give up!
Наконец-то появилась команда позволяющая без «танцев с бубнами» узнать имя исполняемого скрипта.
Ранее, в Роутер ОС версии 6, для этого можно было использовать такой трюк (автор Rextended, https://forum.mikrotik.com/viewtopic.php?t=197314#p1009493):
:local UniqueScriptID "QnJhdm8h" :local ThisScriptName [/system script get ([find where source~"$UniqueScriptID"]->0) name] :local AlreadyRunning "Script $ThisScriptName already running" :if ([:len [/system script job find where script=$ThisScriptName]] > 1) do=
Скрипт искал своё имя по уникальной метке в собственном «теле».
Теперь, в Роутер ОС 7 можно так:
/system script add name=log-jobname source=\"/log info \"\$[:jobname]\""
Или просто из кода скрипта
:log info [:jobname]
Подошли к самой сложной новой команде :convert from=[arg] to=[arg] transform=
Команда преобразует указанное значение из одного формата в другой. По умолчанию используется автоматически проанализированное значение, если формат «from» не указан (например, «001» становится «1», «10.1» становится «10.0.0.1» и т.д.). Опция transforme по умолчанию не используется, что эквивалентно transforme=none. При указании transforme=reverse преобразуемые данные переворачиваются.
from задает формат значения — base32, base64, hex, raw, rot13, uri.
to указывает формат выходного значения — base32, base64, hex, raw, rot13, uri.
:put [:convert 001 to=hex ]
:put [:convert [/ip dhcp-client/option/get hostname raw-value] from=hex to=raw ]
:put [:convert "abcd" to=base64]
:put [:convert from=base64 "YWJjZA= lua">:put [:convert from=base64 "YWJjZA= lua">:put [:convert from=base64 "YWJjZA= lua">:put [:terminal/ask "Do you agree to use Router OS 7?"]
В данном случае preinput даётся без самого кодового слова, а prompt опущен.
Чтобы ввести строку из Терминала, в том числе в обоих ветках системы (6 и 7) конечно, можно написать небольшой скрипт с использованием :terminal inkey типа такого:
:local EnterString do=< :local cont; :local string :while ($cont!=13) do=< :if ([:len $string]<254) do=< :local key ([:terminal inkey]) :if ($key!=13) do=< :local char [[:parse "(\"\\$[:pick "0123456789ABCDEF" (($key >> 4) & 0xF)]$[:pick "0123456789ABCDEF" ($key & 0xF)]\")"]] :set string ("$string"."$char")> :set cont $key > > :return $string>
Эта небольшая локальная функция позволяет ввести строку длиной до 254 символов посимвольно. В этом примере ввод прекращается, если пользователь нажимает клавишу «Enter» (код клавиши Enter=$0D (13). Разумеется посимвольный ввод позволяет использовать для конца ввода любые другие ограничения (например другой символ окончания или количество вводимых символов), что позволяет наиболее гибко настроить ввод.
Её можно дополнить разными плюшками с моментальной проверкой вводимых символов, ограничивать длину формируемой строки и.т.д…
Но, если нужно проще и быстрее можно использовать такую фичу:
:local input do= :local login [$input "Enter login:"] :local password [$input "Enter password:"] :put "Login is [$login] and password is [$password]"
Работает это так:
Enter login
value: admin
Enter password
value: test
Login is [admin] and password is [test]
Фишка в том, что пустой :return из Терминала всегда предлагает ввести значение. Окончанием ввода обязательно служит клавиша «Enter».Единственным неудобством будет вывод слова «value:» в качестве приглашения перед вводом, но если это не раздражает, то всё нормально работает.
Удобно использовать из интерактивных скриптов настройки конфигураций и т.д…
В Роутер ОС 7, начиная с версии 7.11 появилась ещё одна возможность — использование :terminal ask. Эта новая команда лишена неудобства, связанного с выводом приглашения ко вводу значения :value. Окончанием ввода также обязательно служит клавиша «Enter».
:global Answer [:terminal/ask "Do you agree to use Router OS 7?"] :put $Answer
Ну или как-то так (для примера):
Можно также задавать любое приглашение ко вводу, если использовать параметр «preinput»:
:global userinput [/terminal/ask preinput prompt="Some text that in prompt"]
Очень полезная новая команда:
:console/inspect as-value request= path=
Инструкция позволяет запросить список команд и параметров дочернего меню.
Гуру официального форума Микротик Amm0 написал скрипт, выполняющий обход всего дерева команд Роутер ОС и получающий список всех команд, параметров и их типов:
:global ast [:toarray ""] :global mkast do= < :global mkast :global ast :local path "" :if ([:typeof $1] ~ "str|array") do=< :set path $1 >:local pchild [/console/inspect as-value request=child path=$path] :foreach k,v in=$pchild do=< :if (($v->"type") = "child") do= < :local astkey "" :local arrpath [:toarray $path] :foreach part in=$arrpath do=< :set astkey "$astkey/$part" >:set ($ast->$astkey->($v->"name")) $v :put "Processing: $astkey $($v->"name") $($v->"node-type")" :local newpath "$($path),$($v->"name")" # TODO use [/console/inspect as-value request=syntax path=$path] [$mkast $newpath] > > return $ast > # & this call start the recursion :put [$mkast]
:put ($ast->"/ip/address")
add=.id=*2;name=add;node-type=cmd;type=child;comment=.id=*3;name=comment;node-type
=cmd;type=child;disable=.id=*4;name=disable;node-type=cmd;type=child;edit=.id=*5;n
ame=edit;node-type=cmd;type=child;enable=.id=*6;name=enable;node-type=cmd;type=chi
ld;export=.id=*7;name=export;node-type=cmd;type=child;find=.id=*8;name=find;node-t
ype=cmd;type=child;get=.id=*9;name=get;node-type=cmd;type=child;print=.id=*a;name=
print;node-type=cmd;type=child;remove=.id=*b;name=remove;node-type=cmd;type=child;
reset=.id=*c;name=reset;node-type=cmd;type=child;set=.id=*d;name=set;node-type=cmd
;type=child
У :console inspect есть и другие возможности (подробнее см. тут)
Ещё одна новая инструкция консоли :task по слухам аналогична инструкциям Linux jobs, fg и bg, позволяющими узнать какой процесс выполняется, переместить процесс в фон или наоборот выдвинуть на первый план и т д… Но пока точных данных как работает команда и какие параметры имеет у меня нет.
Некоторые изменения коснулись команды :execute. Она получила новый атрибут «as-string», которая делает исполнение команды синхронным (например, ожидает завершения скрипта, прежде чем вернуться с новым «as-string»).
Также в версии 7 введена опция «as-value» для «/tool /snmp-get«, которая может получать значения из SNMP OID в скрипт без синтаксического анализа, требуемого в версии 6:
< :local interfaceOneName [/tool/snmp-get oid=.1.3.6.1.2.1.2.2.1.2.1 address=127.0.0.1 community=public as-value] :put $interfaceOneName :put ($interfaceOneName->"value") >
Наконец улучшена работа консоли при создании сложных массивов:
*) console — improved multi-argument property parsing into array;
Не знаю, что конкретно разработчики Микротик имели ввиду, но гуру форума Микиротик уверяют, что сложные массивы в РОС 7 перестали «рассыпаться на указатели», теперь при копировании массива происходит именно его копирование в памяти (мы ведь помним, что у новых устройств Микротик оперативной памяти теперь хватает !), а не создания указателя. То есть массивы — это копии в версии 7, а не «указатели». Можно говорить о («передаче по значению» в версии 7, вместо «передаче по ссылке» в версии 6).
Наглядно проблему иллюстрирует следующий скрипт:
# the mother array :global aGlobalArray (<>); # function to add a sub-array, defined locally, to the global array :global popData do=< :global aGlobalArray; :local subObj (); :set ($aGlobalArray->"sub-obj-1") $subObj; :return "OK"; > :log info "Populate and log"; :local pop [$popData]; :foreach key,value in=$aGlobalArray do=< :log info ("[key:".$key."] soname:".($value->"soname")." | sodata:".($value->"sodata")); # result [key:sub-obj-1] soname:soname-orig | sodata:sodata-orig > :log info "Modify subjobj and log"; :foreach key,value in=$aGlobalArray do=< :set ($value->"sodata") "sodata-modified"; # logging the data here shows it is modified # Adding this line fixes the issue for v7 but is not needed in v6 # :set ($aGlobalArray->"$key") $value; > :foreach key,value in=$aGlobalArray do=< :log info ("[key:".$key."] soname:".($value->"soname")." | sodata:".($value->"sodata")); # v6 result [key:sub-obj-1] soname:soname-orig | sodata:sodata-modified # v7 result [key:sub-obj-1] soname:soname-orig | sodata:sodata-orig >
На более простом примере, которым любезно поделился Amm0: если мы возьмем простой массив с дочерним массивом внутри. Наибольшее внутреннее значение, ca, начинается с «2», и мы создаем новый массив, используя часть первого, затем устанавливаем внутреннее значение подмассива равным 1:
:global myarray > :global mysubarray ($myarray->"child") :set ($mysubarray->"ca") 1
В версии Роутер ОС 6 «mysubarray» фактически ссылается на родительский массив, поэтому при установке значения «mysubarray» родительское значение «myarray» также обновляется:
:put ( ($myarray->"child"->"ca") = 1)
В версии 7 это изменилось, поэтому mysubarray является копией исходного массива, поэтому обновления не влияют на myarray. Таким образом, «:set» устанавливает только тот, который находится в подмассиве. Таким образом, «родительский» массив остается с использованием его исходного значения 2, а не обновленного 1.
:put ( ($myarray->"child"->"ca") = 2)
Дополнительно хочу сообщить новость, касающуюся обоих веток системы и 6 и 7. Недавно пользователь fludorkin обнаружил новый (не документированный) тип данных Роутер ОС – op:
:put [:typeof (>[])]
В последующем этот тип данных был проанализирован и высказано предположение, что «op» возможно означает «only pointer» (только указатель), а конструкция служит ярлыком для обращения к элементам сложных ассоциативных массивов, в том числе если их элементами являются функции. Подробнее об этом можно прочитать тут и тут.
На этом пока всё. Мы рады, что наконец-то разработчики Микротик снизошли до улучшений скриптового языка. Видимо раньше руки им сильно связывало недостаточное количество оперативной памяти у старых RouterBoard, что было преодолено с выходом новых устройств, таких как RB5009, HAP AX2 и HAP AX3, L009 и т д… Хотелось бы пожелать им успехов, пожелать вносить изменения и дополнения системно и аккуратно, чтобы не нарушить работу системы и, конечно, подробно документировать свои разработки. Излишне говорить, что описания изменений бета-версий обкатываются и не помещаются в официальные руководства до выхода stable-версий. Все желающие, прочитавшие данную статью, могут в коментариях оставить свои предложения по улучшению скриптового языка Микротик. Мы обязательно обсудим достойные внимания из них на официальном форуме.
- Микротик
- скрипты
- Lua
- новые возможности Роутер ОС 7
- Lua
- Сетевое оборудование
А Вы уже готовы к RouterOS v7?

- 10 декабря 2021 10:24:00
- Отзывов:
- Просмотров: 21316
Независимо от того, сколько у вас портов Ethernet, какой у вас процессор. Даже самые маленькие маршрутизаторы могут добиться успеха с помощью этого программного обеспечения. С любым устройством MikroTik вы получаете все возможности. Нет платного доступа. А теперь — RouterOS мощнее, чем когда-либо, потому что v7 наконец-то здесь!
ЯДРО
Перво-наперво. Что наконец сделало возможным RouterOS v7 — обновление ядра Linux 5.6. Так много новых функций и поддержки оборудования, а также новых сетевых драйверов. Например, стала возможна долгожданная поддержка WireGuard. Это новое ядро открывает множество возможностей для создания новых интересных типов оборудования. Вскоре вы можете ожидать действительно впечатляющих продуктов только для версии 7.
МАРШРУТИЗАЦИЯ
RouterOS v7 переопределяет маршрутизацию. Благодаря новому стеку IPv6 и новому механизму маршрутизации вы можете рассчитывать на лучшую на сегодняшний день производительность.
Новые функции включают:
• Маршрутизация политики IPv6
• Отдельные процессы для каждого протокола маршрутизации
• Полнофункциональная рекурсивная маршрутизация IPv6
• Поддержка ECMP и VRF для IPv6 (Мы добавили правильную поддержку VRF-lite. И теперь вы можете использовать списки интерфейсов)
И если мы говорим о производительности, есть еще одно изменение, о котором мы должны упомянуть. Помните, как вам иногда требовалось 10-15 минут, чтобы команда печати обработала ваши самые большие таблицы маршрутизации? Что ж, в v7 нам удалось оптимизировать этот процесс. Секунды, а не минуты. Верно. 10 секунд, и все готово.
Мы добавили глобальные идентификаторы маршрутизации. Когда вы запускаете набор протоколов маршрутизации в одном экземпляре, они будут иметь одинаковый идентификатор маршрутизации. Раньше приходилось менять его отдельно для OSPF и BGP. Но не больше! Теперь ID находится в одном месте и может быть легко изменен.
BGP
Теперь давайте посмотрим на еще несколько изменений BGP. Мы решили переписать BGP с нуля.
Новые возможности BGP:
• вышеупомянутый контроль сродства
• снижение потребления памяти — 3,5 миллиона маршрутов с использованием всего 250 МБ ОЗУ!
• значительно улучшенная производительность
• динамическая одноранговая поддержка (шаблоны!)
• возможность видеть полученные маршруты перед фильтрацией
• поддержка списков адресов
И последнее. Мы также переработали фильтры маршрутизации.
Новые фильтры маршрутизации включают:
• введение выбора выхода. Пользователи могут определять правила выбора маршрутов вывода BGP и OSPF
• добавлено большое сообщество и расширенная фильтрация сообществ
• введение списков сообществ
• пункт назначения теперь может быть сопоставлен со списком адресов
• Поддержка RPKI
• подобный сценарию синтаксис правил, позволяющий расширенную фильтрацию и присвоение значений на основе других параметров протокола
(Например, вы можете настроить локальное предпочтение BGP с помощью константы OSPF)
OSPF теперь представляет собой отдельный процесс. Одно только это изменение устраняет многие проблемы, когда OSFP мог ранее потерять соединение при использовании вместе с другими протоколами маршрутизации, интенсивно использующими ЦП. Мы также объединили конфигурацию OSPF v2 и v3. И представили шаблоны интерфейса — для большего контроля над соответствием интерфейса/сети. Кроме того, OSPF теперь поддерживает списки адресов и интерфейсов.
MPLS
MPLS теперь поддерживает списки интерфейсов. Он также имеет поддержку multipath, поддержку LDPv6 и некоторые другие функции, которые мы подробно обсудим в другой раз. Обратите внимание, что многоадресная передача и MPLS теперь включены в системный пакет, а не являются отдельными пакетами.
По поводу использования памяти и производительности. Мы взяли старую RB450 с 250 МБ оперативной памяти. С RouterOS v6 он не мог загрузить ни одного канала BGP. В маршрутизатор просто боролся в течение 9 минут, а затем перезагрузился, так как у него закончилась память. В версии 7 ему удалось загрузить весь канал BGP всего за 2 минуты. И еще оставалось 120 МБ ОЗУ! Итак, RouterOS v7 прекрасна не только для новых интересных продуктов, но и для всех, кто использует старые устройства.
Менеджер пользователей

Классический диспетчер пользователей удален из RouterOS. Однако мы сделали новый. И вы можете настроить его из интерфейса WinBox. В новом Менеджере пользователей есть много новых опций. Например, вы можете создать настраиваемые параметры для отправки своему клиенту. Новый диспетчер пользователей полностью отличается от предыдущей версии, но мы обещаем — вы быстро к нему привыкнете и получите много удовольствия.
Поддержка ZeroTier
Еще одно интересное дополнение — поддержка ZeroTier. ZeroTier сочетает в себе возможности VPN и SDWAN. Он обеспечивает расширенные возможности виртуализации сети и управления. По сути, вы можете пользоваться всеми преимуществами личного облака без сложной конфигурации, настройки доменного имени или общедоступного IP-адреса.
Например, установите клиент iPhone ZeroTier и без проблем подключитесь к домашней локальной сети. Но это не все. ZeroTier позволяет вашим устройствам обмениваться данными напрямую, несмотря на то, что они находятся в разных средах. Поскольку связь не идет через один конкретный сервер, как в случае с VPN, вы не потеряете слишком много скорости. Любые два устройства в мире должны иметь возможность обнаруживать друг друга и обмениваться данными по наиболее оптимальному пути почти мгновенно. С практически нулевой комплектацией. Очевидно, что эта связь зашифрована из конца в конец — не беспокойтесь!
ZeroTier эмулирует настоящий коммутатор Ethernet. У вас могут быть мосты L2 с другими сетями Ethernet — проводными, беспроводными и даже виртуальными. Лучшая часть? Эта служба с открытым исходным кодом предлагает подписки на уровне предприятия, а также несколько бесплатных планов для домашних лабораторий, удаленного доступа, туннелирования и т.д.
Некоторые другие изменения
Есть еще кое-что, новые типы очередей, аппаратное ускорение MLAG уровня 3 на всех устройствах CRS3xx, HW VLAN-фильтрация на коммутаторах RTL8367 и MT7621, IPv6 NAT, новые пакеты для IoT, поддержка MQTT, REST API, L2TPv3, поддержка Let’s Encrypt, VXLAN, новые функции VRPP.. Список можно продолжать и продолжать, но изменений слишком много. Одно можно сказать наверняка — новое ядро меняет все. И да — скоро появятся настоящие беспроводные драйверы Wave 2!
MikroTik RouterOS 7.7.x (stable)
Подробное описание изменений в MikroTik RouterOS 7.7.x. Официальный список исправленных ошибок, добавленного функционала и прочих доработок. Дата выхода первого набора изменений – 12 января 2023, дата выхода последнего набора изменений – 12 января 2023.
Полезные материалы по MikroTik
Углубленный курс "Администрирование сетевых устройств MikroTik" Онлайн-курс по MikroTik с дипломом государственного образца РФ. Много лабораторных работ с проверкой официальным тренером MikroTik. С нуля и до уровня MTCNA.
На Telegram-канале Mikrotik сэнсей можно получить доступ к закрытой информации от официального тренера MikroTik. Подписывайтесь
MikroTik RouterOS 7.7
Дата выхода: 12 января 2023.
- bgp — added comment functionality for BGP VPN (CLI only);
- bgp — do not reflect route back to sender;
- bgp — fixed BGP advertisement PCAP saver;
- bgp — fixed connection establishment using link-local addresses;
- bgp — improved BGP advertisement printing;
- bgp — improved BGP session load distribution across multiple CPU cores;
- bgp — properly set «bgp-ext-communities» from «communities» list;
- bluetooth — added unique advertise message filtering;
- bonding — properly detect VPLS interface state changes;
- branding — fixed identity setting from branding package;
- bridge — added support for static MDB entries;
- bridge — disallow port-controller while the bridge has MSTP enabled;
- bridge — fixed «edge=yes» setting for MSTP;
- bridge — fixed MSTP compatibility with STP;
- bridge — fixed R/M/STP bridge identifier on protocol-mode change;
- bridge — fixed RSTP BCP with bridged PPP interfaces;
- bridge — fixed STP blocking state on port-controller;
- bridge — fixed host moving with fast-path;
- bridge — fixed incorrect root port blocking for MSTP;
- bridge — fixed master port conversion;
- bridge — fixed mst-override port priority for MSTP;
- bridge — fixed port priority for STP and RSTP;
- bridge — improved port-controller system stability;
- bridge — improved system stability when using MSTP and many VLAN mappings;
- bridge — removed «age» monitoring property from the host table;
- certificate — improved Let’s Encrypt logging and error recovery;
- certificate — improved certificate management, signing and storing processes;
- conntrack — improved system stability when PPTP helper is used;
- conntrack — improved system stability when processing SCTP connections on TILE;
- console — updated copyright notice;
- container — fixed access to «/dev/stderr» from containers;
- container — fixed handling of groups and usernames from Dockerfile;
- container — fixed tar extracting;
- container — made «ram» and «tmp» directories use tmpfs;
- crs1xx/2xx — fixed «new-customer-pcp» setting for ACL rules;
- dhcpv6-client — handle receiving of invalid T1 and T2 times;
- discovery — added «discovered-by» parameter to indicate which protocol discovered the neighbor;
- discovery — added «mode» parameter for discovery configuration;
- discovery — fixed neighbor discovery on Mesh interfaces;
- discovery — report IPv6 LL address if global address does not exist;
- disk — added support for manual RAM file system (TMPFS) creation (CLI only);
- disk — improved external storage file system mounting, formatting and naming;
- dns — do not query upstream DNS servers for matched regex records;
- dns — fixed changing of «forward-to» parameter for FWD entries;
- dns — fixed handling of CNAME entry pointing to another FWD entry;
- dns — fixed handling of FWD entries where «forward-to» is a hostname;
- dns — fixed incorrect TTL=0 reporting for cached entries;
- dns — improved resolved static entry addition to address list;
- dns — improved service stability when CNAME points to a FWD entry;
- dns — query upstream DNS servers for other record types even if static entry exists;
- dns — require «write» policy for DNS cache flushing;
- dns — respond with lowest TTL for inner queries containing A, AAAA, CNAME chains;
- filesystem — fixed repartition on devices with containers;
- firewall — added «set-priority» option for IPv6 mangle firewall;
- firewall — made «dynamic» parameter settable for IPv4 address lists;
- hotspot — added «install-hotspot-queue» parameter to control dynamic queue creation;
- hotspot — fixed maximum allowed connections limitation;
- hotspot — fixed minor memory leak after each successful login from WEB;
- hotspot — improved limitation of maximum allowed connections;
- hotspot — improved system stability when clients migrate between bridge ports or VLANs;
- ike1 — disallow «remote-id» setting for identity;
- ike1 — fixed XAuth responder trying to recreate phase 1;
- ike1 — improved expired IPsec-SA processing;
- ike2 — added support for ChaChaPoly1305 encryption;
- ike2 — added support for ChaChaPoly1305 encryption;
- ike2 — added support for DH Group 31 (EC25519) (CLI only);
- ike2 — fixed rekey notify creation;
- ike2 — improved certificate payload parsing;
- interface — do not allow adding invalid «veth» interfaces;
- interface — improved system stability when handling large packets on CCR2216;
- interface — show RTL8153 CDC Modem Device as ethernet;
- ipsec — added «current-address» parameter for peers with DNS address;
- ipsec — added hardware acceleration support for IPQ-6010;
- ipsec — added support for AVX optimized SHA acceleration;
- ipsec — improved «H» (hw-aead) flag presence for accelerated SA’s;
- ipsec — improved IKE payload processing;
- ipsec — improved configuration of IPsec proposal auth-algorithms;
- ipsec — removed Blowfish and Camellia encryption algorithms for IKE;
- ipv6 — do not generate LL addresses for VPN interfaces when IPv6 is disabled;
- ipv6 — do not use invalid/disabled global addresses for IPv6 ND;
- l2tp — added VRF support for L2TP Ether interfaces;
- l3hw — fixed host offloading in a case of MAC address change;
- l3hw — fixed offloaded NAT for CRS309 switch;
- l3hw — improved system stability when disabling or enabling L3HW offloading;
- leds — fixed default LED configuration on netFiber 9;
- leds — fixed turning off LEDs after system shutdown;
- lte — added AT channel support for Telit FN990;
- lte — added CA information in 5G mode;
- lte — fixed error handling on opening AT control channel;
- lte — fixed new MTU value validation;
- lte — improved stability when LTE passthrough is enabled on Chateau 5G;
- lte — properly show leading zeros in MCC and MNC strings;
- lte — show band number in «ca-band» in NSA mode on Chateau 5G;
- lte — use RSRP value reported by MBIM signal for MBIM type modems;
- macsec — fixed packet duplication on Ethernet interface;
- macsec — fixed packet transmission using traffic-generator;
- macsec — fixed packet validation;
- modem — added USB tethering support for Google Pixel 7 devices;
- mpls — added VPLS LDP information in remote/local-mappings;
- mpls — fixed assigning of explicit null label for IPv6;
- netinstall — added «-i » parameter for Netinstall (CLI Linux);
- netinstall — fixed Netinstall procedure on RouterBOOT versions from 3.27 to 6.41;
- netinstall — improved automatic netbooting interface selection;
- netwatch — added support for «https-get» type (CLI only);
- netwatch — fixed reporting of VRF name in logging messages;
- netwatch — improved «interval» and «packet-interval» coexistence for ICMP type;
- ntp — log error message when server is unreachable;
- ospf — fixed MD5 checksum calculation;
- ospf — fixed simple authentication and checksums for NBMA and PTMP links;
- ospf — fixed simple authentication checksum calculation;
- ospf — fixed virtual-link address selection for PTP links;
- ovpn — added «CBC» postfix to AES cipher names;
- ovpn — added «route-nopull» option for client side;
- ovpn — added hardware acceleration support for IPQ-6010;
- ovpn — added support for IPv6 tunneling;
- ovpn — fixed «Called-Station-Id» usage in RADIUS requests;
- package — fixed missing menus when both «lora» and «wifiwave2» packages are installed;
- ping — fixed ARP ping;
- port — added serial port support for Telit FN990 modem;
- port — do not show unusable USB port on hAP ax^2;
- port — fixed R11e-LTE6 port mapping;
- ppp — changed default lease time of dynamic DHCPv6 server to 1 day;
- ppp — do not inherit routing mark for encapsulated packets;
- ppp — fixed displaying of «info» command for PPP client;
- ppp — improved authentication method negotiation;
- pppoe — improved service stability when establishing PPPoE sessions;
- quickset — fixed addition of bridge filter rules in bridged mode;
- quickset — fixed interface list member table on configuration changes;
- quickset — update DNS server IP address when changing router’s IP address;
- rb4011 — fixed reporting of current CPU frequency and changed default frequency to «auto»;
- sfp — added 2.5G SFP module support for RB5009;
- sfp — allow usage of «10G Base-LR» mode for XS+31LC10D module;
- snmp — added support for «lldpRemLocalPortNum» OID’s;
- snmp — improved stability when receiving bogus packets;
- ssh — added support for Ed25519 key exchange;
- ssh — do not allow SHA1 usage with strong crypto enabled;
- ssh — fixed handling of non standard size RSA keys;
- supout — added MSTI and mst-override monitor for bridge MSTP;
- supout — added missing IPv6 firewall sections;
- switch — avoid packet corruption in some setups for 98DX3257, 98DX3255, 98DX4310, 98DX8525 and 98PX1012 switches;
- switch — fixed SFP Tx disable when changing auto-negotiation settings for 98DXxxxx and 98PX1012 switches;
- switch — fixed egress mirror for 98DX4310 and 98DX8525 switches;
- switch — hide invalid settings for 98DX3255 and 98DX8525 switch chips;
- switch — improved 10G, 25G and 40G interface stability for 98DX8208, 98DX8212, 98DX8332, 98DX3257, 98DX4310, 98DX8525, 98DX3255, 98DX8525, 98PX1012 switches;
- switch — improved 10G, 25G and 40G interface stability for 98DX8208, 98DX8212, 98DX8332, 98DX3257, 98DX4310, 98DX8525, 98DX3255, 98PX1012 switches;
- switch — improved 10G, 25G, 40G and 100G interface stability for 98DX8208, 98DX8212, 98DX8332, 98DX3257, 98DX4310, 98DX8525, 98DX3255, 98PX1012 switches;
- switch — improved 10Gbps Ethernet interface stability for 98DX8212 switch;
- switch — improved 25G interface stability for 98PX1012, 98DX4310 and 98DX8525 switches (introduced in v7.6);
- switch — increased the maximum value of «rate» for ACL rules;
- swos — fixed «allow-from-ports» setting;
- swos — fixed SwOS configuration changes from RouterOS;
- swos — improved default SwOS backup file name;
- system — allow up to 4GB of RAM allocation per process on x86, ARM64 and TILE;
- system — improved handling of user policies;
- timezone — updated timezone information from «tzdata2022g» release;
- tr069-client — updated data model to version 2.15;
- traffic-flow — fixed sending of sampling interval;
- tunnels — added VRF support for EoIP, IPIP and GRE tunnels;
- vpls — expose VPLS related debug logs to «vpls» logging topic;
- vrrp — always use slave interface MTU;
- vrrp — improved interface stability on configuration changes;
- vxlan — added «local-address» parameter support;
- vxlan — added VRF support;
- w60g — improved system stability for Cube Pro devices;
- webfig — ensure login page is displayed after each log out;
- webfig — fixed accessing of WebFig when «Interface» menu is disabled by skin;
- webfig — fixed displaying of VRF routes;
- webfig — fixed input validation for «VPLS ID» parameter;
- webfig — fixed setting of «DHCP Option Set» parameter;
- webfig — improved WEB caching capabilities;
- webfig — properly detect current location for navigation buttons;
- webfig — properly show limited number of available options;
- wifiwave2 — added «datapath» settings to configure data forwarding for an interface (CLI only);
- wifiwave2 — added «ft-preserve-vlanid» parameter to control whether to change VLAN ID after FT;
- wifiwave2 — added «provisioning» menu to automatically assign interface configurations to radios (CLI only);
- wifiwave2 — added disable/enable commands to configuration profile sub-menus (CLI only);
- wifiwave2 — added information of per-station throughput in the registration table;
- wifiwave2 — added initial CAPsMAN support (only compatible with wifiwave2 interfaces) (CLI only);
- wifiwave2 — added interworking/Hotspot 2.0 support (CLI only);
- wifiwave2 — added more informative log messages on configuration profile changes;
- wifiwave2 — added option to set per-client vlan-id in access list (only supported on 802.11ax interfaces) (CLI only);
- wifiwave2 — do not permit a client device to be connected to more than one interface at a time;
- wifiwave2 — fixed «radio-mac» provisioning matcher;
- wifiwave2 — fixed 4-way handshake with TKIP;
- wifiwave2 — improved compliance with regulatory domain information;
- wifiwave2 — improved general system stability;
- wifiwave2 — improved system stability when multiple virtual AP are configured;
- wifiwave2 — properly report interface on which traffic is received when multiple station interfaces are used concurrently;
- wifiwave2 — released packages for MMIPS, PPC, TILE and x86;
- wifiwave2 — removed maximum limit for group key update interval and changed the default to 1 day;
- winbox — added «Active» prefix for current «Circuit ID» and «Cookie Length» fields for L2TP-Ether interfaces;
- winbox — added «Make Static» button to «IP/DHCP Server/Leases» menu;
- winbox — added «bus» parameter for «USB Power Reset» command on Chateau ax;
- winbox — added missing «force» parameter for new «IP/DHCP Server/Options» entries;
- winbox — added missing «vlan-id» column under «IP/Hotspot/Hosts» table;
- winbox — do not show LACP related status parameters for other bonding types;
- winbox — fixed default MTU value for CAP interfaces;
- winbox — fixed minor typo in «Zerotier» menu;
- winbox — improved handling of large WinBox protocol messages;
- winbox — increased maximum number of Winbox read-only sessions 5->25;
- winbox — properly save «Interfaces/Detect Internet/Detect Internet State» menu in session file;
- winbox — removed bogus VRF tab from «Interface» menu;
- winbox — show «Switch» menu on Chateau 5G ax;
- winbox — show «Switch» menu on NetFiber 9;
- winbox — show «System/Health/Settings» only on boards that have configurable values;
- winbox — show «System/RouterBOARD/Mode Button» on devices that have such feature;
- winbox — show «USB Power Reset» menu on Chateau 5G ax;
- winbox — show dynamic comment in WifiWave2 registration table;
- wireless — fixed «nstreme» related parameter control in skins;
- wireless — fixed setting of realms interworking parameter if realms-raw is unset;
- x86 — added support for SUN 10G NICs;
- x86 — improved igc driver support.
Полезные материалы по MikroTik
Углубленный курс "Администрирование сетевых устройств MikroTik" Онлайн-курс по MikroTik с дипломом государственного образца РФ. Много лабораторных работ с проверкой официальным тренером MikroTik. С нуля и до уровня MTCNA.
На Telegram-канале Mikrotik сэнсей можно получить доступ к закрытой информации от официального тренера MikroTik. Подписывайтесь
Обновление MikroTik RouterOS 7.1
Производитель MikroTik обновил операционную систему RouterOS до версии 7.1.
Прошивку RouterOS версии 7.1 можно скачать с сайта http://www.mikrotik.com/download.html
В версии7.1 сделаны следующие улучшения и исправления (1 декабря 2021 г.):
MAJOR CHANGES
———————-
!) updated Linux Kernel based on version 5.6.3;
!) completely new NTP client and server implementation;
!) completely new User Manager implementation;
!) merged individual packages, only bundle and a few extra packages remain;
!) new Command Line Interface (CLI) style (RouterOS v6 commands are still supported);
!) support for Let’s Encrypt certificate generation;
!) support for REST API;
!) support for UEFI boot mode on x86;
———————-
NETWORKING
———————-
!) CHR FastPath support for «vmxnet3» and «virtio-net» drivers;
!) support for «Cake» and «FQ_Codel» type queues;
!) support for IPv6 NAT;
!) support for Layer 3 hardware acceleration on all CRS3xx devices;
!) support for MBIM driver with basic functionality support for all modems with MBIM mode;
!) support for MLAG on CRS3xx devices;
!) support for VRRP grouping and connection tracking data synchronization between nodes;
!) support for Virtual eXtensible Local Area Network (VXLAN);
———————-
ROUTING
———————-
!) completely new BGP implementation with performance improvements;
!) completely new IPv6 stack;
!) completely new MPLS implementation with interface lists, multipath and LDPv6 support;
!) completely new OSPF implementation with performance improvements;
!) completely new routing filtering with script-like rule syntax, RPKI support and large and extended community filtering;
!) support for IPv6 ECMP and VRF (including VRF-lite);
!) support for IPv6 recursive routing and policy routing;
———————-
VPN
———————-
!) support for L2TPv3;
!) support for OpenVPN UDP transport protocol;
!) support for WireGuard;
!) support for ZeroTier on ARM and ARM64 devices;
———————-
WIRELESS
———————-
!) completely new alternative wireless package «wifiwave2» with 802.11ac Wave2, WPA3 and 802.11w management frame protection support (requires ARM CPU and 256MB RAM);
———————-