четверг, 30 июня 2016 г.

Создание файла в Mikrotik со своим расширением (.html или другим).

  В Микротик можно создать два типа файла. Командой "export" создается файл ".rsc", а команда "print" - файл ".txt".
  Например, команда "/ip neighbor export file=0" создает файл 0.rsc; команда "/ip neighbor print file=0" создает файл 0.txt.
  Напрямую создать файл с другим расширение - нельзя. Но можно использовать обходной путь. Если этот файл скинуть на этот же роутер через ftp, то в процессе можно будет переименовать. Для этого нужно разрешить доступ по ftp, можно даже только для одного IP текущего роутера и выполнить команду:
/tool fetch address=X.X.X.X src-path=0.rsc upload=yes user=admin mode=ftp password=admin dst-path=0.html
  Таким образом можно создать файл с любым расширением. Для чего это нужно? Как вариант, использовать 0.html для вывода через WebProxy пользователем Hotspot о времени пребывания в сети.

Используемый материал:

вторник, 21 июня 2016 г.

Полный перенос настроек с одного Mikrotik на другой.

  Имеется офис с постоянной круглосуточной работой. Клиент пожелал, что-бы у него в запасе был еще один точно такой-же Микротик, который в любой момент может заменить рабочий. Замена будет осуществляться вручную. Так как на Микротике постоянно происходят изменения, бекап и экспорт каждую неделю падают на мыло клиенту. Имеем два одинаковых роутера: 951G-2HnD с одинаковыми Firmware 3.18 и версией ОС: 6.19. Выкладываю инструкцию по переносу настроек на бекапный роутер для клиента, с пошаговыми действиями.

понедельник, 13 июня 2016 г.

Перезагрузка роутера когда нет подключенных клиентов по WiFi.

  Есть роутер Mikrotik, к нему подключено несколько клиентских точек по Wi-Fi. Периодически, по непонятным причинам, клиенты отваливаются от роутера. Задача, когда это произошло, перезагрузить роутер:
:local clientes [/interface wireless registration-table print count-only];
:local WarnAt 0
#:log info ($clientes);
:if ($clientes <= $WarnAt) do={
#:log info ($clientes);
/system reboot
}
  Стоит учитывать, что интервал между выполнением скриптом должен быть достаточен для того, что-бы клиенты, после перезагрузки, смогли подключиться к роутеру. В противном случае будет цикличная перезагрузка. 

воскресенье, 12 июня 2016 г.

Цикл добавления маршрутов, сверяем шлюз провайдера с маршрутом, правим MSS при VPN.

  Пример скрипта - цикл для добавления 254 маршрута:
for x from=1 to=254 do={ /ip route add dst-address="192.168.$x.0/24" gateway=192.168.201.10 }
  Если мы получаем настройки по DHCP, а основной маршрут выставляем статический, неплохо было бы проверять изменился ли текущий шлюз у провайдера или нет:
:global ispgw [ip dhcp-client get [/ip dhcp-client find interface=ether1-gateway] gateway];
:global ispgwstat [ip route get [/ip route find comment="ISP1" ] gateway ];
#:log info ("$ispgw" )
#:log info ("$ispgwstat" )
:if ($ispgw = $ispgwstat ) do={ :log info ("ISP GW OK" ) } else={ ip route set [/ip route find comment="ISP1"] gateway=$ispgw; :log info ("ISP GW COMPLETE" )}
  Если через PPPOE соединение некоторые сайты не открываются
- сделать изменения в Firewall > Mangle, удалить динамические правила change MSS all ppp
PPP > Prifiles > Default > General > Change TCP MSS “no”
- прописать правило вручную
/ip firewall mangle add action=change-mss chain=forward new-mss=1360 protocol=tcp tcp-flags=syn tcp-mss=1453-65535

Автоматический бекап и экспорт настроек Микротик на FTP.

  Скрипт для выгрузки бекапа и экспорта Mikrotik на ФТП ресурс (проверен на 6.35.2):

# automated backup export ftp
# ftp configuration
:local ftphost "host"
:local ftpuser "user"
:local ftppassword "pass"
:local ftppath "folder_ftp"
# months array
:local months ("jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec");
# get time
:local ts [/system clock get time]
:set ts ([:pick $ts 0 2].[:pick $ts 3 5].[:pick $ts 6 8])
# get Date
:local ds [/system clock get date]
# convert name of month to number
:local month [ :pick $ds 0 3 ];
:local mm ([ :find $months $month -1 ] + 1);
:if ($mm < 10) do={ :set mm ("0" . $mm); }
# set $ds to format YYYY-MM-DD
:set ds ([:pick $ds 7 11] . $mm . [:pick $ds 4 6])
# file name for system backup - file name will be Mikrotik-servername-date-time.backup
:local fname1 ("/Mikrotik-".[/system identity get name]."-".$ds."-".$ts.".backup")
# file name for config export - file name will be Mikrotik-servername-date-time.rsc
:local fname2 ("/Mikrotik-".[/system identity get name]."-".$ds."-".$ts.".rsc")
# backup the data
/system backup save name=$fname1
:log info message="System backup finished (1/2).";
/export compact file=$fname2
:log info message="Config export finished (2/2)."
# upload the user manager backup
:log info message="Uploading system backup (1/2)."
/tool fetch address="$ftphost" src-path=$fname1 user="$ftpuser" mode=ftp password="$ftppassword" dst-path="$ftppath/$fname1" upload=yes
# upload the config export
:log info message="Uploading config export (2/2)."
/tool fetch address="$ftphost" src-path=$fname2 user="$ftpuser" mode=ftp password="$ftppassword" dst-path="$ftppath/$fname2" upload=yes
# delay time to finish the upload - increase it if your backup file is big
:delay 30s;
# find file name start with Mikrotik- then remove
:foreach i in=[/file find] do={ :if ([:typeof [:find [/file get $i name] "Mikrotik-"]]!="nil") do={/file remove $i}; }
:log info message="Configuration backup finished.";

  Файлы имеют такой вид:

