Андрей Смирнов
Время чтения: ~16 мин.
Просмотров: 205

FTP-сервер на MikroTik. Неожиданные грабли.

mikrotik-conf-ftp-backup-000.pngРезервное копирование — это одно из наиболее важных мероприятий в работе системного администратора, но по иронии судьбы о нем обычно вспоминают тогда, когда ничто иное помочь уже не способно. Роутеры Mikrotik не исключение. Широкие возможности RouterOS предполагают гораздо более сложные сетевые конфигурации, нежели у обычных, «бытовых», роутеров, поэтому восстановить все заново бывает весьма и весьма затруднительно, даже если вы точно помните все тонкости настройки. А чтобы до этого не дошло, стоит позаботиться о резервных копиях уже сейчас.

Продукция Mikrotik заслуженно славится своей надежностью, но это часто способно сыграть с администратором злую шутку. Ведь если все годами работает, то и резервную копию можно лишний раз не сделать… Согласитесь, такая мысль эпизодически посещала каждого из нас. Поэтому резервное копирование должны быть автоматическим, полностью исключая человеческий фактор. В критической ситуации вариант «есть какой-то бекап» гораздо веселее варианта «никаких бекапов нет». А регулярный автоматический бекап позволяет перестать беспокоиться и спокойно заниматься иными делами.

В каких случаях вам может понадобиться восстанавливать Mikrotik из резервной копии? Самое очевидное — физический выход устройства из строя или критический сбой, в результате которого прошивка будет повреждена. Затем идет неудачное обновление (хотя это случается довольно редко) и ошибки администрирования.

Например, не так давно один мой коллега случайно выключил внутренний мост, при том, что снаружи доступ к устройству был запрещен. Управление устройством было потеряно, сеть оказалась отрезана от внешнего мира. Но благодаря наличию резервных копий восстановление заняло считанные минуты: сбросить конфигурацию устройства и залить в него последний бекап. Большинство пользователей даже ничего не заметило.

Итак, нам нужно организовать резервное копирование конфигурации Mikrotik. На помощь нам придет скриптовый язык RouterOS, возможность создавать и выполнять собственный скрипты на всей линейке роутеров трудно переоценить. Но хранить бекапы нужно отдельно от самого устройства и здесь нам доступны два варианта: отправлять их на почту или FTP-сервер.

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

В этом плане FTP выглядит гораздо более привлекательно. Не нужно гадать, выполнил ли роутер бекап, или это антиспам «балуется», если в директории нет свежих бекапов — значит есть какие-то проблемы и нужно действовать.

Еще один тонкий момент. Mikrotik предлагает нам два варианта резервного копирования :выгрузка резервной копии устройства, которую можно восстановить только на аналогичном устройстве, и экспорт настроек в текстовом формате, которые можно импортировать полностью или частично на любое устройство.

Полный бекап содержит в себе все ключи, сертификаты, админские пароли и т.д, поэтому его крайне нежелательно выгружать в незашифрованном виде. Экспортированный текстовый файл критически важных данных не содержит, но в нем открытым текстом содержатся пароли к Wi-Fi, коммутируемым соединениям и т.д. Поэтому при его хранении тоже следует соблюдать определенные меры безопасности.

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

#Резервное копирование конфигурации Mikrotik#Получаем дату в формате дд-мм-гггг:local tmpdate [/system clock get date];:local months ("jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec");:local month [ :pick $tmpdate 0 3 ];:local mm ([ :find $months $month -1 ] + 1);:if ($mm < 10) do={ :set mm ("0" . $mm); }:local date ([:pick $tmpdate 4 6] ."-" . $mm ."-" . [:pick $tmpdate 7 11])#Задаем переменные и параметры доступа к FTP:local myname "M2-hAP-ac-lite":local fname ($myname."_".$date);:local bname ($myname."_".$date.".backup");:local ename ($myname."_".$date.".rsc");:local ftpuser "mikrotik";:local ftppass "mYPa$$word";:local ftpaddr "203.0.113.21";#Выгружаем настройки/system backup save name=$fname password=BackPa$$word;:delay 10;/export file=$fname:delay 10;#Загружаем конфигурацию на FTP/tool fetch address=$ftpaddr src-path=$name user=$ftpuser password=$ftppass port=21 upload=yes mode=ftp dst-path=$bname:delay 15;/tool fetch address=$ftpaddr src-path=$ename user=$ftpuser password=$ftppass port=21 upload=yes mode=ftp dst-path=$ename:delay 15;#Удаляем файлы с устройства/file remove $bname;/file remove $ename;

