Безопасная удаленная работа с MikroTik. Как не потерять связь с устройством

Включение Safe Mode (Безопасного режим) в оборудовании MikroTik позволяет, в случае потери связи с устройством, отменить последние сделанные изменения.
В консоли Safe Mode включается комбинацией клавиш CTRL+X, в интерфейсе Winbox вверху есть кнопка «Safe Mode». Если из-за неправильной настройки связь с устройством оборвется, то максимум через 9 минут изменения будут отменены.

Отменять неправильно выполненную конфигурацию можно также через скрипт.
Для начала сохраним текущую рабочую конфигурацию:

system backup save name=backup.cfg

Создадим скрипт:

/system script add name=имя_скрипта policy=\
    ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api \
    source="delay 900 \
/n system backup load name=backup.cfg"

После создания его необходимо запустить командой:

system script run имя_скрипта

и через 900 секунд (это 15 минут) он восстановит настройки из сохраненного ранее файла настроек. Если выполняя настройки связь с устройством не прервалась до истечения 15 минут, скрипт можно остановить командой:

system script job remove имя_скрипта

Вновь сохранить конфигурацию, запустить скрипт и продолжить настройку устройства.
Однако если перезагрузить устройство скрипт не будет выполнен.

На случай зависания также можно настроить Watchdog, который будет пинговать какой нибудь хост или сайт, и если с ним пропадет связь, то будет выполнена перезагрузка устройства. Однако неправильные введенные вами настройки из-за которых возможно пропала связь, останутся как были и устройство будет постоянно перезагружаться через указанное количество времени.
Приведу пример команды для его настройки:

system watchdog set no-ping-delay 20m automatic-supout yes watch-address=8.8.8.8

Настройка PPPoE подключения на Mikrotik

Для настройки PPPoE соединения открываем веб-интерфейс устройства открыв в любом браузере ссылку http://192.168.88.1 (его стандартный ip адрес).
Далее в меню открываем вкладку «PPP«, нажимаем кнопку «Add» (красный плюс если через Winbox), выбираем «PPPoE Client«.
В открывшемся окне указываем параметры соединения, в первой вкладке «General» указываем:

Name: (любое слово на английском, это будет ваше имя PPP соединения)
Interfaces: ether1 (указываем WAN интерфейс который смотрит в сторону провайдера или PPPoE сервера)

Далее открываем вкладку «Dial Out» и указываем:
User: (имя PPP пользователя)
Password: (пароль)
Ставим галочку «Add Default Route» (если маршруты должны настроится автоматически)
Ставим галочку «Use Peer DNS»

Нажимаем «OK«, после чего подключение будет настроено и напротив него должна появится буква «R» которая означает что соединение выполнено успешно.
В случае если буква не появилась, можно посмотреть логи нажав в меню слева «Log«, по которым можно определить ошибку соединения.

Настройка Mikrotik в качестве Wi-Fi репитера

На тесте буду использовать два маршрутизатора Mikrotik RB951Ui-2HnD.

1) Допустим первый стандартно настроен, в нем лишь включим WDS.
Для этого в меню выберем «Wireles» -> Вкладка «WDS» и где «WDS mode:» укажем «dynamic«.

2) На втором маршрутизаторе выполним сброс настроек, создадим бридж который обьединит Wi-Fi и LAN порты.
В меню выберем «Wireless» — вкладка «Security Profiles» и введем параметры аналогично как на первом маршрутизаторе.

Далее «Wireless» — вкладка «WDS«:
WDS Mode: dynamic
WDS Default Bridge: бридж объединяющий LAN порты и Wi-Fi

Далее там же в меню «Wireless» во вкладке «Interfaces» выберем Wlan интерфейс и в открывшемся окне во вкладке «Wireless» укажем параметры:
Mode: station wds
SSID: как в первом маршрутизаторе
Security Profile: созданный ранее профиль аналогичный профилю на первом паршрутизаторе

Все.

Настройка FTP сервера на MikroTik Router OS

