Як увімкнути пасивний режим. Приклад пасивної сполуки. Два режими передачі даних у FTP

Режими FTP

При роботі за протоколом FTP між клієнтом і сервером встановлюється два з'єднання - керуюче (йдуть команди) і з'єднання передачі (за ним передаються файли). Керуюче з'єднання однакове для активного та пасивного режиму. Клієнт ініціює TCP-з'єднання з динамічного порту (1024-65535) до порту номер 21 на FTP-сервері та каже "Привіт! Я хочу підключитися до тебе. Ось моє ім'я та мій пароль". Подальші дії залежать від вибору режиму FTP (Активний або Пасивний).

В активному режимі, коли клієнт говорить "Привіт!" він також повідомляє серверу номер порту (з динамічного діапазону 1024-65535) для того, щоб сервер міг підключитися до клієнта для встановлення з'єднання для передачі даних. FTP-сервер підключається до заданого номера порту клієнта, використовуючи зі свого боку номер TCP-порту 20 передачі даних. Для клієнта таке з'єднання є вхідним, тому часто робота в активному режимі клієнтів, що знаходяться за файрволлом або NAT утруднена або потребує додаткових налаштувань.

У Пасивному режимі після того, як клієнт сказав "Привіт!", сервер повідомляє клієнту номер TCP-порту (з динамічного діапазону 1024-65535), до якого можна підключитися для встановлення з'єднання передачі даних. При цьому, як легко помітити, порти в такому з'єднанні з боку клієнта, так і з боку сервера виявляються довільними. У пасивному режимі клієнт легко може працювати із сервером крізь свій файрволл, але найчастіше підтримки пасивного режиму сервером потрібне відповідне налаштування файрволла вже за сервера.

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

FTP це служба, заснована виключно на протоколі керування передачею (TCP). FTP незвичайна в тому, що вона використовує два порти, порт даних і порт команд (також відомий як порт управління). Традиційно це порт 21 для команд та порт 20 для даних. Однак залежно від режиму порт даних не завжди буде 20.

У активному режимі FTP клієнт з'єднується з довільного непривілейованого порту (N > 1024) до FTP серверного командного порту 21. Потім клієнт починає слухати порт N+1 і посилати FTP команду PORT N+1 на FTP сервер. У відповідь сервер з'єднується з зазначеним портом даних клієнта зі свого локального порту даних 20.

У пасивному режимі FTP клієнт ініціює обидва з'єднання з сервером, вирішуючи проблему з файрволами, які фільтрують вхідний порт даних клієнта. При відкритті FTP з'єднання клієнт локально відкриває два непривілейованих порти (N > 1024 і N+1). Перший порт контактує з сервером на порт 21, але замість того, щоб потім видати команду PORT і дозволити серверу у відповідь з'єднатися з портом даних, клієнт видає команду PASV. В результаті сервер відкриває довільний непривілейований порт (P > 1024) і посилає клієнту команду PORT P. Потім, передачі даних, клієнт ініціює з'єднання від порту N+1 до порту P на сервері.

FTP є базою TCP, що базується виключно. Це не UDP компонент до FTP. FTP є unusual service у тому, що він використовує два ports, "data" port і "command" port (також відомий як control port). Traditionally є port 21 for command port and port 20 for data port. Відмовлення починається, якщо ми знаємо, що depending on the mode, data port not always on port 20.

Active FTP

У активному режимі FTP клієнти з'єднуються з порядком непривілеємного port (N > 1023) до FTP-серверу з командним портом, 21 port. FTP-сервер. Server буде підключатися до клієнта" з конкретним портом даних від свого локального порту, який є портом 20.

Від сервера-side firewall's standpoint, для підтримки активного режиму FTP following communication channels need to be opened:

FTP server"s port 21 to ports >
FTP server"s port 20 to ports > 1023 (Server initiates data connection to client"s data port)
FTP server"s port 20 from ports > 1023 (Client sends ACKs to server"s data port)

У 1-му стилі, з'єднання з функцією port contacts the server"s port port and sends the PORT 1027. на його місцевому сайті поточного порту до поточного терміну поточного клієнта.Наприкінці, клацніть клієнти ACK back as shown in step 4.

Головним питанням з активним режимом FTP є зараз falls on the client side. FTP-client doesn"t make the connection connection to the data port of the server--it simple tells the server what port it is listening on and the server connects back to the specified port on the client. From the client side firewall this appears щоб бути поза системою ініціалізувати підключення до внутрішнього клієнта-- something that is usually blocked.

Passive FTP

У відповідності з тим, щоб вирішити відповідь сервера, щоб почати з'єднання з клієнтом, різний метод для FTP з'єднань був розроблений. Це було відоме як pasive mode, або PASV, після того, як команда використовує клієнта, щоб визначити, що сервер є в режимі passive mode.