Первый блок может показаться избыточно сложным, но это связано с тем, что Mikrotik возвращает месяц в виде трехбуквенной аббревиатуры, а для хранения бекапов лучше использовать полностью цифровые значения даты.

Затем задаем переменные. Как можно заметить, мы задали несколько переменных с именами файлов. Этого можно было не делать и формировать нужные имена прямо в скрипте, но в этом случае сильно страдает его читабельность. Мы не советуем этим пренебрегать, потому что впоследствии, когда подробности уже забудутся, разобраться с сложном скрипте будет сложнее, нежели в простом.

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

Теперь перейдем на целевое устройство: System — Scripts и создадим новый скрипт:

mikrotik-conf-ftp-backup-001-thumb-600xauto-9459.pngПрежде всего укажем имя скрипта, так как нам потребуется вызывать его в дальнейшем, пробелов в имени быть не должно. Выставляем политики как на скриншоте, хотя это не особо критично, и копируем в поле Source наш скрипт.

Для того, чтобы отличать конфигурации друг от друга задайте уникальную переменную myname. Лично мы используем следующий шаблон:

[идентификатор организации/места нахождения устройства] - [наименование устройства]

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

После того, как вы создали скрипт его следует проверить, нажмите Run Script и убедитесь, что он делает все как вам надо. Обязательно проверьте со стороны FTP что файлы приходят и их можно восстановить.

Все работает? Отлично! Самое время добавить его в планировщик. Откроем System — Scheduler и добавим новое задание:

mikrotik-conf-ftp-backup-002-thumb-600xauto-9462.pngИмя задания может быть любым, а вот остальные опции нуждаются в пояснениях. Прежде всего определимся, с какой частотой мы хотим делать копии. Лично мы делаем резервное копирование раз в неделю, по воскресениям. Поэтому в Start Date указываем дату прошлого воскресения, в Start Time — время начала выполнения задания, в нашем случае — десять минут после полуночи. В поле Interval указываем периодичность повторения задания — ровно 7 дней.

Выставляем политики как на скриншоте, что снова некритично, и в поле On Event указываем команду запуска созданного нами скрипта:

/system script run backup_to_ftp

где backup_to_ftp — его имя.

Теперь каждое воскресение в указанное время ваше устройство будет делать две резервные копии конфигурации и отправлять их на FTP-сервер. Если устройств несколько, то мы советуем разнести их по времени, чтобы их задания не пересекались.

Октябрь, 31st 2018Рубрика:Советы 11308Подписаться накомментарии по RSS

mikrotik_ftp.jpg

Сегодняшний пост будет продолжением начатой темы о подключение USB накопителя к роутеру MikroTik и поднятии на нём файлового сервера SMB. Речь пойдёт о том, как получить доступ к данным, размещённым на флешке или жестком диске удалённо из сети Интернет. Сразу оговорюсь, что я не сторонник подобного решения из соображений безопасности, потому воспринимайте данный материал чисто в академических целях и пользуйтесь облачными хранилищами.

Мне так и не удалось открыть SMB-сервер на MikroTik наружу, хоть и ставил в настройках слушать на всех интерфейсах, пробовал открывать порты 137-139 и 445 в настройках файервола — всё бестолку (если знаете способ заставить микрот принимать SMB соединения снаружи, напишите к комментариях).

Настройка FTP сервера на MikroTik стала самым простым решением проблемы доступа к данными на флешке, подключенной к роутеру из Интернет. Делается это буквально в пару кликов, но понадобится ещё создать правило для файервола.