Обычно FTP сервер на MikroTik Router OS включен и использует для связи 20 и 21 порты.
Тип подключения без шифрования, логин и пароль такой же как на доступ к mikrotik.

Подключится можно набрав а адресной строке браузера ip-адрес маршрутизатора:
ftp://192.168.88.1

Через графический интерфейс FTP сервис выключается и включается в «IP» — «Service»

Через командную строку:

ip service disable номер_сервиса
ip service enable номер_сервиса

Просмотр списка сервисов:

ip service print

Посмотреть информацию о файлах можно выполнив команду:

file print detail
disk print detail

Автоматическое переключение между резервными линиями на Mikrotik

Допустим имеется два интернет канала, от разных или одного провайдера, шлюз может быть одинаковым, это не имеет значения. Включены они в первый и второй порты.

Добавим скрипты с именами «ISP1DOWN» и «ISP2DOWN», которые будут пинговать какой нибудь хост, на примере используется адрес Google DNS 8.8.4.4, если он станет недоступен, то порт с активным каналом будет выключатся, а с вторичным включатся.
Пример добавления скрипта через терминал:

system script add name=ISP1DOWN policy=ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api source="тескт скрипта"

Скрипт ISP1DOWN:

:if ([/ping 8.8.4.4 count=5] = 0) do={/interface disable ether1 ;/interface enable ether2 ;/system scheduler disable ISP1 ;/system scheduler enable ISP2}

Скрипт ISP2DOWN:

:if ([/ping 8.8.4.4 count=5] = 0) do={/interface disable ether2 ;/interface enable ether1 ;/system scheduler disable ISP2 ;/system scheduler enable ISP1}

Добавляем в планировщик задания:

system scheduler add comment="" disabled=no interval=25s name=ISP1 on-event="ISP1DOWN" policy=reboot,read,write,policy,test,password,sniff,sensitive start-date=jan/01/1970 start-time=00:00:00
system scheduler add comment="" disabled=no interval=25s name=ISP2 on-event="ISP2DOWN" policy=reboot,read,write,policy,test,password,sniff,sensitive start-date=jan/01/1970 start-time=00:00:00

Естественно порт 1 и 2 исключены из стандартного бриджа, на них если требуется включен DHCP клиент.
А также настроен маскарадинг:

ip firewall nat add chain=srcnat action=masquerade out-interface=ether2

Все.

Настройка DDNS клиента NO-IP в Mikrotik RouterOS

После регистрации на сайте www.noip.com, необходимо приступить к настройке маршрутизатора.

Создаем новый скрипт, например с именем «no-ip_ddns_update» и правами read, test, write. Через графический интерфейс меню находится в System -> Scripts.

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

Текст скрипта:

:local noipuser "NOIP_USER"
:local noippass "NOIP_PASSWORD"
:local noiphost "NOIP_HOST"
:local inetinterface "WAN_INTERFACE"

:global previousIP

:if ([/interface get $inetinterface value-name=running]) do={
# Get the current IP on the interface
   :local currentIP [/ip address get [find interface="$inetinterface" disabled=no] address]

# Strip the net mask off the IP address
   :for i from=( [:len $currentIP] - 1) to=0 do={
       :if ( [:pick $currentIP $i] = "/") do={ 
           :set currentIP [:pick $currentIP 0 $i]
       } 
   }

   :if ($currentIP != $previousIP) do={
       :log info "No-IP: Current IP $currentIP is not equal to previous IP, update needed"
       :set previousIP $currentIP

# The update URL. Note the "\3F" is hex for question mark (?). Required since ? is a special character in commands.
       :local url "http://dynupdate.no-ip.com/nic/update\3Fmyip=$currentIP"
       :local noiphostarray
       :set noiphostarray [:toarray $noiphost]
       :foreach host in=$noiphostarray do={
           :log info "No-IP: Sending update for $host"
           /tool fetch url=($url . "&hostname=$host") user=$noipuser password=$noippass mode=http dst-path=("no-ip_ddns_update-" . $host . ".txt")
           :log info "No-IP: Host $host updated on No-IP with IP $currentIP"
       }
   }  else={
       :log info "No-IP: Previous IP $previousIP is equal to current IP, no update needed"
   }
} else={
   :log info "No-IP: $inetinterface is not currently running, so therefore will not update."
}