У послідовному режимі FTP клієнти беруть участь у зв'язку з підключенням до сервера, рішучою проблемою firewalls filtering incoming data port з'єднання до клієнта від сервера. Коли з'являється FTP з'єднання, клієнти звільняються з двох рядків непривілегідних партій локально (N > 1023 і N+1). Перший port зв'яжеться з сервером на 21-му порті, але встановлюється, що він працює в PORT Command і забезпечує сервер для підключення до його поточного порту, клієнт повинен бути PASV Command. Результатом цього є те, що на сервері залишаються порядки непривілеї port (P > 1023) і мають на увазі PORT P, щоб повернути до клієнта. Учасники будуть ініціювати зв'язок з портом N+1 до порту P на сервер до transfer data.

Від сервера-side firewall's standpoint, щоб підтримувати можливий режим FTP following communication channels need to be opened:
FTP server"s port 21 from anywhere (Client initiates connection)
FTP-сервер's port 21 to ports > 1023 (Server responds to client's control port)
FTP server's ports > 1023 від будь-якого (Client initiates data connection to random port specified by server)
FTP server's ports > 1023 to remote ports > 1023 (Server sends ACKs (and data) to client's data port)

Натиснувши статтю, ви можете скористатися admins remember how each FTP mode works:
Active FTP:
command: client >1023 -> server 21
data: client >1023<- server 20

Passive FTP:
command: client >1023 -> server 21
data: client >1023 -> server >1023

Quick summary of pros and cons of active vs. passive FTP є також в порядку:

Active FTP є сприятливим для FTP-сервер-адмініструвача, але необхідний для клієнта-сайту admin. FTP-сервер призначає до підключення до кількох великих портів на клієнті, які будуть майже певною мірою бути заблоковані на firewall на стороні клієнта. Passive FTP є сприятливим для клієнта, але необхідним до FTP server admin. Суспільство буде робити як зв'язки до сервера, але один з них буде бути близько до високого port, який буде майже певним чином бути заблокований на firewall на стороні сервера.

Досить, там є деякийвід компромісу. Since admins running FTP servers будуть потрібні для своїх серверів accessible до великої кількості клієнтів, вони будуть абсолютно певно необхідні для підтримки passive FTP. Розташування високого рівня портів на сервері може бути minimized відповідно до обмеженого port range for FTP server для використання. Це, кожний, except for this range of ports can be firewalled on the side server. У той час, що це не eliminate all risk to the server, it decreases it tremendously.

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

Протокол FTP є найстарішим мережевим протоколом (створений 1971 року), проте широко використовується до сьогодні. Важливою особливістю протоколу і те, що він використовує кілька з'єднань: одне управляючих команд, інші даних. Причому з'єднань передачі даних може відкриватися кілька, у кожному з яких файли можуть передаватися обох напрямах. Саме з цією особливістю пов'язана низка проблем.

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

Активний режим

У більшості випадків для нормальної роботи FTP-сервера за NAT достатньо буде прокинути 21 порт для сесії, 20 - для активного режиму (якщо використовується), а також вказати і прокинути діапазон динамічних портів для передачі даних.

Ще один важливий момент, якщо ви прокидаєте порти для декількох FTP-півночі, то на кожному з них слід вказати свій діапазон динамічних портів і прокинути на ці номери портів зовнішнього інтерфейсу. Чому? Тому що номер порту передається сервером у команді, що управляє, і нічого не знає про форвардингу, якщо номер порту, переданий сервером, не збігається з номером порту на зовнішньому інтерфейсі, то клієнт не зможе встановити з'єднання. У той час як керуючий порт і активний режим можна форвардити на будь-які зовнішні порти.

Сподіваємося, що ця стаття допоможе вам краще зрозуміти механізм роботи протоколу FTP та усвідомлено підійти до процесу налаштування та діагностики.

У цьому розділі буде коротко розглянуто історію та технічні відомості щодо протоколу FTP. Для отримання детальної інформації дивіться специфікації.

Історичні відомості

На тлі мережі Інтернет, що швидко розвивається, протокол FTP виглядає не просто старим, а дійсно архаїчним. Ранні чернові специфікації протоколу датуються 1971 роком, складання поточної специфікації розпочато 1985-го. Протягом останніх двох десятиліть протокол не змінювався у своїй основі.

На той час мережею Інтернет користувалися переважно університети та дослідницькі центри. Спільнота користувачів була невеликою, більшість із них знали один одного і всі працювали спільно. Інтернет був доброзичливою мережею, а проблеми безпеки як такої не стояло.

Ті часи минули і багато що змінилося. Технологічний прогрес йшов швидше, ніж будь-хто міг собі уявити, одночасно виросло нове покоління користувачів. Інтернет тепер - повсюдне явище, завдяки якому мільйони людей спілкуються один з одним безліччю різних способів. Головна відчутна зміна: Інтернет став ворожим. Доступність та відкритість мережі залучила зловмисних користувачів, які активно експлуатують помилки та недосвідченість інших.