Активация FTP-сервера и настройка Firewall на MikroTik

Для начала активируем сам FTP сервер на роутере MikroTik, для чего переходим в меню IP -> Services и переводим сервис ftp в активное положение. Как обычно, я показываю все действия в web-интерфейсе.

ftp_mikrotik.png

Собственно, ftp-сервер у нас уже работает. Это можно легко проверить набрав в браузере или в проводнике внутренний адрес вашего роутера, например ftp://192.168.88.1 и входим с именем и паролем администратора. Но нам нужен доступ снаружи, а вот тут облом…

ftp_coonect.png

Чтобы разрешить подключение снаружи, нужно в файерволе разрешить доступ к 21 порту на интерфейсе ether1-gateway и переместить данное правило выше всех запрещающих правил.

Переходим в IP -> Firewall и на вкладке Filter Rules добавляем новое правило:

  • Chain (Цепочка) -> Input
  • Protocol -> tcp
  • Dst. Port -> 21
  • In. Interface -> ваше соединение с провайдером (pрpe, wan, ether1-gateway — в зависимости от версии прошивки или типа соединения с провайдером)
  • Action -> Accept

Подробнее о значении полей при настройке файервола можно узнать из статьи «Проброс портов на MikroTik». То же самое можно сделать из командной строки:

/ip firewall filter add chain=input action=accept protocol=tcp in-interface=ether1-gateway dst-port=21

Не забываем переместить данное правило выше запрещающих. Теперь у нас есть доступ снаружи к нашей флешке по FTP. Остались небольшие штрихи…

Добавление пользователя FTP

Чтобы не лазить на наш ftp-сервер от имени администратора, можно создать другого пользователя с паролем, для чего открываем меню System -> Users и нажимаем Add New.

В поле Name вводим желаемое имя пользователя, например ftp_user, в списке Group выбираем read или write (если нужны права записи) и задаём пароль, желательно сложный из цифр букв в разных регистрах и символов.

И последний штрих, без которого наш пользователь не сможет авторизоваться. На вкладке Groups, откройте параметры выбранной группы write и проверьте, чтобы обязательно стояла галочка напротив ftp.

Если статья понравилась, ставь лайк и подписывайся на канал Дзен и паблик вконтакте.

server_raid-250-288.jpg
Восстановление данных с RAID массива на контроллере Adaptec 6405
wpshell_term-250-288.jpg
Определение температуры процессора в Windows 10 через PowerShell.
vkdown-250-288.png
Скачиваем музыку из Контакта в Safari на mac
openvpn_service-250-288.png
Автоматический запуск OpenVPN канала под Windows
windows_airplay-250-288.jpg
Добавляем технологию AirPlay в Windows
a1_white-250-288.jpg
Большие проблемы с маленькими Mini-ITX

logolantorg.png—> Главная → Статьи → Подключаем и настраиваем оборудование → Как мы настраивали FTP сервер на MikroTik

Недавно для корпоративных нужд нам потребовалось поднять FTP-сервер, причем чтобы доступ к нему был как из интернета, так и из локальной сети. Мы воспользовались своими же рекомендациями из статей нашего блога и еще раз протестировали способы настройки MikroTik для этих целей.

Схема нашей сети:

  • Роутер MikroTik RB951G-2HnD с внешним статическим IP, скажем, 1.1.1.28 и локальной сеткой за ним.
  • Компьютер, на котором подняли FileZilla Server, с локальным адресом 192.168.88.10.
  • В настройках FileZilla: управляющий порт FTP-сервера — 21пассивный режим FTP (мы решили использовать его как более простой в настройке и безопасный) с диапазоном портов для передачи данных — 50000-50050

Настройка сервера FileZilla Server

На установке программы FileZilla Server подробно останавливаться не будем — в сети довольно много пошаговых инструкций. Установка никаких проблем не вызвала.

