Odpowiedzi:
Aktywny i pasywny to dwa tryby, w których FTP może działać.
W tle FTP używa dwóch kanałów między klientem a serwerem, kanału poleceń i danych, które są w rzeczywistości osobnymi połączeniami TCP.
Kanał poleceń służy do poleceń i odpowiedzi, podczas gdy kanał danych służy do przesyłania plików.
To rozdzielenie informacji o poleceniach i danych na osobne kanały to sprytny sposób na wysyłanie poleceń na serwer bez konieczności oczekiwania na zakończenie bieżącego przesyłania danych. Zgodnie z RFC jest to obowiązkowe tylko dla podzbioru poleceń, takich jak wychodzenie, przerywanie bieżącego transferu i uzyskiwanie statusu.
W trybie aktywnym klient ustanawia kanał poleceń, ale serwer jest odpowiedzialny za ustanowienie kanału danych. Może to stanowić problem, jeśli na przykład komputer kliencki jest chroniony przez zapory ogniowe i nie zezwala na nieautoryzowane żądania sesji od podmiotów zewnętrznych.
W trybie pasywnym klient ustanawia oba kanały. Wiemy już, że ustanawia kanał poleceń w trybie aktywnym i robi to samo tutaj.
Następnie jednak prosi serwer (w kanale poleceń), aby zaczął nasłuchiwać na porcie (według uznania serwerów), zamiast próbować ponownie nawiązać połączenie z klientem.
W ramach tego serwer zwraca również klientowi numer portu, na którym nasłuchiwał, aby klient wiedział, jak się z nim połączyć.
Gdy klient się o tym dowie, może z powodzeniem utworzyć kanał danych i kontynuować.
Więcej szczegółów dostępnych jest w RFC: https://www.ietf.org/rfc/rfc959.txt
Niedawno natknąłem się na to pytanie w miejscu pracy, więc myślę, że powinienem tutaj coś powiedzieć. Użyję obrazu, aby wyjaśnić, jak FTP działa jako dodatkowe źródło poprzedniej odpowiedzi.
Tryb aktywny:
Tryb pasywny:
W konfiguracji w trybie aktywnym serwer będzie próbował połączyć się z losowym portem po stronie klienta. Są więc szanse, że ten port nie byłby jednym z tych predefiniowanych portów. W rezultacie próba połączenia z nim zostanie zablokowana przez zaporę i nie zostanie nawiązane połączenie.
Konfiguracja pasywna nie będzie miała tego problemu, ponieważ to klient inicjuje połączenie. Oczywiście po stronie serwera może być również zapora ogniowa. Ponieważ jednak oczekuje się, że serwer otrzyma większą liczbę żądań połączenia w porównaniu do klienta, byłoby logiczne, aby administrator serwera dostosował się do sytuacji i otworzył wybór portów, aby spełnić konfiguracje trybu pasywnego.
Dlatego najlepiej byłoby skonfigurować serwer do obsługi trybu pasywnego FTP. Jednak tryb pasywny naraziłby system na ataki, ponieważ klienci powinni łączyć się z losowymi portami serwera. Dlatego, aby obsługiwać ten tryb, nie tylko serwer musi mieć dostępnych wiele portów, ale zapora ogniowa powinna również umożliwiać połączenia przez wszystkie te porty!
Aby zminimalizować ryzyko, dobrym rozwiązaniem byłoby określenie zakresu portów na serwerze, a następnie dopuszczenie tylko tego zakresu portów w zaporze.
Aby uzyskać więcej informacji, przeczytaj oficjalny dokument .
Zredagowana wersja mojego artykułu Tryby połączenia FTP (aktywne vs. pasywne) :
Tryb połączenia FTP (aktywny lub pasywny) określa sposób ustanowienia połączenia danych. W obu przypadkach klient tworzy połączenie kontrolne TCP z portem poleceń serwera FTP 21. Jest to standardowe połączenie wychodzące, jak w przypadku każdego innego protokołu przesyłania plików (SFTP, SCP, WebDAV) lub dowolnej innej aplikacji klienta TCP (np. Przeglądarki internetowej ). Tak więc zwykle nie ma problemów z otwarciem połączenia sterującego.
Tam, gdzie protokół FTP jest bardziej skomplikowany w porównaniu z innymi protokołami przesyłania plików, są transfery plików. Podczas gdy inne protokoły używają tego samego połączenia zarówno do kontroli sesji, jak i do przesyłania plików (danych), protokół FTP używa osobnego połączenia do przesyłania plików i list katalogów.
W trybie aktywnym klient zaczyna nasłuchiwać na losowym porcie dla przychodzących połączeń danych z serwera (klient wysyła polecenie FTP, PORT
aby poinformować serwer, na którym porcie nasłuchuje). W dzisiejszych czasach typowe jest to, że klient znajduje się za zaporą (np. Wbudowana zapora systemu Windows) lub routerem NAT (np. Modem ADSL) i nie może przyjmować przychodzących połączeń TCP.
Z tego powodu wprowadzono tryb pasywny , który jest obecnie najczęściej używany. Korzystanie z trybu pasywnego jest preferowane, ponieważ większość złożonej konfiguracji jest wykonywana tylko raz po stronie serwera przez doświadczonego administratora, a nie indywidualnie po stronie klienta przez (prawdopodobnie) niedoświadczonych użytkowników.
W trybie pasywnym klient używa połączenia sterującego, aby wysłać PASV
polecenie do serwera, a następnie odbiera adres IP serwera i numer portu serwera z serwera, którego następnie używa klient do otwarcia połączenia danych z adresem IP serwera i serwerem otrzymano numer portu.
W trybie pasywnym większość obciążeń konfiguracyjnych spoczywa na serwerze. Administrator serwera powinien skonfigurować serwer zgodnie z poniższym opisem.
Zapora i NAT po stronie serwera FTP muszą być skonfigurowane nie tylko w celu umożliwienia / kierowania połączeń przychodzących na porcie FTP 21, ale także szeregu portów dla połączeń danych przychodzących. Zazwyczaj oprogramowanie serwera FTP ma opcję konfiguracji umożliwiającą ustawienie zakresu portów, z których będzie korzystać serwer. Ten sam zakres musi zostać otwarty / przekierowany na firewallu / NAT.
Gdy serwer FTP znajduje się za NAT, musi znać swój zewnętrzny adres IP, aby mógł podać go klientowi w odpowiedzi na PASV
polecenie.
W trybie aktywnym większość obciążeń związanych z konfiguracją spoczywa na kliencie.
Zapora ogniowa (np. Zapora systemu Windows) i NAT (np. Reguły routingu modemu ADSL) po stronie klienta muszą być skonfigurowane w taki sposób, aby zezwalać / kierować zakres portów dla przychodzących połączeń danych. Aby otworzyć porty w systemie Windows, wybierz Panel sterowania> System i zabezpieczenia> Zapora systemu Windows> Ustawienia zaawansowane> Reguły ruchu przychodzącego> Nowa reguła . Informacje na temat routingu portów na NAT (jeśli istnieją) można znaleźć w jego dokumentacji.
Gdy w twojej sieci znajduje się NAT, klient FTP musi znać swój zewnętrzny adres IP, który WinSCP musi podać serwerowi FTP za pomocą PORT
polecenia. Aby serwer mógł poprawnie połączyć się ponownie z klientem, aby otworzyć połączenie danych. Niektóre klienty FTP są zdolne do automatycznego wykrywania zewnętrznego adresu IP, niektóre muszą zostać skonfigurowane ręcznie.
Niektóre zapory ogniowe / NAT próbują automatycznie otwierać / zamykać porty danych, sprawdzając połączenie sterujące FTP i / lub tłumacząc adresy IP połączenia danych w ruchu kontrolnym.
Przy takim firewallu / NAT powyższa konfiguracja nie jest konieczna dla zwykłego niezaszyfrowanego FTP. Ale to nie może działać z FTPS, ponieważ ruch połączenia sterującego jest szyfrowany, a zapora sieciowa / NAT nie może go kontrolować ani modyfikować.
Tryb aktywny: -server inicjuje połączenie.
Tryb pasywny: -client inicjuje połączenie.
Tryb aktywny - klient wydaje serwerowi polecenie PORT, sygnalizując, że „aktywnie” poda adres IP i numer portu, aby ponownie otworzyć połączenie danych z klientem.
Tryb pasywny - klient wydaje polecenie PASV, aby wskazać, że będzie „pasywnie” czekał na podanie przez serwer adresu IP i numeru portu, po czym klient utworzy połączenie danych z serwerem.
Istnieje wiele dobrych odpowiedzi powyżej, ale ten post na blogu zawiera przydatne grafiki i dość solidne wyjaśnienie: https://titanftp.com/2018/08/23/what-is-the-difference-between-active-and -passive-ftp /