Побічним ефектом такого розвитку подій стали наступні явища:

  • NAT-роутери. Більшість мережі використовує протокол IPv4 , що має обмежений адресний простір (IPv6 розроблено для вирішення цієї проблеми). Завдяки NAT-роутерам системи з великою кількістю пристроїв можуть користуватися однією і тією ж IP-адресою.
  • Персональні файрволи для захисту користувачів від недоробок операційних систем та програм.

Найчастіше ці явища конфліктують із роботою протоколу. Ситуацію погіршують недоробки у самих роутерах та файрволах.

Тим не менш, при правильному налаштуванні FTP пропонує надійний та випробуваний спосіб передачі файлів.

Технічні відомості

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

Існує два способи створення цього підключення: активний та пасивний режими.

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

В активному режимі клієнт відкриває сокет на локальному пристрої та надсилає серверу адресу сокета за допомогою команди PORT. Після надсилання команди передачі файлу або лістингу сервер створює підключення за заданою адресою, яка була вказана клієнтом.

В обох випадках файл/листинг буде передано через підключення для передачі даних.

Створення вихідних підключень вимагає встановлення меншої кількості параметрів для роутерів/файрволів, ніж створення вхідних підключень. У пасивному режимі підключення є вихідним від клієнта і входить до сервера. В активному режимі клієнт і сервер змінюються ролями - підключення для клієнта і вихідне для сервера.

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

Типова мережна конфігурація може виглядати так:

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

Аналогічно в активному режимі роутер і файрвол на стороні клієнта повинні бути налаштовані для прийому і перекидання вхідних підключень. Очевидно, на стороні сервера повинні бути дозволені лише вихідні з'єднання.

Т.к. сервер зазвичай обслуговує багато клієнтів, набагато легше налаштувати роутер та файрвол на стороні сервера один раз для пасивного режиму, ніж налаштовувати роутер клієнта/файрвол для кожного клієнта в активному режимі. Саме тому пасивний режим є рекомендованим.

NAT-роутери

У більшості користувачів широкосмугового підключення NAT-роутер розташований між комп'ютером і мережею. Це може бути самостійний пристрій (можливо бездротовий роутер), або вбудований роутер в DSL або кабельному модемі. У середовищі NAT усі пристрої за роутером становлять локальну мережу(LAN), кожен із пристроїв у мережі мають локальну IP-адресу (чотири невеликі числа розділених точками). NAT-роутер у свою чергу має свою локальну IP-адресу, а також зовнішню IP-адресу для ідентифікації в глобальній мережі. Локальні адреси дійсні лише всередині LAN, для віддаленого пристрою вони не мають сенсу. Приклад:

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

  • Якщо клієнт розташований всередині NAT, підключення буде розірвано, т.к. адреса сервера не є дійсною.
  • Якщо клієнт розташований усередині NAT, адреса сервера може збігатися з адресою пристрою в мережі клієнта.

Вочевидь, в обох випадках пасивний режим не спрацює.

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

Файрволи

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

Особливо при використанні FTP користувачі файрволу можуть отримувати такі повідомлення:

Trojan Netbus заблоковано на порту 12345, який використовується процесом FileZilla.exe

Майже завжди таке повідомлення - помилкова тривога. Будь-яка програма може вибрати будь-який порт для повідомлення через інтернет. Може статися так, що FileZilla вибере порт, який випадково є портом за замовчуванням для трояна або іншої шкідливої ​​програми. Дистрибутив FileZilla, завантажений з офіційного сайту, не містить вірусів.

Розумні роутери, файрволи та саботаж даних

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

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

PORT 10,0,0,1,12,34

Ця команда вказує серверу підключення за адресою 10.0.0.1 на порту 12*256+34 = 3106

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

PORT 123,123,123,123,24,55

Ця команда вказує серверу на підключення на адресу 123.123.123.123 на порту 24*256+55 = 6199

Завдяки такій поведінці NAT-роутер дозволяє неправильно настроєному клієнту використовувати активний режим.

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

  • NAT-роутер сліпо припускає, що деякі підключення належать FTP ґрунтуючись на таких даних, як цільові порти або відповіді сервера:
    • Немає жодної гарантії щодо протоколу, що використовується, незважаючи на автоматичне визначення (такі випадки називають хибною тривогою). Хоча це малоймовірно, цілком припустимо, що в майбутніх версіях протоколу FTP синтаксис команди PORT може змінитися. NAT-роутер, модифікуючи команду PORT, змінює без відома користувача параметри, які не підтримує, через що з'єднання буде розірвано.
    • Визначення протоколу роутером може не розпізнати FTP. Припустимо, що роутер слідкує лише за цільовим портом, а якщо цей порт 21-й, він буде розпізнаний як FTP. Підключення в активному режимі від неправильно налаштованого клієнта до сервера на 21 порту будуть працювати, але підключення до інших серверів на нестандартних портах - немає.
  • Вочевидь, що NAT-роутер зможе модифікувати підключення, якщо FTP-сесія зашифрована, залишаючи користувача здивовані, т.к. працюватимуть лише незашифровані підключення.
  • Припустимо, клієнт за NAT-роутером відсилає "PORT 10,0,0,1,12,34". Як NAT-роутер обізнаний, що клієнт налаштований неправильно? Також можливий випадок із правильно налаштованим клієнтом, який ініціює FXP (сервер-сервер) передачу між сервером, до якого він підключений та пристроєм, що знаходиться у локальній мережі сервера.

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

