Windows server ftp включить пассивный режим
В Ubuntu ftp -p для пассивного режима работает нормально.
Как мне сделать то же самое в Windows?
Я пробовал с quote pasv , но я получаю следующую ошибку:
Мой брандмауэр отключен.
Windows фактически не поддерживает пассивный режим.
Вам нужно будет найти стороннее программное обеспечение, такое как WinSCP, которое поддерживает использование командной строки и использует это вместо родного Windows.
Клиент командной строки Windows FTP ( ftp.exe ) не поддерживает пассивный режим в любой версии Windows. Это делает его сегодня бесполезным из-за вездесущих брандмауэров и NAT.
Использование quote pasv не поможет. Он переключает только сервер в пассивный режим, но не клиент.
Вместо этого используйте любой другой клиент командной строки Windows FTP. Большинство других поддерживают пассивный режим.
Например WinSCP по умолчанию используется пассивный режим и существует руководство для преобразования Windows FTP script для WinSCP script.
Хотя это не отвечает на вопрос непосредственно о командной строке, но из ОС Windows, используйте проводник Windows ftp://username@server
по умолчанию будет использоваться пассивный режим
Для командной строки активный режим по умолчанию
Программа windows ftp.exe может использоваться для отправки команд FTP-сервера для пассивной передачи данных между двумя FTP-серверами. Стандартная установка Windows не будет и, вероятно, не должна иметь службу FTP-сервера, работающую как конечную точку для пассивных передач. Поэтому, если требуется пассивная передача со стандартным окном, требуется другое решение, кроме ftp.exe , как FTPing для localhost, поскольку одно из соединений не будет работать в большинстве оконных сред.
Вы можете осуществлять пассивную передачу FTP между двумя разными хостами (но не с двумя соединениями на одном хосте) следующим образом:
Откройте два запроса, используйте один для ftp.exe для подключения к исходному FTP-серверу, а один к ftp.exe подключитесь к вашему FTP-серверу назначения.
Теперь установите пассивное соединение между серверами, используя необработанные команды PASV и PORT. Команда quote PASV ответит IP/портом в многоточии. Используйте эти данные для команды quote PORT . Ваша пассивная ссылка теперь установлена, если брандмауэры не заблокировали один или несколько из четырех портов (2 для управления FTP, 2 для данных FTP)
Затем начните прием данных с помощью команды quote STOR на принимающий FTP-сервер, затем отправьте управляющую команду quote RETR на исходный FTP-сервер.
Cavet: я подключаюсь к некоторым старым FTP-серверам YMMV
При работе по протоколу FTP между клиентом и сервером устанавливается два соединения – управляющее (по нему идут команды) и соединение передачи данных (по нему передаются файлы).
Управляющее соединение одинаково для Активного и Пассивного режима. Клиент инициирует TCP -соединение с динамического порта (1024-65535) к порту номер 21 на FTP -сервере и говорит «Привет! Я хочу подключиться к тебе. Вот мое имя и мой пароль». Дальнейшие действия зависят от того, какой режим FTP (Активный или Пассивный) выбран.
В активном режиме, когда клиент говорит «Привет!» он так же сообщает серверу номер порта (из динамического диапазона 1024-65535) для того, чтобы сервер мог подключиться к клиенту для установки соединения для передачи данных. FTP -сервер подключается к заданному номеру порта клиента используя со своей стороны номер TCP -порта 20 для передачи данных.
В пассивном режиме, после того как клиент сказал «Привет!», сервер сообщает клиенту номер TCP -порта (из динамического диапазона 1024-65535), к которому можно подключиться для установки соединения передачи данных.
Главное отличие между активным режимом FTP и пассивным режимом FTP – это сторона, которая открывает соединение для передачи данных. В активном режиме, клиент должен принять соединение от FTP -сервера. В пассивном режиме, клиент всегда инициирует соединение.
Инструменты пользователя
Инструменты сайта
Содержание
Введение
Режимы работы FTP: активный и пассивный
В Активном режиме, когда клиент говорит «Привет!» он так же сообщает серверу номер порта (из динамического диапазона 1024-65535) для того, чтобы сервер мог подключиться к клиенту для установки соединения для передачи данных. FTP -сервер подключается к заданному номеру порта клиента используя со своей стороны номер TCP-порта 20 для передачи данных.
Первоначальная настройка брандмауера
После того, как у вас все настроено, лучше воспользоваться штатными средствами управления iptables. Для этого воспользуемся скриптом для сохранения текущих правил в файл. В разных дистрибутивах набор правил может сохраняться по отличному от /etc/sysconfig/iptables пути. Данный путь является стандартным для Red Hat дистрибутивов и его клонов, например CentOS.
Но при таких настройках фаервола ftp через nat еще не будет работать. Для облегчения нашей задачи воспользуемся специальным модулем, который и был разработан как раз для этих целей. Загрузим модуль ip_nat_ftp, который и будет выполнять всю черную работу вместо нас.
Обратите внимание, что в цепочке eth0-eth1, через которую проходят все транзитные пакеты, мы открыли только порт 21 и разрешили прохождение пакетов с состоянием RELATED и ESTABLISHED. Для работы ftp как в активном так и в пассивном режимах больше ничего не требуется, все остальные заботы берут на себя модули ip_nat_ftp и ip_conntrack_ftp.
Тестирование
После того, как мы загрузили модуль и правил можно приступить непосредственно к тестированию. Для этого можно воспользоваться любимым ftp клиентом и попробовать соединиться с любым ftp сервером. В качестве клиента я использовал ftp клиент встроенный в far, который позволяет использовать как активный, так и пассивный режимы. Если под рукой нет никакого ftp клиента всегда можно воспользоваться встроенным в windows клиентом как показано ниже.
Для наглядности можно посмотреть с помощью tcpdump что происходит при попытке подключиться к удаленному ftp серверу.
Ну вот собственно и вся настройка. Для того, чтобы каждый раз при загрузке системы модуль ip_nat_ftp загружался автоматически необходимо внести небольшие изменения в файл /etc/sysconfig/iptables-config.
После этого при перезагрузке iptables или системы в целом данный модуль будет загружаться автоматически, а также подгружать все необходимые модули.
Как известно, для обмена файлами в сети используется протокол FTP прикладного уровня модели OSI. Этот протокол позволяет осуществлять передачу файлов между клиентом и сервером. Он прекрасно работает как в локальной сети организации, так и в сети Интернет, для размещения файлов на каком-либо хостинге. Если по-простому, FTP-сервер и FTP-клиент, это программное обеспечение, которое предоставляет доступ к организованной структуры файлов и каталогов, доступ для их передачи и хранения на стороне сервера. А на стороне клиента, возможность доступа к этой структуре. В этой статье рассмотрим как установить и настроить FTP-сервер на базе ОС Windows Server 2016.
Установка сервера
Рассмотрим процедуру штатного развертывания сервера FTP, с помощью визарда Windows Server 2016. Этот инструмент позволит быстро развернуть сервер и полноценно насладиться его работоспособностью на основных настройках.
Откроем «Диспетчер серверов»:
Добавим роль серверу. Для этого последовательно перейдем в меню «Управление», и выберем «Добавить роли и компоненты»:
Открылось окно мастера, который позволит установить роли, определенные службы и компоненты на основании наших потребностей:
В разделе «Тип установки» выбираем опцию «Установка ролей и компонентов»:
Далее, в следующем окне выбираем необходимый нам сервер, для которого добавляются роли:
В окне ролей необходимо поставить галочку в строке «Веб-сервер (IIS)» и согласиться с добавлением компонентов, необходимых для работы Веб-сервера (IIS):
Следующее окно пропустим, т.к. больше никаких компонентов для нашей задачи добавлять не нужно. По нажатию кнопки «Далее» перейдем к настройке «Службы ролей»:
В этом окне необходимо активировать только «Службу FTP» и «Консоль управления службами IIS», нажать клавишу «Далее»:
На следующем шаге соглашаемся с выбранными компонентами и нажимаем «Установить»:
Процесс установки занимает не много по времени. По окончании процесса необходимо перезагрузить сервер:
Добавление пользователей
Для организации подключений к нашему FTP-серверу необходимо создать пользователя и наделить его соответствующими правами, которые в последствии определят его уровень доступа к файлам и каталогам.
Перейдем к настройкам и выберем в «Диспетчер сервером» раздел «Средства» оснастку «Управление компьютером»:
Далее, добавим нового пользователя как показано ниже:
После добавления роли, на локальном диске С:\ появился каталог C:\inetpub\ftproot\ . Этот каталог создается по умолчанию для FTP сервиса и является корневым. Для следующих этапов организации работы сервера FTP, необходимо создать иерархию каталогов, а также для изоляции пользователей. Архитектура будет следующей:
В итоге получилось следующая структура: C:\inetpub\ftproot\FTP\Users\FTPUser\ .
Перейдем к настройке сайта.
Настройка сайта
Теперь нужно будет добавить сайт. Переходим в «Диспетчер серверов», выбирает раздел «Средства» и запускаем оснастку «Диспетчер служб ISS»:
Добавляем FTP-сайт правой клавишей мыши как показано на рисунке ниже:
В разделе «Сведения о сайте» даем название FTP-сайту, указываем путь до корневого каталога и нажимаем «Далее»:
Далее, в окне «Параметры привязки и SSL» оставляем без изменений, нажимаем «Далее»:
Следующий шаг: в окне «Сведения о проверке подлинности и авторизация» выберем нашего пользователя FTPUser в разделе «Авторизация». Выберем обычную проверка подлинности и назначим права на «чтение и запись». Там нажмите кнопку «Далее»:
Для того, чтобы каждый FTP-пользователь мог иметь доступ только к своему каталогу на сервере, и не имел возможности просматривать каталоги других пользователей, необходимо настроить параметр «Изоляция пользователей».
В разделе «Изоляция пользователей FTP» отметить «Каталог имени пользователя …» и нажать «Применить» как показано на рисунке ниже:
Настройка брандмауэра для FTP-сервера
После того, как мы произвели соответствующие работы по созданию и настройке FTP-сервера, в Firewall добавились и активировались необходимые правила, для полноценного «хождения» трафика. Но для более успешной работы пользователей с сервером, важно поддерживать подключение в пассивном режиме. Произведем некоторые настройки.
Перейдем в раздел «Поддержка брандмауэра FTP»:
В окне «Диапазон портов канала данных» укажем, к примеру, порты 50000-50100 и нажмем «Применить»:
Перейдем к настройкам Windows Firewall и выберем в «Диспетчер серверов» раздел «Средства». Далее, найдите оснастку «Брандмауэр Windows в режиме повышенной безопасности»:
В окне «Правила для входящих подключений» создадим новое правило:
В открывшемся окне нужно будет выбрать тип «Предопределенные» -> «FTP-сервер» и нажать «Далее»:
Отметим все правила, поставив галочки и нажмем «Далее»:
На следующем шаге необходимо выбрать опцию «Разрешить подключение», после чего, нажать «Далее»:
После окончания настроек Windows Firewall важно перезагрузить сервер.
На этом настройка FTP-сервера на платформе Windows Server 2016 закончена.
В Ubuntu ftp -p для пассивного режима работает нормально.
Как мне сделать то же самое в Windows?
Я пытался с quote pasv , но я получаю следующую ошибку:
Мой брандмауэр отключен.
Windows на самом деле не поддерживает пассивный режим.
Эти аргументы предназначены для отправки различных команд, и pasv - это не то, о чем думала Microsoft, когда они это писали.
Вам нужно будет найти стороннее программное обеспечение, такое как WinSCP, которое поддерживает использование командной строки, и использовать его вместо Windows.
Клиент командной строки Windows FTP ( ftp.exe ) не поддерживает пассивный режим ни в одной версии Windows. Это делает его довольно бесполезным в наше время из-за вездесущих брандмауэров и NAT.
Использование quote pasv не поможет. Он переключает только сервер в пассивный режим, но не клиент.
Вместо этого используйте любой другой клиент командной строки Windows FTP. Большинство других поддерживают пассивный режим.
Например, WinSCP по умолчанию используется пассивный режим, и есть руководство по преобразованию Windows FTP-скрипт в WinSCP-скрипт .
Хотя это не дает прямого ответа на вопрос о командной строке, но из ОС Windows, используйте проводник Windows ftp: // username @ server
это будет использовать пассивный режим по умолчанию
Для командной строки активным режимом по умолчанию
Команда quote PASV не является командой для программы ftp.exe , это команда для FTP-сервера, запрашивающая порт высокого порядка для передачи данных. Пассивная передача - это передача данных FTP через эти порты высокого порядка, в то время как контроль поддерживается в нижних портах.
Программа Windows ftp.exe может использоваться для отправки команд FTP-сервера для пассивной передачи данных между двумя FTP-серверами. Стандартная установка Windows не будет и, вероятно, не должна иметь службу FTP-сервера, работающую в качестве конечной точки для пассивных передач. Поэтому, если для стандартного окна Windows требуются пассивные передачи, необходимо использовать решение, отличное от ftp.exe , так как передача по FTP на localhost, так как одно из соединений не будет работать в большинстве сред Windows.
Вы можете выполнить пассивную FTP-передачу между двумя разными хостами (но не двумя соединениями на одном хосте) следующим образом:
Откройте две подсказки, используйте одну для подключения ftp.exe к вашему исходному FTP-серверу и одну для подключения ftp.exe к вашему целевому FTP-серверу.
Теперь установите пассивное соединение между серверами, используя необработанные команды PASV и PORT. Команда quote PASV ответит IP/портом в многоточии. Используйте эти данные для команды quote PORT <data> . Теперь ваша пассивная связь установлена, если предположить, что брандмауэры не заблокировали один или несколько из четырех портов (2 для управления FTP, 2 для данных FTP)
Затем начните прием данных с помощью команды quote STOR <filename> на принимающий FTP-сервер, затем отправьте управляющую команду quote RETR <filename> на исходный FTP-сервер.
Cavet: я подключаюсь к некоторым старым FTP-серверам YMMV
script.txt (может быть введена любая команда ftp)
Это распространенная проблема . когда мы запускаем соединение ftp, только внешний ip открывает порт для соединения pasv. но ip за NAT не открывает соединение, поэтому пассивное соединение не удается с помощью команды PASV
нам нужно указать, что при открытии соединения, так что открывать соединение с
Если вы используете Windows 10, установите подсистему Windows для Linux, WSL и Ubuntu.
Протокол FTP является старейшим сетевым протоколом (создан в 1971 году), но, тем не менее, широко используется по сей день. Важной особенностью протокола является то, что он использует несколько соединений: одно для управляющих команд, остальные для данных. Причем соединений для передачи данных может открываться несколько, в каждом из которых файлы могут передаваться в обоих направлениях. Именно с этой особенностью и связан ряд проблем.
В зависимости от способа установления соединения для передачи данных различают активный и пассивный режимы работы FTP. В активном режиме сервер сам устанавливает соединение передачи данных к клиенту, в пассивном наоборот. Рассмотрим эти режимы более подробно.
Активный режим
В активном режиме клиент устанавливает управляющее соединение на порт 21 сервера и передает специальную команду PORT, в которой указывает свой адрес и порт для передачи данных. Получив данную команду, сервер устанавливает соединение с 20 порта на указанный в команде порт клиента.
Пассивный режим
Для установления соединения в пассивном режиме клиент передает серверу команду PASV. В ответ сервер передает адрес и порт, на который следует устанавливать соединение для передачи данных. Получив эту информацию, клиент устанавливает подключение к серверу и начинает передачу данных.
Как видим, в пассивном режиме все соединения инициирует клиент и поэтому к нему нет никаких требований, он может находиться за NAT и брандмауэром, а также не иметь выделенного IP-адреса. Поэтому на сегодняшний день основным режимом работы FTP является пассивный.
Проблема брандмауэра
В активном режиме основная проблема возникает у клиента. Если брандмауэр настроен отбрасывать не инициированные изнутри входящие соединения, то сервер не сможет установить соединение для передачи данных. А так как порт для данных является динамическим, то возникают определенные сложности с настройкой брандмауэра. Наиболее правильным будет указать в клиенте диапазон используемых портов и создать для них разрешающее правило брандмауэра.
В пассивном режиме с такой проблемой может столкнуться сервер. Решение аналогичное: указываем в настройках сервера используемый диапазон портов и создаем для него разрешающее правило.
Проблема NAT
На первый взгляд может показаться, что для нормальной работы FTP-сервера через NAT требуется только правильно настроить форвардинг портов. Однако это не так. Если вы внимательно читали про работу протокола в начале статьи, то должны были запомнить, что в зависимости от режима сервер или клиент передают адрес и порт для соединения. А теперь задумаемся, какой адрес передаст сервер, находящийся за NAT? Правильно, внутренний и, несмотря на правильный проброс портов, клиент не сможет подключиться к такому серверу.
К счастью, большинство современных реализаций NAT умеют отслеживать управляющий канал FTP-соединения и заменяют внутренний адрес сервера адресом внешнего интерфейса. Однако, несмотря на это большинство FTP-серверов имеют опцию, позволяющую указать адрес внешнего интерфейса, который следует указывать в командах управляющей сессии.
Еще один важный момент, если вы пробрасываете порты для нескольких FTP-северов, то на каждом из них следует указать свой диапазон динамических портов и пробросить на эти же номера портов внешнего интерфейса. Почему? Потому что номер порта передается сервером в управляющей команде и ничего не знает о форвардинге, если номер порта, переданный сервером, не совпадет с номером порта на внешнем интерфейсе, то клиент не сможет установить соединение. В то время как управляющий порт и порт активного режима можно форвардить на любые внешние порты.
Надеемся, что данная статья поможет вам лучше понять механизм работы протокола FTP и осознанно подойти к процессу настройки и диагностики.
При работе по протоколу FTP между клиентом и сервером устанавливается два соединения – управляющее (по нему идут команды) и соединение передачи данных (по нему передаются файлы).
Управляющее соединение одинаково для Активного и Пассивного режима. Клиент инициирует TCP -соединение с динамического порта (1024-65535) к порту номер 21 на FTP -сервере и говорит «Привет! Я хочу подключиться к тебе. Вот мое имя и мой пароль». Дальнейшие действия зависят от того, какой режим FTP (Активный или Пассивный) выбран.
В активном режиме, когда клиент говорит «Привет!» он так же сообщает серверу номер порта (из динамического диапазона 1024-65535) для того, чтобы сервер мог подключиться к клиенту для установки соединения для передачи данных. FTP -сервер подключается к заданному номеру порта клиента используя со своей стороны номер TCP -порта 20 для передачи данных.
В пассивном режиме, после того как клиент сказал «Привет!», сервер сообщает клиенту номер TCP -порта (из динамического диапазона 1024-65535), к которому можно подключиться для установки соединения передачи данных.
Главное отличие между активным режимом FTP и пассивным режимом FTP – это сторона, которая открывает соединение для передачи данных. В активном режиме, клиент должен принять соединение от FTP -сервера. В пассивном режиме, клиент всегда инициирует соединение.
Инструменты пользователя
Инструменты сайта
Содержание
Введение
Режимы работы FTP: активный и пассивный
В Активном режиме, когда клиент говорит «Привет!» он так же сообщает серверу номер порта (из динамического диапазона 1024-65535) для того, чтобы сервер мог подключиться к клиенту для установки соединения для передачи данных. FTP -сервер подключается к заданному номеру порта клиента используя со своей стороны номер TCP-порта 20 для передачи данных.
Первоначальная настройка брандмауера
После того, как у вас все настроено, лучше воспользоваться штатными средствами управления iptables. Для этого воспользуемся скриптом для сохранения текущих правил в файл. В разных дистрибутивах набор правил может сохраняться по отличному от /etc/sysconfig/iptables пути. Данный путь является стандартным для Red Hat дистрибутивов и его клонов, например CentOS.
Но при таких настройках фаервола ftp через nat еще не будет работать. Для облегчения нашей задачи воспользуемся специальным модулем, который и был разработан как раз для этих целей. Загрузим модуль ip_nat_ftp, который и будет выполнять всю черную работу вместо нас.
Обратите внимание, что в цепочке eth0-eth1, через которую проходят все транзитные пакеты, мы открыли только порт 21 и разрешили прохождение пакетов с состоянием RELATED и ESTABLISHED. Для работы ftp как в активном так и в пассивном режимах больше ничего не требуется, все остальные заботы берут на себя модули ip_nat_ftp и ip_conntrack_ftp.
Тестирование
После того, как мы загрузили модуль и правил можно приступить непосредственно к тестированию. Для этого можно воспользоваться любимым ftp клиентом и попробовать соединиться с любым ftp сервером. В качестве клиента я использовал ftp клиент встроенный в far, который позволяет использовать как активный, так и пассивный режимы. Если под рукой нет никакого ftp клиента всегда можно воспользоваться встроенным в windows клиентом как показано ниже.
Для наглядности можно посмотреть с помощью tcpdump что происходит при попытке подключиться к удаленному ftp серверу.
Ну вот собственно и вся настройка. Для того, чтобы каждый раз при загрузке системы модуль ip_nat_ftp загружался автоматически необходимо внести небольшие изменения в файл /etc/sysconfig/iptables-config.
После этого при перезагрузке iptables или системы в целом данный модуль будет загружаться автоматически, а также подгружать все необходимые модули.
Читайте также: