FTP zawiesza się: 150 Otwieranie połączenia danych w trybie ASCII

15

Konfiguruję serwer FTP na moim serwerze z systemem Windows 2008 (R2).

Wygląda na to, że wszystko zostało poprawnie zainstalowane, ale mam problem z użyciem klienta FTP do zalogowania się na moim serwerze FTP.

Mogę zdalnie podłączyć pulpit do serwera i za pomocą poleceń DOS mogę dość łatwo się zalogować.

Ale jeśli wydam polecenie typu „DIR”, zostanie zawieszone: 150 Otwieranie połączenia danych w trybie ASCII.

Wszystko, co zbadałem i przeczytałem, wskazuje na porty zapory i / lub ustawienia trybu pasywnego / aktywnego.

Oto, co mnie niepokoi ... jeśli używam poleceń DOS FTP, mogę się zalogować i użyć polecenia „DIR” tylko wtedy, gdy użyję „localhost” jako mojego adresu.

Jeśli podam pełny adres URL FTP, pojawia się błąd zawieszenia.

jeśli podam adres URL „localhost”, nie otrzymuję błędu.

To prowadzi mnie do wniosku, że jest to problem z zaporą ogniową (a nawet problem z IIS7?), Ale nie jestem pewien, jakie porty muszę otworzyć?

Mam otwarte porty 20, 21 w zaporze systemu Windows. Otworzyłem również te porty w mojej zaporze sieciowej AWS (Amazon).

Uważam, że mój klient FTP używa numerów portów dalekiego zasięgu, które są potencjalnie blokowane przez jedną z moich dwóch zapór ogniowych. Użyłem narzędzi do monitorowania sieci, aby sprawdzić, które porty wzywają, ale nie mogę tego rozgryźć.

Wszelkie pomysły, porady, wskazówki, pomoc?

D3vtr0n
źródło

Odpowiedzi:

9

Serwer FTP i klient FTP negocjują, które porty będą używane do przesyłania danych (w tym listy katalogów, gdy wykonujesz „katalog” lub „ls”) za pomocą „kanału kontrolnego” FTP. Jeśli więc „zapora AWS” nie sprawdza protokołu na tym kanale, nie ma możliwości, aby wiedział, które porty musi dynamicznie otwierać, aby umożliwić przepływ ruchu (i zamknąć, gdy te porty nie będą już używane).

IMHO za pomocą monitorowania sieci w celu wykrycia, które porty są używane, nie jest warte wysiłku, ponieważ porty te będą się zmieniać dla każdej nowej sesji FTP.

O ile nie zostało to jeszcze zrobione, moim najlepszym rozwiązaniem przy rozwiązywaniu tego problemu byłoby poszukiwanie jakiejkolwiek poprawki w zaporze ogniowej, która chroni Twój serwer FTP (jeśli dobrze rozumiem twoje pytanie, byłby to „zapora AWS”) i sprawdzenie, czy tam jest to dowolne „pokrętło” umożliwiające inspekcję protokołu FTP.

jliendo
źródło
6

Otrzymałem tę samą wiadomość, gdy próbuję użyć lspolecenia, aby wyświetlić listę plików przechowywanych na serwerze hosta FTP UNIX z mojego wiersza polecenia Ubuntu. Po wyświetleniu ftp ftp.example.commonitu udało mi się pomyślnie zalogować i wprowadzić nazwę użytkownika i hasło. Otrzymałbym jednak 150 Opening ASCII mode data connectionwiadomość i nic się nigdy nie wydarzyło. Następnie po prostu wprowadziłem opcję -p(zmienia się w tryb „pasywny”, aby radzić sobie z zaporami ogniowymi) z poleceniem i zadziałało.

 ftp -p ftp.example.com

Po wyświetleniu monitu wprowadź nazwę użytkownika i hasło, a następnie polecenia takie jak lsi cdbędą działać. Wierzę, że możesz także wpisać to polecenie i zrobi to samo, ale go nie przetestowałem.

pftp ftp.example.com

Wiem, że pytanie dotyczy systemu Windows; jednak biorąc pod uwagę ten sam błąd, okazało się, że ta wskazówka była warta opublikowania.

Ursus Frost
źródło
Wspaniale .. Pomógł mi natychmiast
Sambhav Sharma
5

Aby uzyskać prawdziwe informacje o tym, dlaczego połączenie zostało zawieszone, będziesz musiał użyć klienta, który rejestruje wszystkie polecenia protokołu, aby zobaczyć, co się naprawdę dzieje. Na FTP jest dobra strona z przykładowymi dziennikami tutaj .

Najprawdopodobniej jednak

  1. twój klient stoi za (głupią lub zablokowaną przez SSL) zaporą ogniową i próbuje użyć FTP w trybie aktywnym
  2. Twój serwer znajduje się za (głupią lub zablokowaną przez SSL) zaporą ogniową i próbuje użyć FTP w trybie pasywnym

Jeśli używasz protokołu SSL, jedyną odpowiedzią jest otwarcie szeregu portów (powiedzmy 10000-11000) na zaporze i skonfigurowanie serwera FTP, aby wymuszał tryb pasywny i korzystał z tego zakresu portów. Jeśli twój serwer używa NAT, musisz również ustawić odpowiedni adres IP, aby serwer mógł się reklamować klientom, większość jest posłuszna temu, co serwer podaje jako ciąg połączenia w trybie pasywnym, a jeśli serwer myśli, że to 10.1.1.1, to właśnie to poinformuje klientów.