У цьому підрозділі ми розглядали поєднання NAT-роутера на стороні клієнта в активному режимі, самі міркування застосовуються і у випадку сервера за NAT і відповідями на команду PASV.

Налаштування клієнта FileZilla

Очевидно, що для підключення до будь-якого сервера ваш файрвол має дозволити такі дії для FileZilla. Більшість звичайних FTP-серверів використовують 21-й порт, SFTP-сервери - 22-й, а FTP через SSL/TLS (неявний режим) за замовчуванням - 990-й. Номери портів не є жорстко заданими, тому краще дозволити вихідні підключення на будь-який порт.

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

Пасивний режим

Клієнт не може вказувати серверу вибір порту передачі даних у пасивному режимі, тому для використання пасивного режиму вам потрібно дозволити вихідні підключення по будь-якому порту на своєму комп'ютері.

Активний режим

В активному режимі клієнт відкриває сокет та очікує від сервера підключення для передачі.

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

Якщо у вас є NAT-роутер, вам потрібно вказати FileZilla зовнішню IP-адресу, в іншому випадку з'єднання в активному режимі не спрацюють для серверів поза вашою локальною мережею:

  • Статичну IP-адресу можна вказати в діалозі налаштування FileZilla.
  • Якщо ваша IP-адреса динамічна, у вас є можливість дозволити FileZilla отримувати зовнішню IP-адресу на спеціальному сайті автоматично кожного разу при запуску. Жодна інформація не буде передана від вас на цей сайт, крім версії клієнта FileZilla.

Якщо ви не бажаєте дозволяти вхідні з'єднання на всіх портах, або ваш комп'ютер розташований за NAT-роутером, вкажіть FileZilla використовувати певний діапазон портів для з'єднань в активному режимі. Цей діапазон також потрібно буде відкрити для вашого файрвола. За наявності NAT-роутера, вам потрібно перекинути ці порти на локальний комп'ютер, на якому встановлено FileZilla. Ви можете перекинути діапазон портів, або кожен порт окремо, це залежить від моделі вашого роутера.

TCP

Налаштування та тестування сервера FileZilla

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

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

  • Роутер заблокує доступ до своєї зовнішньої адреси зсередини локальної мережі як можливу атаку
  • Роутер перекине з'єднання вашого провайдера, який заблокує його як можливу атаку.

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

Активний режим

Переконайтеся, що сервер FileZilla дозволяє створювати вихідні підключення по будь-якому порту, т.к. у цьому режимі клієнт визначає порт для з'єднання.

На локальній стороні підключення сервер FileZilla намагається використовувати порт зі значенням на одиницю нижче, ніж порт для контрольного з'єднання (наприклад, порт 20, якщо сервер приймає з'єднання на порту 21). Проте це не завжди можливо, тому не слід завжди покладатися на цю особливість.

Пасивний режим

Налаштування сервера у разі практично повторює налаштування клієнта в активному режимі.

У пасивному режимі сервер відкриває сокет і чекає на з'єднання від клієнта.

За промовчанням сервер FileZilla запитує в операційній системі IP-адресу комп'ютера та вільний порт. Ця конфігурація є робочою тільки, якщо комп'ютер безпосередньо підключений до інтернету без NAT-роутерів та встановленим для файрвола дозволом на вхідні підключення по всіх портах вище 1024-го.

За наявності NAT-роутера вам потрібно повідомити серверу FileZilla вашу зовнішню IP-адресу, в іншому випадку з'єднання в пасивному режимі будуть працювати тільки всередині локальної мережі:

  • Статичну IP-адресу можна вказати в діалозі налаштування сервера FileZilla.
  • Якщо ваша IP-адреса динамічна, у вас є можливість дозволити серверу FileZilla отримувати зовнішню IP-адресу на спеціальному сайті автоматично при кожному запуску. Ніяка інформація не буде передана від вас на цей сайт, крім версії сервера FileZilla.

Якщо ви не впевнені у виборі, використовуйте другий варіант.

