FTP зависает: 150 Открытие соединения данных в режиме ASCII

Я настраиваю FTP-сервер на моем сервере Windows 2008 (R2).

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

Я могу использовать удаленный рабочий стол на сервере и через команды DOS, я могу легко войти в систему.

Но если я выдаю команду типа «DIR», она зависает с: 150 Открытие соединения данных в режиме ASCII.

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

Вот что меня беспокоит ... если я использую команды FTP DOS, я могу войти в систему и использовать команду «DIR», только если я использую «localhost» в качестве моего адреса.

Если я укажу свой полный URL-адрес FTP, я получаю ошибку висячего.

, если я укажу URL-адрес «localhost», я не получаю ошибку.

Это заставляет меня поверить в проблему с брандмауэром (или даже с проблемой IIS7?), но я не уверен, какие порты мне нужно открыть?

У меня есть порты 20, 21, открытые на брандмауэре Windows. Я также открыл эти порты на моем брандмауэре AWS (Amazon).

Я считаю, что мой FTP-клиент использует некоторые номера портов большого диапазона, которые потенциально блокируются одним из моих двух брандмауэров. Ive использовал инструменты сетевого мониторинга, чтобы попытаться посмотреть, какие порты он вызывает, но я не могу понять, что это не так.

Любые идеи, советы, рекомендации, помощь?

12 голосов | спросил D3vtr0n 9 MaramWed, 09 Mar 2011 03:16:01 +03002011-03-09T03:16:01+03:0003 2011, 03:16:01

8 ответов


7

FTP-сервер и клиент FTP согласовывают, какие порты будут использоваться для передачи данных (включая список каталогов, когда вы выполняете «dir» или «ls»), используя «канал управления» FTP. Поэтому, если ваш «брандмауэр AWS» не выполняет проверку протокола на этом канале, он не знает, какие порты он должен динамически открывать, чтобы разрешить поток трафика (и закрыть, как только эти порты больше не используются).

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

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

ответил jliendo 9 MaramWed, 09 Mar 2011 05:56:00 +03002011-03-09T05:56:00+03:0005 2011, 05:56:00
5

Я получил то же сообщение при попытке использовать команду ls, чтобы перечислить файлы, хранящиеся на хост-сервере UNIX FTP, из моего Ubuntu командная строка. Мне удалось успешно войти в систему, используя ftp ftp.example.com и введите мое имя пользователя и пароль при появлении запроса. Однако я бы получил сообщение 150 Opening ASCII mode data connection, и ничего не произошло. Затем я просто ввел опцию -p (изменяет ее на «пассивный» режим для работы с брандмауэрами) с командой, и она сработала.

 ftp -p ftp.example.com

Введите имя пользователя и пароль при появлении запроса, затем выполните команды типа ls и cd будет работать. Я считаю, что вы также можете ввести эту команду, и она будет делать то же самое, но я ее не тестировал.

pftp ftp.example.com

Я знаю, что вопрос относится к Windows; однако, учитывая ту же ошибку, было получено, что этот отзыв заслуживает публикации.

ответил Ursus Frost 20 42014vEurope/Moscow11bEurope/MoscowThu, 20 Nov 2014 23:21:40 +0300 2014, 23:21:40
4

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

Скорее всего, хотя бы

  1. ваш клиент находится за брандмауэром (немым или заблокированным SSL) и пытается использовать FTP в режиме Active-mode
  2. ваш сервер находится за брандмауэром (немым или заблокированным SSL) и пытается использовать FTP с пассивным режимом

Если вы используете SSL, единственный ответ - открыть на брандмауэре ряд портов (скажем, 10000-11000) и настроить FTP-сервер для принудительного использования пассивного режима и использования этого диапазона портов. Если ваш сервер использует NAT, вам также необходимо настроить правильный IP-адрес для сервера для рекламы клиентам, большинство из них подчиняются независимо от того, что сервер предоставляет в качестве строки подключения пассивного режима, и если сервер считает, что это 10.1.1.1, вот что он собирается рассказать клиентам.

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

Если вы не можете получить более умный брандмауэр, тогда вам придется придерживаться опции «открыть кучу портов» (или переключиться на протокол, который не должен открывать кучу случайных портов, таких как ssh's SFTP).

ответил DerfK 9 MaramWed, 09 Mar 2011 06:11:11 +03002011-03-09T06:11:11+03:0006 2011, 06:11:11
3

У меня была эта проблема, и она была решена с помощью следующего.

Я использовал FireFTP, который по умолчанию подключается через пассивный режим. При настройке FTP в IIS порт по умолчанию должен быть 21. Мне пришлось открыть порт 21 в брандмауэре, который еще больше меня создал, но он зависает при подключении к данным в режиме ASCII . . р>

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

Чтобы исправить, я загрузил IIS (с использованием версии 8.0, верю, что это то же самое в 7.5), на уровне сервера дерева (то есть верхнего узла), просто нажмите его и выберите «FTP Поддержка брандмауэра ". Каждый используемый вами FTP-сайт будет использовать эти диапазоны портов, отдельные FTP-сайты будут иметь эту опцию greyed, поскольку она унаследована из этого раздела.

В диапазоне портов канала данных укажите x количество портов, в моем случае 10000-10125 .

Теперь в вашем брандмауэре откроется этот диапазон портов TCP как «диапазон пассивного порта FTP».

Тогда я подумал, что проблема будет решена, но не совсем. Не забудьте перезапустить службу Служба FTP FTP , чтобы выбрать новый диапазон портов. Закройте FireFTP /клиент и повторите попытку, и на этот раз в любом случае вы будете.:)

ответил Ricky 19 MarpmTue, 19 Mar 2013 14:28:18 +04002013-03-19T14:28:18+04:0002 2013, 14:28:18
1

У меня проблема с вами и исправлена.

Что я сделал - это открыть брандмауэр Windows (Win7), нажать «Разрешить программу или функцию через брандмауэр Windows», а затем в списке «Разрешенные программы и функции» узнать «Программа передачи файлов» и установить галочку.

После этого откройте командную строку и введите ftp X.X.X.X, войдите в систему, а затем ls /dir /get /put, все работает сейчас.

Но мне все еще не удалось подключиться из File Zilla и веб-браузера, надеюсь, что это вам полезно.

ответил Ray 26 PMpTue, 26 Apr 2011 12:57:26 +040057Tuesday 2011, 12:57:26
1

Проверьте синхронизацию времени вашего сервера

ответил UglyEugen 28 AMpSat, 28 Apr 2012 10:01:16 +040001Saturday 2012, 10:01:16
0

Ничего не путайте в настройках

Просто добавьте Исходящее правило в брандмауэре Windows с предварительной безопасностью и поставьте порт № 20.

Наслаждайтесь FTP на CLI

ответил ravindra d 11 AMpFri, 11 Apr 2014 01:31:09 +040031Friday 2014, 01:31:09
0

Мы решили эту проблему с помощью мастера нового входящего правила брандмауэра Windows. Выберите «Программа», затем «C: \ Windows \ System32 \ ftp.exe», «Разрешить подключение», «Проверить параметры»; Домен, Частный, Общественный (вы можете ограничить позже, если потребуется), назовите правило, и все готово.

Теперь ftp на ftp-сайт и проверьте, соответствуют ли dir или ls.

ответил John Salfer 26 +03002017-10-26T23:42:17+03:00312017bEurope/MoscowThu, 26 Oct 2017 23:42:17 +0300 2017, 23:42:17

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132