Как настроить смартфоны и ПК. Информационный портал

Активный и пассивный режимы FTP. FileZilla FTP Server для домашней или небольшой офисной сети

FTP (File Transfer Protocol) один из самых архаичных протоколов передачи данных. Он был создан ещё до HTTP более 40 лет назад. Тем не менее, технология «FTP клиент-сервер» и «сервер-сервер», простая в использовании и не требующая особого обслуживания, до сих пор служит надежным средством систематизации внутреннего документооборота, создания многопользовательских архивов в локальных сетях корпораций и свободного распространения программного обеспечения, мультимедиа, документов и материалов во всемирной паутине.

Сервер FTP может быть развернут на любом сетевом устройстве с дисковым массивом для хранения большого объема информации или на обычном компьютере. При подключении к серверу происходит обмен управляющими командами, при которых происходит авторизация (если предусмотрена), назначение портов, определение правил обмена, а затем устанавливается соединение для передачи данных. Оставим в стороне теоретические основы взаимодействия сервера и локального компьютера по протоколу FTP. Этот процесс осуществляется в одном из двух режимов активном и пассивном. В чем их отличия? При активном режиме клиент посылает запросы серверу на подключение, а подключение осуществляет сервер. При пассивном режиме и управляющие команды, и соединение для передачи данных инициируются только клиентом.

Пассивный режим необходим в случаях, когда компьютер клиента находится в защищенной локальной вычислительной сети. Большинство браузеров поддерживают FTP-протокол, и позволяет подключаться, просматривать и копировать данные с удаленных серверов. Так, в Internet Explorer можно, указав в адресной строке ftp:// “IP адрес сервера” или найти с помощью FileSearch ссылки самых популярных хранилищ файлов. На вкладке/«Свойства обозревателя/Дополнительно»/ можно разрешить использовать пассивный режим FTP.

Не требуется никаких особых настроек в браузере «Mozilla Firefox». “Total Comander» и «Far” имеют встроенный FTP клиент. Здесь при создании нового соединения необходимо дополнительно указать логин и пароль. К открытым серверам логин по умолчанию «anonymous», а пароль – адрес вашего почтового ящика.

Все известные «качалки» от FlashGet (по умолчанию пассивный режим) до ReGet Deluxe (по умолчанию активный режим) имеют систему автоматического определения сценариев соединения и закачки, а также снабжаются различными дополнительными акселераторами для ускорения процесса скачивания. Включать или отключать пассивный режим, как правило, можно при создании нового подключения на вкладках FTP.

Для клиентов, работающих в файлообменном режиме постоянно или довольно часто, необходимо установить FTP менеджер. Это программа серий FileZilla, CuteFTP , SmartFTP , FTP Voyager и т.д. , которые тоже можно найти в открытом доступе в интернете. Эти программы дают возможность более тонкой настройки соединения с удаленным сервером FTP. Они незаменимы в случаях работы с серверами, работающими только в “active mode” , поскольку даже при отсутствии статического IP адреса у клиента, программа может эмулировать его на период сессии.

Среди русскоязычных пользователей наибольшую популярность получила бесплатная программа с открытым кодом – FileZilla. Эта программа просто устанавливается, у нее понятный русский интерфейс. Для настройки соединений можно использовать несколько вариантов. Общая настройка - Меню/Редактирование /Настройки/. выполнены в древовидном виде и затрагивают настройки всех доступных модулей. В этом же разделе меню можно переключиться на мастера создания подключения, где пошагово будут предложены параметры подключения при выборе активного или пассивного режима. Некоторые FTP серверы предлагают скачать небольшие файлы сценариев подключения, которые можно импортировать в программу и создать готовое постоянное подключение.

И наконец, среди консольных команд ОС Windows поддерживается команда ftp.exe, которая предоставляет возможность «ручного» подключения к FTP серверу с помощью введения консольных команд (протокол поддерживает 25 команд). Использование и синтаксис ввода этих команд необходимо хорошо знать и усвоить, но это потребует определённых навыков и опыта программирования.

3 ответов

Активные и пассивные - это два режима, через которые FTP может работать. FTP использует два канала между клиентом и сервером, командный канал и канал данных, которые фактически являются отдельными TCP-соединениями. Командный канал предназначен для команд и ответов, канал данных предназначен для фактической передачи файлов. Это отличный способ отправки команд на сервер, не дожидаясь завершения текущей передачи данных.

В активном режиме клиент устанавливает командный канал (от клиентского порта X до порта сервера 21 (b)), но сервер устанавливает канал данных (из порта сервера 20 (b) на клиентский порт Y , где Y был предоставлен клиентом).

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