Якщо ви не бажаєте дозволяти вхідні з'єднання на всіх портах, або ваш комп'ютер розташований за NAT-роутером, вкажіть серверу FileZilla використовувати певний діапазон портів для з'єднань в активному режимі. Цей діапазон також потрібно буде відкрити для вашого файрвола. За наявності NAT-роутера, вам потрібно перекинути ці порти на локальний комп'ютер, на якому встановлений сервер FileZilla. Ви можете перекинути діапазон портів, або кожен порт окремо, це залежить від моделі вашого роутера.

Доступні порти знаходяться в діапазоні від 1 до 65535, порти нижче 1024 зарезервовані для інших протоколів. Для активного режиму FTP найкращим вибором є номер порту, що дорівнює або вище 50000. У зв'язку з пристроєм протоколу TCP (протокол, який знаходиться нижче рівня FTP і використовується для передачі даних), порт не може бути використаний повторно відразу після кожного підключення. Таким чином, діапазон портів не повинен бути занадто вузьким, інакше ви не зможете передати багато файлів малого розміру. Найчастіше досить діапазону в 50 портів.

Вирішення проблем

На жаль, безліч персональних файрволів і роутерів користувача мають свої недоробки або, в деяких випадках, навіть здатні саботувати роботу FTP (наприклад SMC Barricade v1.2).

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

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

Якщо це можливо, спробуйте підключитися безпосередньо до Інтернету без роутера.

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

Причиною іншої можливої ​​проблеми може бути використання 21 порту за замовчуванням для вашого FTP-сервера. На стороні вашого провайдера може бути файрвол, який може несподівано змінювати порт для команди PASV. Спробуйте використовувати порт відмінний від порту за промовчанням для вашого FTP-сервера.

Якщо іноді ви спостерігаєте повідомлення "неможливо відкрити підключення передачі даних", тобто. FTP-клієнт здатний без проблем підключитися до FTP-сервера достатню кількість разів, поки ви не отримаєте це повідомлення, можливою перешкодою може бути антивірус на клієнтському ПК, налаштований на блокування вихідних підключень за певним діапазоном портів. При роботі сервера в пасивному режимі вихідні порти клієнта визначаються випадковим чином, а при виборі портів, що потрапляють у заблокований діапазон, ви отримуватимете повідомлення про помилку. Для точної діагностики, вам слід переглянути логи антивіруса на машині клієнта, який отримує цю помилку. Загалом, будь-яке ПЗ, здатне блокувати діапазон вихідних портів, може бути причиною таких проблем.

Таймаути під час передачі великих файлів

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

Як було сказано вище, у FTP використовуються два TCP-підключення: контрольне підключення для надсилання команд та отримання відповідей на команди, а також підключення для передачі даних. За принципом роботи FTP контрольне з'єднання не використовується під час передачі файлів.

У специфікації TCP не вказується ліміт часу для збереження підключення, що не використовується. Передбачається, що підключення зберігається на невизначений час, поки не буде закрито явним чином. Тим не менш, більшість роутерів і файрволів автоматично закривають вільні підключення через деякий час. Більше того, в більшості випадків розрив з'єднання відбувається без повідомлення про це учасників. У разі тривалої передачі даних через FTP це означає, що контрольне з'єднання може бути розірвано, але ні клієнт, ні сервер не будуть про це повідомлені. Таким чином, після того, як усі дані були передані, сервер все ще очікує, що контрольне підключення можна використовувати та надсилає через нього підтвердження передачі клієнту. Аналогічно, клієнт готовий використовувати контрольне з'єднання і чекає на відповідь від сервера. Проте, т.к. контрольне з'єднання було розірвано, ця відповідь ніколи не буде доставлена, що призводить до таймууту.

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

Перешкодою цьому є те, що багато роутерів і файрволів розривають з'єднання, які не використовувалися менше ніж 2 і 4 хвилини. Така поведінка порушує специфікацію протоколу TCP, RFC 5382 це зазначено досить ясно. Інакше кажучи, роутери і файрволи, розривають з'єднання раніше потрібний момент, не можна визнати робітниками, т.к. вони не можуть використовуватися при тривалій передачі даних через FTP. На жаль, виробники роутерів споживчого класу та постачальники файрволів не дбають про дотримання специфікацій.

Для вирішення цієї проблеми вам потрібно видалити такі файрволи та замінити неправильно працюючий роутер на якісний.

Налаштування сервера FileZilla під Windows Firewall

Якщо ви маєте проблеми з налаштуванням сервера FileZilla при працюючому Windows Firewall (особливо, якщо клієнт, що підключається до такого сервера отримує повідомлення про помилку "Неможливо отримати листинг директорії"), вам потрібно додати сервер FileZilla до списку винятків Windows Firewall. Для цього вам потрібно зробити такі кроки:

  • Відкрийте Windows Firewall із Панелі керування
  • Якщо ви користуєтеся Vista, натисніть "Змінити налаштування"
  • Виберіть вкладку "Винятки"
  • Натисніть "Додати програму.."
  • НЕ вибирайте "інтерфейс сервера FileZilla" зі списку, вам потрібно натиснути на "Перегляд..."
  • Знайдіть інсталяційну директорію сервера FileZilla (зазвичай це "C: Program Files FileZilla Server")
  • Виберіть "FileZilla server.exe" і натисніть відкрити (повторимо ще раз, НЕ ВИБИРАЙТЕ "FileZilla Server Interface.exe")
  • Виберіть "FileZilla server.exe" зі списку та натисніть "Ok"
  • Переконайтеся, що "FileZilla server.exe" знаходиться у списку винятків і позначте відповідний пункт
  • Натисніть "OK" для закриття вікна