1. Заходим в раздел настроек (Setting). В общих настройках (General Settings) нужно прописать основной (управляющий) порт FTP, мы оставили тот, что по умолчанию — 21. Увеличили таймаут соединения до 600 сек, остальные настройки не меняли.

FileZilla.jpg

2. На вкладке Passive Mode Settings (настройки пассивного режима FTP-сервера) указали диапазон портов для передачи данных. Он может быть произвольным, с учетом, конечно, тех портов, что вы уже используете в работе. В документации FileZilla Server не рекомендовалось использовать порты ниже 1024.

FileZilla-1.jpg

3. Переходим в меню Users. В разделе общих настроек (General) указали логин и пароль для будущих подключений.

4. В разделе Shared folders указали пути к папкам, которые будут расшариваться на FTP. Проставили галки разрешений для папок и файлов — можно ли удалять, добавлять, читать, изменять и т. д.

Сразу отметим, что разрешения действий с папками и файлами могут оказаться важнымиК примеру, нам понадобилось сохранять данные на FTP-сервер из программы колл-трекинга ACR. Однако программа постоянно сбрасывала соединение, как оказалось впоследствии — по причине отсутствия разрешения на создание папки в каталоге сервера.

FileZilla-2.jpg

5. Добавили FileZilla Server в исключения брандмауера на компьютере, на котором он установлен.

6. Антивирус также может блокировать запросы на FTP-сервер, но у нас с этим все было в порядке.

Включили FTP в IP — Service

На роутере MikroTik заходим в IP — Service и включаем FTP.

ftp.jpg

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

Настройка проброса портов для FTP сервера

Настройка проброса портов детально описана в этой статье, здесь мы на теоретической части подробно останавливаться не будем.

Напомним, что FTP-сервер для работы требует двух типов портов: управляющего, по которому передаются служебные данные, и отдельного диапазона портов для передачи файлов. Поэтому мы создали два правила NAT:

  • для управляющего 21-го порта;
  • для диапазона портов 50000-50050.

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

 1-е правило — для управляющего порта

На первой вкладке General — прописываем признаки пакетов, которые должны обрабатываться правилом проброса порта.

  • Chain = dstnat (т. е. для пакетов, направленных во внутреннюю сеть).
  • Dst. Address = 1.1.1.28 (адрес назначения, который прописан в пакете, у нас пакеты будут адресованы на внешний адрес роутера, поэтому пишем здесь его).
  • Protocol = 6 (tcp).
  • Dst. Port = 21.
  • In. Interface = ether1.

На вкладке Action — действие, которые выполняется, если пакет им соответствует. В данном случае мы прописываем замену адреса назначения в пакете (dst-nat) и указываем, на какой адрес и порт его заменить  — на внутренний адрес компьютера с FTP-сервером (192.168.88.10), порт 21.

 2-е правило — проброс диапазона портов для данных

Полностью аналогично прописываем правило переброса портов для диапазона портов данных:

 Поднимаем эти правила выше дефолтного правила маскарадинга.

Так как роутер обрабатывает пакеты, обращаясь к правилам по порядку их расположения на вкладке NAT роутера, нам нужно поднять наши правила выше тех, под которые могут попасть наши пакеты, в том числе выше правила маскарадинга, заданного по умолчанию. Просто перетаскиваем их мышью вверх.

Проверили: доступ к FTP серверу работает и с удаленного компьютера, расположенного в сети другого провайдера, и со смартфонов, использующих 3G.

Теперь нам нужно настроить, чтобы к FTP можно было подключиться и из нашей локальной сети, используя те же данные для подключения, то есть, внешний IP-адрес роутера. 

Настройка Hairpin NAT MikroTik

По умолчанию зайти из локальной сети по внешнему адресу на роутер нельзя — вот в этой статье подробно объясняется, почему. Поэтому нам нужно настроить отдельные правила NAT, которые бы создавали исключения из общих правил и правильно обрабатывали такие пакеты.

Мы протестировали 3 способа настройки, все они отлично работали в нашей конфигурации.

 1-й способ

В общей сложности он содержит 3 правила, работающих в связке.

