Як ми настроювали сервер 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 Server

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

Інші налаштування залишили за замовчуванням.

Налаштування пасивного режиму FileZilla Server

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

4. У розділі Shared folders  вказали шляхи до папок, які будуть розшаровуватись на FTP. Проставили галки дозволів для папок та файлів - чи можна видаляти, додавати, читати, змінювати тощо.

Відразу зазначимо, що дозволи дій з папками та файлами можуть виявитися важливими . Наприклад, нам знадобилося зберігати дані на FTP-сервер із програми колл-трекінгу ACR. Однак програма постійно скидала з'єднання, як виявилося згодом - через відсутність дозволу створення папки в каталозі сервера.

Налаштування доступу до папок та файлів

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

6.  Антивірус також може блокувати запити на FTP-сервер, але в нас із цим все було гаразд.

ВКЛЮЧИЛИ FTP В IP-SERVICE

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

Включаємо FTP в IP-Service Mikrotik

Взагалі, за ідеєю, мало працювати і з відключеним FTP, навіть більше - у деяких випадках, за відгуками, цей параметр перешкоджає коректній роботі сервера за MikroTik. Але в нас не працювало, тож ми включили.

НАЛАШТУВАННЯ ПРОКИДАННЯ ПОРТІВ ДЛЯ СЕРВЕРА FTP

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

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

  • для керуючого 21-го порту;
  • для діапазону портів 50 000-50 050.

 

Ми спочатку налаштували та включили обидва правила, але експериментальним шляхом з'ясували, що все працює та передається і з одним правилом для 21 порту. Принаймні у нашій конфігурації.

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

На першій вкладці General – прописуємо ознаки пакетів, які мають оброблятися правилом прокидання порту.

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

 

Прокидання портів для FTP Mikrotik

На вкладці Action - дія, яка виконується, якщо пакет їм відповідає. В даному випадку ми прописуємо заміну адреси призначення в пакеті (dst-nat) і вказуємо, на яку адресу і порт замінити - на внутрішню адресу комп'ютера з FTP-сервером (192.168.88.10), порт 21.

Прокидання портів для FTP Mikrotik вкладка Action

 2-е правило - прокидання діапазону портів для даних

Повністю аналогічно прописуємо правило перекидання портів для діапазону портів даних:

Прокидання діапазону портів для FTP Mikrotik

Прокидання діапазону портів для FTP Mikrotik вкладка Action

 Піднімаємо ці правила вище дефолтного правила маскарадингу .

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

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

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

НАЛАШТУВАННЯ HAIRPIN NAT MIKROTIK

За замовчуванням зайти з локальної мережі на зовнішній адресі на роутер не можна - ось у цій статті докладно пояснюється, чому . Тому нам потрібно налаштувати окремі правила NAT, які створювали б винятки із загальних правил і правильно обробляли такі пакети.

Ми протестували три методи налаштування, всі вони добре працювали в нашій конфігурації.

 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;
  • До Addresses = 192.168.88.10.
 
 

Hairpin NAT Mikrotik - міняємо адресу призначення

Hairpin NAT Mikrotik Action - міняємо адресу призначення

 

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.

Hairpin NAT Mikrotik - змінюємо адресу джерела

Hairpin NAT Mikrotik Action - маскарадінг

 -й спосіб

Тут лише 2 правила.

2.1 - створене нами перше правило прокидання портів, але трохи змінене.

З правила прибираємо In. Interface  ether1:  тому що в цьому випадку пакети "стукатимуть" не тільки через зовнішній інтерфейс, але і через внутрішні.

Відповідно, нам не знадобиться правило 1.2 з одного методу, оскільки зміненому правилу прокидання портів і без нього будуть відповідати пакети і з зовнішньої, і з локальної мережі.

Змінюємо правило прокидання портів для FTP

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

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

Додаємо правило NAT щодо заміни адреси джерела (srcnat)

Додаємо правило NAT щодо заміни адреси джерела srcnat, маскарадинг

 -й спосіб

Запропоновано у коментарі до статті про налаштування доступу з локальної мережі користувачем Stealth.

Також складається з двох правил: зміненого прокидання портів і srcnat.

У початковому правилі прокидання портів ми не вказуємо як критерій обробки пакетів адресу призначення, а вказуємо на вкладці Extra його тип: local - що належить одному з інтерфейсів маршрутизатора. Тобто під правило прокидання портів будуть потрапляти всі пакети, надіслані на будь-який інтерфейс маршрутизатора і на порт 21.

Перекидання портів для FTP за допомогою Dst.  Address Type = local

Перекидання портів для FTP за допомогою Dst.  Address Type = local, вкладка Extra

Перекидання портів для FTP за допомогою Dst.  Address Type = local, вкладка Action

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

Друге правило -  srcnat - таке саме, як у інших прикладах.

У всіх випадках правила налаштування NAT ми також піднімали вище загального правила маскарадингу .

ПІДСУМКИ

Повторимо, що ми перевірили всі ці способи налаштування своєї конфігурації і вони робітники. Файли закачуються та завантажуються:

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