Це забезпечує роботу пасивного режиму. Якщо після цього ви все одно маєте проблеми при підключенні (всередині або ззовні мережі), перевірте налаштування вашого роутера або спробуйте додати номер порту в налаштуваннях Windows Firewall у вкладці "Виключення".

Зверніться до статті 931130 KB від Microsoft, що описує роботу FileZilla з увімкненими сервісами "Маршрутизація та віддалений доступ" або "Шлюз рівня програми".

Протокол передачі файлів, вперше стандартизований на початку 1970-х років, відноситься до протоколів прикладного рівня і передачі даних використовує транспортний протокол TCP. FTP був розроблений у часи, коли клієнти та сервери взаємодіяли один з одним безпосередньо, без посередників та з мінімальною кількістю перешкод.

Проблеми FTP у сучасних мережах

У сучасних мережах (NAT, брандмауер, балансувальник навантаження) такі особливості FTP не дозволяють йому нормально працювати:

  1. Два окремі з'єднання TCP/IP: для передачі даних та для передачі команд;
  2. З'єднання передачі може бути встановлено на випадковому номері порту;
  3. З'єднання передачі може виходити як від сервера до клієнта, і від клієнта до серверу;
  4. Адреса призначення з'єднання передачі (вибір режиму роботи) узгоджується на льоту між клієнтом і сервером через з'єднання передачі команд;
  5. З'єднання для передачі команд знаходиться в режимі очікування, доки відбувається передача даних через з'єднання передачі даних.

Проблема 1 викликана тим, що маршрутизатор або балансувальник повинен підтримувати два з'єднання між одними і тими самим джерелом і приймачем.

Проблема 2 викликана тим, що FTP не може працювати в тому випадку, якщо вхідні порти жорстко обмежені лише відомими. Тобто. у звичайному режимі FTP не може працювати тільки при відкритому 21 вхідному порті, що використовується з'єднанням для передачі команд, йому також необхідний набір відкритих портів високого значення (49152-65534) для передачі даних.

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

Проблема 5 викликана тим, що пристрої, що маршрутизують, можуть переривати «завислі» з'єднання для передачі команд.

Два режими передачі даних у FTP

FTP підтримує два режими роботи: активний та пасивний. Вони відрізняються механізмом встановлення з'єднання передачі даних:

  • В активному режимі сервер підключається зі свого 20 порту на обумовлений порт клієнта.
  • У пасивному режимі клієнт підключається зі свого довільного порту на обумовлений порт сервера.

Таким чином, всі сучасні FTP-клієнти обговорюють із сервером те, від кого дані передаються і хто ініціює з'єднання. Клієнт може вказати використання активного режиму , надіславши команду «PORT», яка повідомить серверу, що потрібно підключитися на певний IP та порт клієнта, і почати відправку даних. Або клієнт може використовувати пасивний режим , надіславши команду "PASV" серверу, яка повідомить серверу, що клієнт очікує IP і порт сервера для початку прийому даних.

Оскільки клієнт спочатку підключається до сервера для встановлення з'єднання передачі команд, було б логічним, якби з'єднання передачі даних встановлював так само клієнт, тобто. відправляв команду PASV (одночасно усуваючи проблему між FTP та брандмауером). Однак це не так, творці специфікації FTP чомусь вирішили, що відданим режимом повинен бути PORT, а підтримка PASV на стороні клієнта навіть необов'язкова.

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

Ftp:// :@:/

Приклад сесій з використанням активного та пасивного режимів передачі даних

Приклад активного режиму, де клієнт анонімно підключається і здійснює одну активну передачу даних (перегляд директорії).

Client: USER anonymous
Server:
Client: PASS NcFTP@
Server: 230 Logged in anonymously.
Client: PORT 192,168,1,2,7,138 Клієнт хоче, щоб сервер підключився на порт 1930 та IP адресу 192.168.1.2.
Server: 200 PORT command successful.
Client: LIST
Server: 150 Opening ASCII mode data connection for /bin/ls. Сервер підключається з порту 21 на порт 1930 та ip адресу 192.168.1.2.
Server: 226 Listing completed. Дані передані успішно.
Client: QUIT
Server: 221 Goodbye.

Приклад пасивного режиму