1.1 — уже созданное нами правило проброса портов, описанное выше. Мы его не изменяем.

1.2. —  Правило, которое можно обозначить, как: «Во всех пакетах, у которых адресом источника стоит этот диапазон IP-адресов, а адресом назначения — внешний IP-адрес роутера, поменять адрес назначения на адрес компьютера с FTP-сервером».

  • chain = dstnat;
  • Src. Address = 192.168.88.0/24 — пул локальных IP-адресов, с которых могут поступать обращения на FTP-сервер;
  • Dst. Address = 1.1.1.28;
  • Protocol = 6 (tcp);
  • Action = dst-nat;
  • To Addresses = 192.168.88.10.

1.3. Далее нам нужно позаботиться об ответных пакетах, отправленных FTP-сервером с адреса 192.168.88.10. Ведь он будет адресовать их на то устройство локальной сети, чей адрес был вписан в пакете данных как адрес источника. А так как устройство отправляло пакет на 1.1.1.28, то и ответ оно ждет оттуда, а не с локального 192.168.88.10, соответственно, этот ответный пакет оно отбросит. 

Поэтому мы «ловим» этот пакет и обрабатываем следующим правилом: «Для всех пакетов, у которых адресом источника стоит этот локальный диапазон адресов, а адресом назначения — локальный адрес компьютера с сервером, применяем маскарадинг». Маскарадинг — это замена локального IP-адреса устройства, отправившего пакет, на IP-адрес сервера. После применения этого правила в адресе источника в пакете будет вписан 1.1.1.28, а не 192.168.88.10.

 2-й способ

Здесь только 2 правила.

2.1 — созданное нами первое правило проброса портов, но немного измененное.

Из правила убираем In. Interface ether1: так как в этом случае пакеты будут «стучаться» не только через внешний интерфейс, но и через внутренние.

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

Правило проброса диапазона портов мы не меняли, но как мы уже написали выше — у нас доступ к FTP-серверу прекрасно функционировал и тогда, когда мы отключили это правило вообще.

2.2. А вот правило srcnat (1.3 из 1-го способа) нам понадобится, так как по-прежнему нужно заменить адрес источника:

 3-й способ

Предложен в комментарии к статье про настройку доступа из локальной сети пользователем Stealth.

Также состоит из двух правил: измененного проброса портов и srcnat.

В первоначальном правиле проброса портов мы не указываем в качестве критерия обработки пакетов адрес назначения, а указываем на вкладке Extra его тип: local — принадлежащий одному из интерфейсов маршрутизатора. То есть под правило проброса портов будут попадать все пакеты, отправленные на адрес любого интерфейса маршрутизатора и на порт 21.

На вкладке Action в поле To Ports можно указать 21 порт. У нас работало и с указанием порта, и без него.

Второе правило — srcnat — точно такое же, как в остальных примерах.

Во всех случаях правила настройки NAT мы также поднимали выше общего правила маскарадинга.

Итоги

Повторим, что мы проверили все эти способы настройки на своей конфигурации и они рабочие. Файлы закачиваются и скачиваются:

  • с компьютеров за NAT (из внешней сети),
  • с локальных компьютеров внутри сети,
  • с мобильных устройств, подключенных к FTP-серверу по Wi-Fi к роутерам в локальной сети,
  • с мобильных устройств, подключенных к FTP-серверу по 3G.

Lantorg.comОцените, пожалуйста, полезность/интересность статьи. Нам важно ваше мнение! Дата публикации: 14.11.2016 —>

← UniFi Mesh и другие новинки Ubiquiti. Выпуск №6-2016 Пост для хорошего новогоднего настроения — 2017 →

Также советуем почитать:

Используемые источники:

  • https://interface31.ru/tech_it/2019/05/avtomaticheskoe-rezervnoe-kopirovanie-nastroek-mikrotik-na-ftp.html
  • https://mdex-nn.ru/page/nastraivaem-ftp-server-na-mikrotik.html
  • https://lantorg.com/article/kak-my-nastraivali-ftp-server-na-mikrotik

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации