понедельник, 29 августа 2016 г.

Interface (Bridge) List - нововведение в RouterOS.

В версии RouterOS 6.36 среди прочих новых фишек есть такое:
What's new in 6.36 (2016-Jul-20 14:09):
*)firewall - added "/interface list" menu which allows to create list of interfaces which can be used as in/out-interface-list matcher in firewall and use as a filter in traffic-flow; 
  Как мы видим в firewall добавили функционал оперирования с листами интерфейсов. Это типа адрес-листов, но группируются интерфейсы, для указания их в правилах. Как мы знаем, чем меньше правил в фаервооле - тем меньше нагрузка на процессор. Раньше, для того что бы замаскарадить например несколько wan-интерфейсов нужно было обязательно делать несколько правил. Сейчас можно ограничится одним, просто указав группу интерфейсов для которых действует это правило.
  Итак, рассмотрим как ими пользоваться.

 

суббота, 27 августа 2016 г.

L2TP\PPTP\SSTP\OVPN\PPPoE Server Binding в Mikrotik.

  Для настройки VPN-сервера в Mikrotik достаточно открыть доступ по порту для прохождения пакетов на роутер, включить галочку в сервере VPN, завести аккаунты выбрав и настроив нужный профиль.

  После этого будут создавать динамические интерфейсы при подключении клиента впн.
  

Удаляем, переименовываем записи в address-list в Mikrotik.

  Удалить все записи в адрес-листах (удаляет ВСЕ адрес-листы):
/ip firewal address-list remove [find]
  Удалить списки в адрес-листах которые содержат в названии листа "la":
/ip firewal address-list remove [find list~"la"]
  Удалить списки в адрес-листах название которых начинается на "la":
/ip firewal address-list remove [find where list~"^la"]

вторник, 23 августа 2016 г.

Умный скриптовый аналог Netwatch Mikrotik.

  Есть небольшая "домашняя" сеть, в ней несколько клиентов подключено по WiFi методом точка-точка. Расстояния каждого линка небольшие (до 1 км.), эти линки нужно мониторить. Следить мы будет за ответными точками 4 клиентов, если точка отпала - оповещать в чат Telegram операторов. Родной Netwatch нам не подходит, так как не учитывает кратковременные пропадания, которые допустимы (например точку перегрузили). А значит будет куча ложных срабатываний. При написании скрипта нужно учитывать, что он выполняется по регламенту, а значит при пропадании одной из точек сообщения будут отправляться каждый раз при выполнении скрипта (через промежуток времени, который задан в шедуллере). Что-бы этого измежать нам нужно вводить глобальную переменную статуса точек. Однако, глобальные переменные при перезагрузке пропадают, но это тоже учтено в скрипте.

Выводим значение переменной в название/значение другой переменной.

  Выведем значение переменной в название другой переменной:

способ 1:
#есть переменная A c значением 123
:global A 123;
#создадим переменную, взяв в название значение переменной А:
:execute ":global $A";
#создадим переменную, взяв в название значение переменной А, и просвоим ей значение 321:
:execute ":global $A 321";
способ 2(автор vqd):
{
:local tmp "str"
[:parse ":global $tmp"]
}

воскресенье, 21 августа 2016 г.

Подключаем CDMA ИНТЕРТЕЛЕКОМ к Mikrotik.

  В наличии имеется модем, который куплен в отделении оператора ИНТЕРТЕЛЕКОМ. Модем Novatel Wireless 551L.
  К нашему Mikrotik подключена флешка, дабы обеспечить загрузку тонкого клиента PONIX. При подключении через пассивный хаб флешки и модема, связь работала нестабильно. Периодически пропадал модем, или связь прерывалась, поэтому пал выбор на активный хаб: USB 2.0 4-х портовый Хаб с блоком питания ST Lab (U-181 Black), который отлично работает с Микротик.
 

понедельник, 15 августа 2016 г.

Сохраняем глобальные переменные после перезагрузки.

  При перезагрузке роутера глобальные переменные удаляются. Иногда их нужно сохранить, для этого можно использовать, к примеру, комментарии к интерфейсам и т.д. Нужно к вашему скрипту добавить следующий код:
:global save;
:set save 6;
# после введения переменной сохраняем ее в коммент и создаем задание на выполнение при загрузке маршрутизатора
/interface ethernet set ether5 comment=$save;
/system scheduler add name=global_save on-event=":delay 3; :global save [/interface ethernet get ether5 comment]" start-time=startup;
  Глобальную переменную "save" мы вносим в коммент к интерфейсу ether5. Далее ставим задание, которое выполняется при загрузке роутера и извлекает нашу переменную из комментария интерфейса. 

воскресенье, 14 августа 2016 г.

Скрипт меняющий регистр слов в RouterOS.

  Скрипт позволяющий заменить заглавные буквы в строчные и наоборот. Автор предлагает выполнять скрипт при загрузке роутера, и использовать переменные "$toupper" и "$tolower" для преобразования в верхний и нижный регистр соответственно.
  Скрипт для копирования в терминал (добавляется в автозагрузку роутера при старте):
{
/system scheduler add name=goonet.strcase on-event="{\r\
\n:global strcase do={\r\
\n\t:local toreplaceL {\"A\"=\"a\";\"B\"=\"b\";\"C\"=\"c\";\"D\"=\"d\";\"E\"=\"e\";\"F\"=\"f\";\"G\"=\"g\";\"H\"=\"h\";\"I\"=\"i\";\"J\"=\"j\";\"K\"=\"k\";\"L\"=\"l\";\
\"M\"=\"m\";\"N\"=\"n\";\"O\"=\"o\";\"P\"=\"p\";\"Q\"=\"q\";\"R\"=\"r\";\"S\"=\"s\";\"T\"=\"t\";\"U\"=\"u\";\"V\"=\"v\";\"X\"=\"x\";\"Z\"=\"z\";\"Y\"=\"y\";\"W\"=\"w\"\
};\r\
\n\t:local toreplaceU {\"a\"=\"A\";\"b\"=\"B\";\"c\"=\"C\";\"d\"=\"D\";\"e\"=\"E\";\"f\"=\"F\";\"g\"=\"G\";\"h\"=\"H\";\"i\"=\"I\";\"j\"=\"J\";\"k\"=\"K\";\"l\"=\"L\";\
\"m\"=\"M\";\"n\"=\"N\";\"o\"=\"O\";\"p\"=\"P\";\"q\"=\"Q\";\"r\"=\"R\";\"s\"=\"S\";\"t\"=\"T\";\"u\"=\"U\";\"v\"=\"V\";\"x\"=\"X\";\"z\"=\"Z\";\"y\"=\"Y\";\"w\"=\"W\"\
};\r\
\n\t:local toreplace \$toreplaceL;\r\
\n\t:local str \$1;\r\
\n\t:local newStr;\r\
\n\t:local newChar;\r\
\n\r\
\n\t:if (\$2 = \"-u\") do={\r\
\n\t\t:set toreplace \$toreplaceU;\r\
\n\t}\r\
\n\r\
\n\t:for i from=0 to=([:len \$str] - 1) do={\r\
\n\t :local char [:pick \$str \$i];\r\
\n\t :set newChar (\$toreplace->\$char);\r\
\n\t \r\
\n\t :if ([:typeof \$newChar] = \"str\") do={\r\
\n\t\t:set char \$newChar;\r\
\n\t }\r\
\n\t :set newStr (\$newStr . \$char);\r\
\n\t}\r\
\n\t:return \$newStr;\r\
\n}\r\
\n\r\
\n:global tolower do={ :global strcase; return [\$strcase \$1]};\r\
\n:global toupper do={ :global strcase; return [\$strcase \$1 -u]}\r\
\n}" policy=read,write,policy,test start-time=startup
}
 

среда, 10 августа 2016 г.

Скрипт преобразовывающий динамические записи в адрес-листе в статические.

  Введите название в переменную "dyn" динамической записи, которые нужно преобразовать в статические. Вместо NewList введите название нового статического адрес-листа.
:local dyn DynList;
:foreach i in=[/ip firewall address-list find (dynamic=yes)&&(list=$dyn)] do={
:local a [/ip firewall address-list get value-name=address $i]                  
/ip firewall address-list remove $i
/ip firewall address-list add address=$a list=NewList}

вторник, 9 августа 2016 г.

Блокируем доступ к ресурсам с помощью Mikrotik.

  В версии RouterOS v6.36 добавлена очень важная возможность:
firewall — allow to add domain name to address-lists (dynamic entries for resolved addresses will be added to specified list);
  В адрес-листы можно добавлять не только IP-адреса, но и DNS-имена ресурсов. Таким образом стало довольно легко ограничить доступ к ресурса.
  Давайте попробуем ограничить доступ к ресурсу http://www.yaplakal.com/. Первым делом добавим ресурс в адрес-лист:
 /ip firewall address-list add list=www.yaplakal.com address=www.yaplakal.com

воскресенье, 7 августа 2016 г.

Пару полезностей: получаем публичный IP в переменную, подсказка диапазона подсети.

  Иногда требуется получить публичный IP в переменную Mikrotik. Если роутер за натом, то на его интерфейсе внутренний IP. Для получения внешнего можно воспользоваться методом, о котором я писал ранее. Сервис opendns позволяет запросом получить свой внешний IP. Если сделать запрос на сервер 208.67.222.222 домена myip.opendns.com, сервер возвратит ваш IP, с которого сделан запрос. Таким образом скрипт возвратит реальный публичный IP, даже если вы за NAT-ом.
:global currentIP [:resolve myip.opendns.com server=208.67.222.222];
  Так же, если в окне IP/Address List навести на адрес, то Микротик выдаст подсказку, с дапазоном IP, которые входят в текущую маску. Пока такая фича пока доступна только в этом окне.

Защита WAN-интерфейса в Mikrotik.

  После первоначальной настройки роутера Mikrotik его нужно защитить от сканирования и атак из WAN-интерфейса. Это нужно делать обязательно, во избежания неприятностей. Защиту внутри локальной сети тоже нужно производить, но она не так критична, хотя и важна. Сами методы разделю по пунктам.

  1) Отключаем учетную запись admin. Создаем новую учетную запись, Имя должно быть не общепринятое, что-бы комбинация логин-пароль служила доп. защитой. Не используйте имена user, guest, admin и другие стандартные. Не используйте пароли 12345, qwerty и тому подобные, а также совпадающие с логином. Пароль должен быть не меньше 8 символов, содержать буквы верхнего и нижнего регистров, цифры и, в идеале, символы.