Client: USER anonymous
Server: 331 Guest login ok, send your e-mail address as password.
Client: PASS NcFTP@
Server: 230 Logged in anonymously.
Client: PASV Клієнт запитує сервера дані для підключення.
Server: 227 Entering Passive Mode
(172,16,3,4,204,173)
Сервер відповідає клієнту, що потрібно підключатися на порт 52397 та IP-адресу 172.16.3.4.
Client: LIST
Server: 150 Data connection accepted from
172.16.3.4: 52397; transfer starting.
Клієнт підключився до сервера на порт 52397 та IP адресу 172.16.3.4.
Server: 226 Listing completed. Дані передані успішно.
Client: QUIT
Server: 221 Goodbye.

Приватні проблеми:

    PORT режим – FTP клієнт за NAT або брандмауером

    Найбільша проблема, з якою стикаються клієнти FTP, що використовують активний режим - сервер повинен сам підключатися на ip адресу клієнта. Якщо на його шляху стоятиме брандмауер, що відсікає всі підключення, сесія FTP не відбудеться. Інша проблема - якщо клієнт знаходиться за NAT і використовує внутрішній адресу IP. Повідомивши свою внутрішню адресу серверу, клієнт прирікає його на неможливість підключення.

    Рішення 1. Клієнт FTP має бути налаштований на використання пасивного режиму.

    Рішення 2. Налаштування NAT за стеженням FTP. Коли клієнт використовує активний режим, пристрій NAT повинен переписувати внутрішній адресу клієнта та замінювати його зовнішньою адресою пристрою. Тоді з'єднання, для передачі даних з FTP сервера, поступивши на зовнішню адресу NAT пристрою, буде прокинуто ним на внутрішню адресу FTP клієнта за NAT.

    PASV режим - FTP сервер за брандмауером

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

    Рішення 1. Адміністратор може відкрити групу портів на брандмауері, через які може відбуватися з'єднання з сервером FTP.

    Рішення 2. Якщо є підтримка брандмауера, адміністратор може налаштувати так, щоб порти автоматично відкривалися для встановлення пасивного з'єднання з FTP сервером. Ця настройка схожа на ту, що була описана для активного клієнта, що знаходиться за NAT. Таким чином, коли брандмауер відстежує відповідь FTP сервера на пасивний запит клієнта, він тимчасово відкриває порт, вказаний у відповіді, і лише тому IP, з якого виходив пасивний запит.

    PASV режим - FTP сервер за NAT

    У режимі PASV FTP сервер відповідає клієнту своїм внутрішнім IP адресою і портом, чим прирікає клієнта на неможливість підключення.

    Рішення 1. Налаштування NAT за стеженням з'єднань FTP для передачі даних. Коли сервер надсилає відповідь у пасивному режимі, пристрій NAT повинен переписувати внутрішній адресу сервера та замінювати його зовнішньою адресою пристрою. Тоді з'єднання для передачі даних з FTP клієнта, надійшовши на зовнішню адресу NAT пристрою, буде прокинуто ним на внутрішню адресу сервера FTP за NAT.

    PASV режим - FTP сервер за балансувальником навантаження

    Балансувальник являє собою одну IP адресу, підключення до якого буде перенаправлятися на один з балансованих серверів. Балансувальник представляє дві проблеми для FTP. Перша відбувається через те, що між FTP сервером і клієнтом встановлюється кілька з'єднань: одне передачі команд і одне чи кілька передачі даних. При пасивному режимі балансувальник повинен перенаправляти з'єднання передачі даних той самий сервер, як і з'єднання передачі команд. Друга проблема є наслідком першої: коли FTP сервер відповідає пасивною відповіддю, ця відповідь міститиме внутрішню адресу FTP сервера, а не зовнішню адресу балансувальника.

    Рішення 1. Кожному FTP серверу за балансувальником присвоїти легітимну ip адресу, доступну ззовні. У цьому випадку FTP сервер буде здатний самостійно обслуговувати FTP клієнтів у пасивному режимі, минаючи балансувальник.

    Рішення 2. Налаштування балансувальника за стеженням з'єднань FTP для передачі даних. Коли сервер надсилає відповідь у пасивному режимі, балансувальник повинен переписувати внутрішню адресу сервера та замінювати його зовнішньою адресою балансувальника. Тоді з'єднання для передачі даних з FTP клієнта, надійшовши на зовнішню адресу балансувальника, буде прокинуто ним на внутрішню адресу сервера FTP за балансувальником.

    Рішення 3. Налаштувати FTP сервер так, щоб його відповіді в пасивному режимі містили зовнішню адресу балансувальника, а не сервера і сподівається, що балансувальник перенаправить з'єднання на сервер, що очікує.

    Нерозв'язна проблема - брандмауери на обох кінцях

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

    FTP сервер на нестандартному порту

    Деякі маршрутизатори здатні обробляти FTP сесії, тільки якщо вони надходять на стандартний порт сервера. Тому якщо FTP сервер слухає на нестандартному порті, потрібно налаштовувати маршрутизатор, так щоб він знав, що за цим портом сидить FTP сервер і коректно обробляло з'єднання.

    Але навіть у цьому випадку брандмауер на стороні клієнта може стати на заваді. Це може статися, якщо брандмауер на стороні клієнта жорстко вимагає, щоб з'єднання FTP для передачі даних від FTP сервера виходило з 20 порту (в активному режимі). Якщо сервер FTP працює на порту N, то за специфікацією FTP його з'єднання передачі даних виходитимуть з порту N – 1 і блокуватися брандмауером клієнта.

    Проблеми, викликані брандмауерами, що передчасно завершують FTP сесію

    Ця проблема найчастіше зустрічається під час передачі великого файла. Коли параметри з'єднання погодилися, і передача почалася, з'єднання для передачі команд почне простоювати доти, доки передача файлу не завершиться. Якщо маршрутизатор не знає про FTP, і передача файлу займе довше часу, ніж лічильник активності підключення на ньому, з'єднання з точки зору маршрутизатора перевищить час очікування і буде завершено, а вхідні пакети будуть відкинуті.

    Вирішенням цієї проблеми є пристрій, що підтримує з'єднання передачі команд в активному стані навіть не дивлячись на те, що по ньому довго не передавалися пакети. Інший варіант - включення функції Keep Alive у стеку протоколу TCP/IP на стороні клієнта або сервера, яка відправляє пакет перевірки доступності через певні інтервали часу, і якщо сторона призначення не відповідає - закриває нормально з'єднання. Якщо ж сторона, що приймає, відповість, то з'єднання з боку брандмауера буде вважатися активним.

  • Використовувати пасивний режим, коли це можливо (у веб-браузерах використовується за замовчуванням)
  • Якщо підключення до FTP серверу пройшло вдало, але перегляд директорій або передача файлів закінчуються обривом з'єднання, швидше за все, проблема в таймерах активності підключення на брандмауері
  • Використовуйте пристрої, що підтримують особливості роботи FTP

Перш ніж роз'яснити різницю між активним та пасивним режимами роботи FTP, слід встановити, що таке сам FTP і як він працює. Англомовна абревіатура FTPрозшифровується як File Transfer Protocol, що у перекладі російською означає протокол передачі файлів. Він призначений для встановлення з'єднання між клієнтом, тобто користувачем, та віддаленим сервером.

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

Отже, у чому принципова відмінність?

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

Розглянемо ці режими наочно.

Відмінності активного та пасивного режимів FTP

Розберемо у відео-форматі чим відрізняються один від одного пасивний та активний режими роботи протоколу FTP.

Як в активному, так і пасивному режимі, встановлення з'єднання починається з відправки запиту клієнтом на . Спочатку встановлюється керуюче з'єднання. Для цього на клієнті створюється тимчасовий порт із номером у діапазоні від 1024 до 65535 для встановлення керуючого з'єднання, а також порт передачі даних. В активному режимі все відбувається так:

  1. 1024 65535 21 .
  2. 1036 ).
  3. Клієнт відправляє команду PORT, яка говорить про використання активного режиму FTP, свою IP-адресу, а також номер порту для встановлення з'єднання для передачі даних, до якого підключиться сервер (у прикладі порт 1037 ).
  4. Команда підтверджується сервером.
  5. Клієнт задає серверу команди для роботи з FTP.
  6. Сервер створює з'єднання даних. Для цього він надсилає запит з 20 -го порту на вказаний клієнтом у четвертому пункті порт ( 1037 ).
  7. Клієнт відповідає на запит.
  8. Сервер підтверджує встановлення з'єднання та дає клієнту можливість передавати дані.

Схематично це можна виразити в наступному вигляді:

У пасивному режимі процедура встановлення з'єднання передачі даних дещо відрізняється. Дії відбуваються так:

  1. Клієнт посилає з тимчасового порту діапазоном 1024 65535 запит на порт сервера номер 21 .
  2. Сервер відповідає на тимчасовий порт клієнта (у прикладі порт 1036 ).
  3. Клієнт підтверджує встановлення з'єднання.
  4. Клієнт відправляє команду PASVяка говорить про використання пасивного режиму FTP.
  5. Сервер підтверджує роботу в пасивному режимі, надсилає свою IP-адресу, а також номер порту для встановлення з'єднання для передачі даних, до якого підключиться клієнт (у прикладі 2154 ).
  6. З порту передачі даних (у прикладі 1037 ) клієнт надсилає запит на встановлення з'єднання на виданий сервером порт ( 2154 ).
  7. Сервер підтверджує встановлення з'єднання.
  8. Клієнт встановлює з'єднання.
  9. Клієнт задає команди серверу (з порту, що управляє, на порт 21 , у прикладі - з порту 1036 на порт 21 ), після чого можлива передача даних.

Уявімо це у схемі:

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