Далее добавляем в планировщик задание которое будет обновлять информацию NO-IP DDNS. Через графический интерфейс меню находится в System — Sheduler.
Через консоль команда выглядит следующим образом:

system scheduler add comment="Update No-IP DDNS" disabled=no interval=5m name=no-ip_ddns_update on-event=no-ip_ddns_update policy=read,write,test

Альтернативный скрип, написан по информации на http://www.noip.com/integrate/request и http://wiki.mikrotik.com/wiki/Manual:Scripting-examples

##############Script Settings##################
:local NOIPUser "no-ip.com ЛОГИН"
:local NOIPPass "no-ip.com ПАРОЛЬ"
:local WANInter "ИМЯ_WAN_ИНТЕРФЕЙСА"
###############################################

:local NOIPDomain "$NOIPUser.no-ip.org"
:local IpCurrent [/ip address get [find interface=$WANInter] address];
:for i from=( [:len $IpCurrent] - 1) to=0 do={ 
  :if ( [:pick $IpCurrent $i] = "/") do={ 
    :local NewIP [:pick $IpCurrent 0 $i];
    :if ([:resolve $NOIPDomain] != $NewIP) do={
      /tool fetch mode=http user=$NOIPUser password=$NOIPPass url="http://dynupdate.no-ip.com/nic/update\3Fhostname=$NOIPDomain&myip=$NewIP" keep-result=no
      :log info "NO-IP Update: $NOIPDomain - $NewIP"
     }
   } 
}

Mikrotik SMB — настройка файлового сервера

На примере буду использовать маршрутизатор Mikrotik RB951G-2HnD.

Подключаем к маршрутизатору USB носитель.
Смотрим состояние:

store disk print

Форматируем его:

store disk format-drive 1

Перезагружаем маршрутизатор:

reboot

Добавление хранилища:

store add name=share disk=usb1 type=user-manager activate=yes comment="test"

Добавление шары:

ip smb share add name=test max-sessions=15 directory=/test disabled=no comment="test share"

Пример отключения шары:

ip smb share disable

Включение smb:

enable smb

Приведу примеры некоторых команд:
ip smb print (просомтр параметров)
ip smb set allow-guests yes/no (разрешает подключение гостевым пользователям без ввода пароля, стандартно yes)
ip smb set comment TEXT (комментарий, стандартно MikrotikSMB)
ip smb set domain NAME (установка имени рабочей группы, стандартно MSHOME)
ip smb set enabled yes/no (включение/выключение SMB, стандартно no)
ip smb set interfaces all/wlan1/bridge-local/… (установка интерфейсов на которых будет запущен SMB, стандартно all)

ip smb users add read-only=no name=логин password=пароль disabled=no (создание пользователя)
ip smb users disable (отключение пользователя)
ip smb users enable (активация пользователя)
ip smb users print (просмотр списка пользователей)
ip smb users remove (удаление пользователя)
ip smb users set read-only=no name=логин password=пароль (изменение пользователя)

ip smb share enable (активация шары)
ip smb share print (просмотр списка шар)
ip smb share remove (удаление шары)
ip smb share set (изменение параметров шары)

Для получения справки в командной строке используется символ «?».
Для переходя на уровень выше — «..».

Пример настройки фаервола для smb:

add action=accept chain=input disabled=no dst-port=137-138 protocol=udp src-address-list=smb-allow
add action=accept chain=input disabled=no dst-port=137,139 protocol=tcp src-address-list=smb-allow
ip firewall address-list add address=1.1.1.1 disabled=no list=smb-allow