Пассивный режим обычно используется в ситуациях, когда FTP-сервер не может установить канал данных. Одной из основных причин этого является сетевые брандмауэры. Хотя у вас может быть правило брандмауэра, которое позволяет вам открывать FTP-каналы до ftp.microsoft.com , серверы Microsoft могут не иметь возможности открывать канал данных через брандмауэр.

Пассивный режим решает это, открывая оба типа канала с клиентской стороны. Чтобы сделать это надежно яснее:

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

  • Клиент отправляет PORT 2001 (a) на сервер и сервер подтверждает в командном канале.
  • Сервер открывает канал данных с порта сервера 20 (b) на порт клиента 2001 (a) .
  • Клиент подтверждает канал данных.

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

  • Клиент открывает командный канал с клиентского порта 2000 (a) на порт сервера 21 (b) .
  • Клиент отправляет PASV на сервер в командном канале.
  • Сервер отправляет обратно (в командном канале) PORT 1234 (a) после начала прослушивания на этом порту.
  • Клиент открывает канал данных от клиента 2001 (a) к серверному порту 1234 (a) .
  • Сервер подтверждает канал данных.

В этот момент команды и каналы данных открыты.

(a) Обратите внимание, что выбор портов на стороне клиента зависит от клиента, так как выбор порта канала данных сервера в пассивном режиме зависит от сервера.

(b) Далее следует отметить, что использование портов 20 и 21 является лишь условным (хотя и сильным). Нет абсолютного требования, чтобы эти порты использовались, хотя клиент и сервер должны были согласовать, какие порты используются. Я видел реализации, которые пытаются скрыть от клиентов, используя разные порты (тщетные, на мой взгляд).

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

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

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

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

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

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

Чтобы снизить риски, хорошим решением было бы указать диапазон портов на вашем сервере, а затем разрешить только этот диапазон портов на вашем брандмауэре.

Для получения дополнительной информации ознакомьтесь с официальным документом.

Редуцированная версия моей статьи Режимы FTP-подключения (Active vs. Passive) :

Режим подключения FTP (активный или пассивный) определяет, как устанавливается соединение с данными. В обоих случаях клиент создает соединение управления TCP с портом 21 сервера FTP-сервера. Это стандартное исходящее соединение, как и с любым другим протоколом передачи файлов (SFTP, SCP, WebDAV) или любым другим клиентским приложением TCP (например, веб-браузер). Поэтому при открытии контрольного соединения обычно нет проблем.

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

В активном режиме клиент начинает прослушивать случайный порт для входящих соединений данных с сервера (клиент отправляет команду FTP PORT , чтобы сообщить серверу, на каком порту он прослушивается). В настоящее время типично, что клиент находится за брандмауэром (например, встроенным брандмауэром Windows) или NAT-маршрутизатором (например, ADSL-модем), неспособным принимать входящие TCP-соединения.

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

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

Конфигурация сети для пассивного режима

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

Брандмауэр и NAT на стороне FTP-сервера должны быть настроены не только для того, чтобы разрешать/маршрутизировать входящие соединения на FTP-порт 21, но также и для ряда портов для входящих соединений данных. Как правило, программное обеспечение FTP-сервера имеет параметр конфигурации для настройки диапазона портов, который будет использоваться сервером. И тот же диапазон должен быть открыт/маршрутизирован на брандмауэре /NAT.

Когда FTP-сервер находится за NAT, он должен знать его внешний IP-адрес, поэтому он может предоставить его клиенту в ответ на команду PASV .

Конфигурация сети для активного режима

В активном режиме большая часть нагрузки на конфигурацию находится на стороне клиента.

Брандмауэр (например, брандмауэр Windows) и NAT (например, правила маршрутизации модема ADSL) на стороне клиента должны быть настроены так, чтобы разрешать/маршрутизировать диапазон портов для входящих соединений данных. Чтобы открыть порты в Windows, откройте "Панель управления" > "Система и безопасность" > "Брандмауэр Windows" > "Дополнительные параметры" > "Входящие правила" > "Новое правило". Для маршрутизации портов на NAT (если есть) обратитесь к его документации.

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

Smart Firewall/NAT

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

При использовании такого брандмауэра /NAT вышеуказанная конфигурация не требуется для простого незашифрованного FTP. Но это не может работать с FTPS, поскольку трафик управляющего соединения зашифрован, а брандмауэр /NAT не может его проверять и изменять.

При работе по протоколу FTP между клиентом и сервером устанавливается два соединения – управляющее (по нему идут команды) и соединение передачи данных (по нему передаются файлы).
Управляющее соединение одинаково для Активного и Пассивного режима. Клиент инициирует TCP-соединение с динамического порта (1024-65535) к порту номер 21 на FTP-сервере и говорит «Привет! Я хочу подключится к тебе. Вот мое имя и мой пароль». Дальнейшие действия зависят от того, какой режим FTP (Активный или Пассивный) выбран.