Мониторим питание 220В с оповещением по e-mail или SMS в Mikrotik без дорогостоящего APC SMART-UPS

  Согласно разделу WiKi Manual:System/UPS Mikrotik официально поддерживает UPS фирмы APC, и то только серии SmartUPS, хотя я лично подключал и Back-UPS. Роутер получает информацию с Back-UPS, но периодически отваливается подключение (подключение было по USB к роутеру RB951G ИБП Back-UPS 1100VA). SmartUPS такой проблемы не имеет, но и цена от 400$ не радует. Подключать можно как по USB так и через COM. В Mikrotik ИБП выдает довольно обширную информацию.

  Если в важных узлах покупка такого ИБП имеет смысл, то в удаленных офисах смысл покупки такого дорогого ИБП теряется, логичнее было использовать что-то попроще. Есть небольшое решение, которое не требует больших вложений, но позволяет следить за наличием напряжения сети 220 с устройства Mikrotik. 

вторник, 7 июня 2016 г.

Консольные команды при входе в систему RouterOS.

  Начиная с версии RouterOS v3.14 при входе в систему через консоль можно указывать аргументы командной строки. Эти параметры вводятся при наборе логина в процессе авторизации. Они позволяют произвести настройку различных функций терминала: подсвечивать команды или нет, установить размер терминала по ширине, высоте и другое. Дополнительные параметры входа могут быть добавлены к имени после знака "+":
login_name ::= user_name [ '+' parameters ]
parameters ::= parameter [ parameters ]
parameter ::= [ number ] 'a'..'z' number ::= '0'..'9' [ number ]
  Если параметр не указан, то используется значение по умолчанию. Если к параметру не указанно дополнительное значение, то используется значение параметра согласно мануалу (опишу ниже).
  Пример:
admin+c80w 
отключит консольные цвета и установит ширину терминала до 80.

  Параметр "w" устанавливает ширину терминала (по умолчанию - авто). Если значение не указать - будет авто.
  Параметр "h" устанавливает ширину терминала (по умолчанию - авто). Если значение не указать - будет авто.
  Параметр "c" включает или выключает подсветку цветом консоли (по умолчанию - включено). Если указать этот аргумент - будет выключено.
  Параметр "t" указывает выполнять автоматически в терминале (по умолчанию - включено). Если указать этот аргумент - будет выключено.
 Параметр "e" выключает "dumb-режим" (по умолчанию - включено). Если указать этот аргумент - будет выключено.

  Пример использования:

Используемый материал:

понедельник, 6 июня 2016 г.

Спрашиваем пользователя в командной строке Mikrotik и обрабатываем его ответ.

  Процитирую вопрос на форуме forummikrotik.ru:
Возникла необходимость при выполнении скрипта через консоль (import file=) спросить пользователя, хочет он это делать или нет, например: "Install Extra Domain (Block Skype, Hotmain, Dr. Watson and/or Error Reporting) (Y\N) ? : " и пользователю нужно нажать нужную кнопку.
Полазив по wiki, я не нашёл как такое реализовать.
  Было предложено решение:
:put [terminal inkey ]
   И пример использования:
:put "Install Extra Domain (Block Skype, Hotmain, Dr. Watson and/or Error Reporting) (Y\\N):"
:local key [:terminal inkey]
  Сначала выводится вопрос в терминал и ожидание ввода клавиши. После нажатия клавиши Y или N сохраняется её ASCII представление в переменную key. И конструкцией if ($key = 121) do={} выполняется определенное действие в зависимости от нажатой клавиши.
  Пример реализации можно почитать тут: 

пятница, 3 июня 2016 г.

Немного о фактов компании Mikrotik.

  • MikroTik является торговой маркой которой владеет Mikrotikls Ltd (Латвия). Эта компания занимается производством сетевого оборудования.
  • Компания была основана в 1995 году с целью продажи оборудования на развивающихся рынках.
  • C 1997 года начались работы над программным маршрутизатором RouterOS, который впоследствии превратился в операционную систему маршрутизатора и использовался на системах x86.
  • В 2002 компания представила линейку собственного оборудования под брендом RouterBoard. С этого момента потребители могли купить маршрутизатор с уже предустановленной операционной системой Router OS.
  • Mikrotik RouterBOARD является аппаратной платформой от MikroTik, которая представляет собой маршрутизатор управляемый операционной системой RouterOS.
  • Mikrotik RouterOS - операционная система на основе Linux, для обеспечения работы аппаратных маршрутизаторов Mikrotik RouterBoard. RouterOS с легкостью можно установить на PC.
  • Число сотрудников на 2015 год более 150 человек.
  • Структура доходов Mikrotīkls примерно делится следующим образом: 97% - продажи сетевого оборудования (проводные и беспроводные маршрутизаторы), 3% - продажи программного обеспечения (операционные системы к оборудованию) и доходы от оказания услуг.
  • Mikrotīkls в равных долях принадлежит Джону Тулли (он же является CEO) и Арнису Риекстиньшу (технический директор).

четверг, 2 июня 2016 г.

Превращаем SFP порт в устройстве Mikrotik в RJ45.

  В современных роутерах Mikrotik наряду с портами RJ45 нередко можно встретить SFP слот.
 Очень часто он остается незадействованный.