Официальные документации:
wiki.mikrotik.com/wiki/Manual:IP/SMB
wiki.mikrotik.com/wiki/Manual:Store

К маршрутизатору также можно подключить жесткий диск через переходник USB-SATA.

Решение ошибки «Kernel failure» и «Out of memory» в Mikrotik

Появилась проблема, часто начал сам перезагружаться MikroTik CAS125-24G-1S-RM.
Прошивка на тот момент стояла последняя — WebFig v6.9
В логах отображалась следующая информация:

System rebooted because of kernel failure
Out of memory condition was detected
router was rebooted without proper shutdown

Посмотрев в «system» -> «resources» было видно что свободная память устройства постоянно уменьшается.
Тут я начал вспоминать что было задействовано и настроено на устройстве.
Наткнувшись и посмотрев «Cache Used» в «IP» -> «Web Proxy» было видно что размер кэша постоянно растет.
Отсюда было ясно что когда память устройства заканчивалась и появлялся сбой kernel.
Поэтому решением данной проблемы было ограничение кеша прокси указав максимальный размер в «Max. Cache Size«.
Все.

Настройка PPTP (VPN) сервера на Mikrotik

Сначала опишу первый простой вариант настройки PPTP (VPN) сервера на Mikrotik через web-интерфейс или Winbox. В этом варианте к серверу может подключаться только один клиент.
1) Активируем сервер открыв меню «PPP» -> «PPTP Server» -> где поставим галочку «Enabled«.
2) Добавим параметры подключения к серверу, для этого откроем «PPP» -> «Secrets» и добавим:
Name: логин
Password: пароль
Service: pptp
Local Address: внутренний IP роутера, например 192.168.88.1
Remote Address: IP который будет назначен клиенту, например 192.168.88.2
жмем OK.
3) Добавим правило в фаервол чтобы можно было подключатся к серверу из вне, для этого откроем меню «IP» -> «Firewall» и во вкладке «Filter Rules» добавим правило:
Chain: input
Dst. Address: внешний IP роутера
Protocol: tcp
Dst. Port: 1723
In. Interface: WAN порт роутера, например ether1-gateway
Action: accept
жмем OK, на этом простая настройки завершена.

 

Теперь опишу вариант настройки из командной строки. К серверу может подключатся много клиентов и они будут получать IP по DHCP.

Включение pptp сервера:

interface pptp-server server set enabled=yes

Просмотр параметров pptp сервера:

interface pptp-server server print

Добавление интерфейса pptp сервера:

interface pptp-server server add add name=pptpserver user=пользователь

Установка пула адресов которые будут выдаваться подключившимся пользователям:

ip pool add name="pptp-pool" ranges=172.20.1.10/28

Добавление профиля для pptp сервера:

ppp profile add name="pptp" local-address=172.20.1.11 remote-address=pptp-pool use-compression=no use-vj-compression=no use-encryption=default only-one=default change-tcp-mss=yes

Добавление данных для аутентификации:

ppp secret add name="пользователь" service=pptp caller-id="" password="пароль" profile=pptp

Также необходимо разрешить трафик по протоколу TCP на порт 1723 из вне и разрешить протокол GRE.
Для этого добавляем первое правило, chain = input, protocol = tcp, Dst.Port = 1723, action = accept.
И второе, chain = input, protocol = gre, action = accept.
Эти два правила необходимо разметить перед стандартными запрещающими правилами, иначе они не будут работать.

В параметрах созданного VPN соединения в Windows необходимо выбрать тип PPTP и шифрование «необязательно, подключатся даже без шифрования».

Немного полезной информации:
PAP (Password Authentication Protocol) — протокол проверки подлинности, проверяет имя и пароль.
CHAP (Challenge Handshake Authentication Protocol) — широко распространённый протокол, в котором серверу передается не пароль пользователя, а косвенные сведения о нём.
MS-CHAP (Microsoft Challenge Handshake Authentication Protocol) — протокол от Microsoft для проверки подлинности удалённых компьютеров.