Jeśli nie używasz protokołu SSL, najlepszą odpowiedzią jest sprawdzenie, czy zapora sieciowa może przeprowadzić kontrolę protokołu FTP. Zapora ogniowa odczyta ruch na porcie 21 i otworzy dowolny port, który serwer chce otworzyć. To często może również naprawić adresy NAT (gdy zapora obsługuje również NAT). Prawdopodobnie nadal będziesz chciał wymusić tryb pasywny, ponieważ niektóre osoby nie wiedzą, jak poprawnie skonfigurować swojego klienta FTP, a obecnie prawie wszyscy stoją za routerem szerokopasmowym / zaporą.

Jeśli nie możesz uzyskać inteligentniejszej zapory ogniowej, musisz trzymać się opcji „otwórz kilka portów” (lub przełącz się na protokół, który nie musi otwierać wielu losowych portów, takich jak ssh sftp).

DerfK
źródło
4

Miałem ten problem i został rozwiązany przez wykonanie następujących czynności.

Korzystałem z FireFTP, który domyślnie łączy się w trybie pasywnym. Podczas konfigurowania FTP w IIS domyślnym portem będzie 21. Musiałem otworzyć port 21 w zaporze ogniowej, co posunęło mnie o krok dalej, ale zawiesiłbym się przy otwieraniu połączenia danych w trybie ASCII .

Okazuje się, że następnie wybiera inne dynamiczne porty. Wiedziałem, że to problem z zaporą ogniową, ponieważ po wyłączeniu zapory FTP połączenia są prawidłowe. Również lokalnie na serwerze - bez problemów.

Aby to naprawić, załadowałem IIS (używając wersji 8.0, wierzę, że to samo w 7.5), na serwerze poziomie drzewa (czyli węzeł góry) Single przyciskiem myszy i wybierz „wsparcie FTP Firewall”. Każda witryna FTP, z której korzystasz, będzie korzystać z tych zakresów portów, poszczególne witryny FTP będą wyszarzone, ponieważ są dziedziczone z tej sekcji.

W polu Zakres kanałów danych podaj x liczbę portów, w moim przypadku 10000-10125 .

Teraz w zaporze otwórz ten zakres portów TCP jako „Pasywny zakres portów FTP”.

Pomyślałem wtedy, że problem zostanie rozwiązany, ale nie do końca. Uruchom ponownie usługę Microsoft FTP , aby wybrać nowy zakres portów. Zamknij FireFTP / klienta i spróbuj ponownie, a tym razem będziesz mieć szczęście. :)

Ricky
źródło
1

Mam z tobą ten sam problem i naprawiłem go teraz.

To, co zrobiłem, to otwórz Zaporę systemu Windows (Win7), kliknij „Zezwalaj na program lub funkcję przez Zaporę systemu Windows”, a następnie na liście „Dozwolone programy i funkcje” znajdź „Program transferu plików” i zaznacz pole wyboru.

Po zakończeniu otwórz wiersz polecenia i wprowadź ftp XXXX, zaloguj się, a następnie ls / dir / get / put, wszystko działa teraz.

Ale nadal nie udało mi się połączyć z File Zilla i przeglądarki internetowej, mam nadzieję, że się przyda.

Promień
źródło
1

Sprawdź synchronizację czasu serwera

UglyEugen
źródło
1

Nie popsuj niczego w konfiguracji

Wystarczy dodać regułę wychodzącą w Zaporze systemu Windows z zaawansowanym zabezpieczeniem i ustawić port nr 20.

Ciesz się FTP na CLI

ravindra d
źródło
1

Problem był dla mnie na lokalnym komputerze, a nie na zdalnym hoście. Potwierdziłem, że instalacja usługi FTP na zdalnym hoście już poprawnie otworzyła wszystkie porty zapory serwera, których potrzebowała, więc to nie był problem. To nie był mój lokalny komputer kliencki. Więc,

  1. Otworzyłem Zaporę systemu Windows Defender.
  2. Następnie kliknąłem link po lewej stronie „Zezwalaj na aplikację lub funkcję za pośrednictwem Zapory systemu Windows Defender”:

wprowadź opis zdjęcia tutaj

  1. Przewinąłem w dół do programu transferu plików i zaznaczyłem pola Domeny, Prywatne i Publiczne:

wprowadź opis zdjęcia tutaj

To ostatecznie mnie naprawiło! Kiedy poszedłem ponowić polecenie LS, reakcja była natychmiastowa i nie było już rozłączania.

ShieldOfSalvation
źródło
0

Rozwiązaliśmy ten problem za pomocą Kreatora nowej reguły ruchu przychodzącego Zapory systemu Windows. Wybierz Program, a następnie C: \ Windows \ System32 \ ftp.exe, Zezwalaj na połączenie, Sprawdź opcje; Domena, Prywatny, Publiczny (w razie potrzeby możesz później ograniczyć), nazwij regułę i gotowe.

Teraz ftp do strony ftp i sprawdź, czy katalog lub ls odpowiadają poprawnie.

John Salfer
źródło
0

Spotkałem ten sam problem co OP

Komenda 200 PORT powiodła się.
150 Otwieranie połączenia danych w trybie ASCII.
425 Nie można otworzyć połączenia danych.

Napotkałem powyższy problem, gdy próbowałem użyć trybu pasywnego w wierszu poleceń w systemie Windows.
Znalazłem potrzebne informacje, przeszukując materiały:

IE zwykle używa trybu pasywnego, podczas gdy narzędzie wiersza poleceń (polecenie ftp) zawsze używa trybu aktywnego.

Próbowałem poprzedniej operacji w IE i zadziałało. Problem rozwiązany

link do materiałów :https://forums.iis.net/t/1207342.aspx?150+Opening+ASCII+mode+data+connection+for+file+list+425+Can+t+open+data+connection+

jiku_wang
źródło