В активном режиме , когда клиент говорит «Привет!» он так же сообщает серверу номер порта (из динамического диапазона 1024-65535) для того, чтобы сервер мог подключиться к клиенту для установки соединения для передачи данных. FTP-сервер подключается к заданному номеру порта клиента используя со своей стороны номер TCP-порта 20 для передачи данных.

В пассивном режиме , после того как клиент сказал «Привет!», сервер сообщает клиенту номер TCP-порта (из динамического диапазона 1024-65535), к которому можно подключится для установки соединения передачи данных.

Главное отличие между активным режимом FTP и пассивным режимом FTP – это сторона, которая открывает соединение для передачи данных . В активном режиме, клиент должен принять соединение от FTP-сервера. В пассивном режиме, клиент всегда инициирует соединение.

Основные команды

ABOR — Прервать передачу файла
CDUP — Сменить директорию на вышестоящую.
CWD — Сменить директорию.
DELE — Удалить файл (DELE filename).
EPSV — Войти в расширенный пассивный режим. Применяется вместо PASV.
HELP — Выводит список команд, принимаемых сервером.
LIST — Возвращает список файлов директории. Список передаётся через соединение данных.
MDTM — Возвращает время модификации файла.
MKD — Создать директорию.
NLST — Возвращает список файлов директории в более кратком формате, чем LIST. Список передаётся через соединение данных.
NOOP — Пустая операция
PASV — Войти в пассивный режим. Сервер вернёт адрес и порт, к которому нужно подключиться, чтобы забрать данные. Передача начнётся при введении следующих команд: RETR, LIST и т.д.
PORT — Войти в активный режим. Например PORT 12,34,45,56,78,89. В отличие от пассивного режима для передачи данных сервер сам подключается к клиенту.
PWD — Возвращает текущую директорию.
QUIT — Отключиться
REIN — Реинициализировать подключение
RETR — Скачать файл. Перед RETR должна быть команда PASV или PORT.
RMD — Удалить директорию
RNFR и RNTO — Переименовать файл. RNFR — что переименовывать, RNTO — во что.
SIZE — Возвращает размер файла
STOR — Закачать файл. Перед STOR должна быть команда PASV или PORT.
SYST — Возвращает тип системы (UNIX, WIN, …)
TYPE — Установить тип передачи файла (бинарный, текстовый)
USER — Имя пользователя для входа на сервер

Полный список кодов ответов FTP сервера

100Запрошенное действие инициировано, дождитесь следующего ответа прежде, чем выполнять новую команду.
110Комментарий
120Функция будет реализована через nnn минут
125Канал открыт, обмен данными начат
150Статус файла правилен, подготавливается открытие канала
200Команда корректна
202Команда не поддерживается
211Системный статус или отклик на справочный запрос
212Состояние каталога
213Состояние файла
214Справочное поясняющее сообщение
215Выводится вместе с информацией о системе по команде SYST
220Служба готова для нового пользователя.
221Благополучное завершение по команде quit
225Канал сформирован, но информационный обмен отсутствует
226Закрытие канала, обмен завершен успешно
227Переход в пассивный режим (h1,h2,h3,h4,p1,p2).
228переход в длинный пассивный режим (длинный адрес, порт).
229Переход в расширенный пассивный режим (|||port|).
230Пользователь идентифицирован, продолжайте
231Пользовательский сеанс окончен; Обслуживание прекращено.
232Команда о завершении сеанса принята, она будет завершена по завершении передачи файла.
250Запрос прошёл успешно
257«ПУТЬ» создан.
331Имя пользователя корректно, нужен пароль
332Для входа в систему необходима аутентификация
350Запрошенное действие над файлом требует большей информации
404Данный удалённый сервер не найден
421Процедура не возможна, канал закрывается
425Открытие информационного канала не возможно
426Канал закрыт, обмен прерван
434Запрашиваемый хост недоступен
450Запрошенная функция не реализована, файл не доступен, например, занят
451Локальная ошибка, операция прервана
452Ошибка при записи файла (недостаточно места)
500Синтаксическая ошибка, команда не может быть интерпретирована (возможно она слишком длинна)
501Синтаксическая ошибка (неверный параметр или аргумент)
502Команда не используется (нелегальный тип MODE)
503Неудачная последовательность команд
504Команда не применима для такого параметра
530Вход не выполнен! Требуется авторизация (not logged in)
532Необходима аутентификация для запоминания файла
550Запрошенная функция не реализована, файл не доступен, например, не найден
551Запрошенная операция прервана. Неизвестный тип страницы.
552Запрошенная операция прервана. Выделено недостаточно памяти
553Запрошенная операция не принята. Недопустимое имя файла.

Лучшие статьи по теме