Нещодавно для корпоративних потреб нам потрібно було підняти 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 сек, інші налаштування не змінювали.
2. На вкладці Passive Mode Settings (Параметри пасивного режиму FTP-сервера) вказали діапазон портів для передачі даних. Він може бути довільним, з урахуванням, звичайно, тих портів, які ви використовуєте в роботі. У документації FileZilla Server не рекомендувалося використовувати порти нижче 1024.
Інші налаштування залишили за замовчуванням.
3. Переходимо до меню Users. У розділі загальних налаштувань ( General ) вказали логін та пароль для майбутніх підключень.
4. У розділі Shared folders вказали шляхи до папок, які будуть розшаровуватись на FTP. Проставили галки дозволів для папок та файлів - чи можна видаляти, додавати, читати, змінювати тощо.
Відразу зазначимо, що дозволи дій з папками та файлами можуть виявитися важливими . Наприклад, нам знадобилося зберігати дані на FTP-сервер із програми колл-трекінгу ACR. Однак програма постійно скидала з'єднання, як виявилося згодом - через відсутність дозволу створення папки в каталозі сервера.
5. Додали FileZilla Server у виключення брандмауера на комп'ютері , на якому він встановлений.
6. Антивірус також може блокувати запити на FTP-сервер, але в нас із цим все було гаразд.
ВКЛЮЧИЛИ FTP В IP-SERVICE
На роутері MikroTik заходимо в IP-Service і включаємо FTP.
Взагалі, за ідеєю, мало працювати і з відключеним 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.
На вкладці Action - дія, яка виконується, якщо пакет їм відповідає. В даному випадку ми прописуємо заміну адреси призначення в пакеті (dst-nat) і вказуємо, на яку адресу і порт замінити - на внутрішню адресу комп'ютера з FTP-сервером (192.168.88.10), порт 21.
2-е правило - прокидання діапазону портів для даних
Повністю аналогічно прописуємо правило перекидання портів для діапазону портів даних:
Піднімаємо ці правила вище дефолтного правила маскарадингу .
Так як роутер обробляє пакети, звертаючись до правил по порядку їх розташування на вкладці 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.
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 з одного методу, оскільки зміненому правилу прокидання портів і без нього будуть відповідати пакети і з зовнішньої, і з локальної мережі.
Правило прокидання діапазону портів ми не змінювали, але як ми вже написали вище – у нас доступ до 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.