Porty FTP: jak działają i skonfigurować je bez błędów

Michał BaciorMichał Bacior01.11.2026
Porty FTP: jak działają i skonfigurować je bez błędów

Spis treści

  1. Zawieszona lista katalogów? Winny może być zablokowany kanał danych
  2. Jak poprawnie skonfigurować porty FTP
  3. Czym różnią się tryb aktywny, pasywny i EPSV
  4. Mniej problemów z NAT-em i łatwiejsza obsługa IPv6
  5. Jak dobrać zakres portów pasywnych i otworzyć go w firewallu
  6. Jedna niezgodna reguła może zablokować transfer plików
  7. Jak skonfigurować adres publiczny serwera za NAT-em i sprawdzić połączenie

Porty FTP umożliwiają przesyłanie plików między komputerem a serwerem, ale ich nieprawidłowa konfiguracja może utrudnić połączenie lub narazić dane na niebezpieczeństwo. W artykule wyjaśnię, jak działają porty FTP, czym różnią się tryb aktywny i pasywny oraz które ustawienia warto sprawdzić przed uruchomieniem usługi. Podpowiem też, jak uniknąć typowych błędów i skonfigurować połączenie krok po kroku.

W skrócie:
  • FTP korzysta z portu 21 do poleceń i osobnego połączenia do transferu danych.
  • Tryb pasywny i EPSV zwykle lepiej działają za NAT-em, ale wymagają otwartego zakresu portów.
  • Ustaw stały zakres portów pasywnych i zezwól na niego we wszystkich zaporach.
  • Za NAT-em skonfiguruj publiczny adres serwera i sprawdź go w odpowiedzi PASV.
  • Testuj logowanie, listowanie katalogów i transfer z zewnętrznej maszyny.
  • FTP nie szyfruje haseł; wybierz FTPS lub rozważ SFTP przez SSH na porcie 22.

FTP używa dwóch połączeń TCP: kanału sterującego i kanału danych. Pierwszy zwykle działa na porcie 21 i przenosi logowanie, polecenia oraz odpowiedzi, na przykład kod 230 po poprawnym uwierzytelnieniu. Nie przesyła plików — osobne połączenie kanału danych obsługuje każdą listę katalogów, wysyłanie i pobieranie.

W trybie aktywnym klient wskazuje port nasłuchujący, a serwer łączy się z nim ze swojego portu 20. Takie połączenie przychodzące często blokują firewalle i routery NAT. W trybie pasywnym serwer podaje port, a klient sam się z nim łączy — dlatego ten tryb zwykle lepiej działa za domowym routerem. Odpowiedź PASV może zawierać adres i port, natomiast EPSV, opisany w RFC 2428, podaje tylko port i korzysta z adresu istniejącego połączenia. Ponieważ oba tryby przydzielają port danych osobno, samo otwarcie portu 21 nie wystarczy.

Zawieszona lista katalogów? Winny może być zablokowany kanał danych

Ustaw na serwerze stały zakres portów pasywnych, na przykład 30000–30099, a następnie zezwól na połączenia TCP w tym zakresie w firewallu systemowym i — jeśli działa — zaporze dostawcy. Dobierz zakres do liczby równoczesnych transferów i uwzględnij porty pozostające przez pewien czas w stanie TIME_WAIT. Sprawdź też, czy zakres nie pokrywa się z portami wychodzącymi systemu; w typowej konfiguracji Ubuntu mogą to być porty 32768–60999. Jeśli serwer działa za NAT-em, ustaw także jego publiczny adres IP, aby klienci nie łączyli się z adresem prywatnym.

Jeśli logowanie działa, ale lista katalogów się zawiesza, prawdopodobną przyczyną jest blokada kanału danych, a nie błędne hasło. Przy FTPS TLS szyfruje kanał sterujący i dane, więc starsze mechanizmy śledzące FTP nie odczytują ogłoszonego portu. Dlatego pewniej jest skonfigurować stały zakres portów i reguły firewalla. Przy nowych wdrożeniach warto rozważyć SFTP: przesyła pliki w jednym połączeniu SSH na porcie 22, bez osobnego kanału danych.

Jak poprawnie skonfigurować porty FTP

Aby skonfigurować FTP, rozdziel kanał sterujący od kanału danych, ustal zakres portów pasywnych i zezwól na niego w zaporach. Uwzględnij też NAT, FTPS i testy połączenia.

  1. Rozdziel kanał sterujący i kanał danych. TCP 21 służy do logowania i przesyłania poleceń, natomiast pliki i listy katalogów wymagają osobnego połączenia danych. Jeśli logowanie działa, ale lista plików się zawiesza, sprawdź, czy zapora nie blokuje tego połączenia.
  2. Wybierz tryb pasywny i ustal zakres portów. W tym trybie klient otwiera oba połączenia, co ułatwia pracę za NAT-em. Serwer wybiera port danych także przy użyciu EPSV, ale nie podaje w odpowiedzi adresu IP. Ustaw stały zakres, na przykład 30000–30099: w vsftpd służą do tego pasv_min_port i pasv_max_port, w ProFTPD — PassivePorts, a w Pure-FTPd — opcja -p. Dobierz zakres do liczby równoczesnych transferów i unikaj kolizji z systemowym zakresem portów wychodzących.
  3. Otwórz te same porty w każdej zaporze. Zezwól na TCP 21 i cały ustalony zakres pasywny zarówno w zaporze systemowej, jak i sieciowej zaporze dostawcy. W UFW zapisz zakres jako 30000:30099/tcp, a w firewalld — 30000-30099/tcp. Sam port 21 umożliwia logowanie, ale nie listowanie katalogów ani transfer plików.
  4. Skonfiguruj publiczny adres serwera za NAT-em. Jeśli serwer ma prywatny adres IP, ustaw publiczny adres, który będzie ogłaszał klientom w odpowiedzi PASV. Użyj pasv_address w vsftpd, MasqueradeAddress w ProFTPD albo opcji -P w Pure-FTPd. Błędny adres może sprawić, że klient spróbuje połączyć się z niedostępnym adresem prywatnym.
  5. Przetestuj połączenie z zewnętrznej maszyny. Sprawdź logowanie, listowanie katalogu i transfer pliku. Upewnij się, że port z odpowiedzi PASV mieści się w ustalonym zakresie, a ogłaszany adres jest osiągalny. Brak odpowiedzi lub przekroczenie limitu czasu może oznaczać blokadę na jednej z zapór. Po zmianach poprawnie uruchom ponownie usługę FTP.
  6. Wybierz bezpieczny protokół. Zwykłe FTP przesyła dane logowania jawnym tekstem. Jeśli musisz używać FTP, wybierz FTPS, ale pamiętaj, że nadal wymaga kanału danych i odpowiednich reguł zapory. W nowych wdrożeniach rozważ SFTP: korzysta z jednego połączenia SSH na porcie 22, więc nie wymaga zakresu portów pasywnych. Nie polegaj na automatycznych pomocnikach śledzenia FTP — w aktualnych systemach działają w ograniczonym zakresie, a szyfrowanie FTPS uniemożliwia im odczyt informacji o portach.
Tryb Kierunek danych Port / zakres Adres za NAT
Aktywny Serwer → klient TCP 20 → port klienta Problem po stronie klienta
Pasywny (PASV) Klient → serwer TCP 21 + zakres pasywny, np. 30000–30099 Ustaw publiczny adres w odpowiedzi PASV
EPSV Klient → serwer TCP 21 + ten sam zakres pasywny Adres połączenia sterującego; brak adresu w odpowiedzi
Firewall Przychodzące TCP 21 + zakres pasywny Otwórz na serwerze i w firewallu dostawcy

Czym różnią się tryb aktywny, pasywny i EPSV

FTP używa dwóch połączeń TCP: kanału sterującego, zwykle przez port 21, oraz kanału danych do listowania katalogów i przesyłania plików. W trybie aktywnym klient wskazuje port, na którym czeka, a serwer łączy się z nim — zwykle ze swojego portu 20. Dlatego router lub zapora po stronie klienta może zablokować połączenie przychodzące.

W trybie pasywnym klient otwiera oba połączenia: sterujące i danych. Serwer podaje adres IP oraz port, na przykład w odpowiedzi „227 Entering Passive Mode”. Port wylicza się, mnożąc przedostatnią wartość przez 256 i dodając ostatnią. Tryb pasywny zwykle lepiej działa za NAT-em po stronie klienta, jednak wymaga skonfigurowania zakresu portów na serwerze i odblokowania ich w zaporze. Bez tego logowanie może się udać, ale lista katalogów utknie, gdy klient będzie czekać na kanał danych.

Mniej problemów z NAT-em i łatwiejsza obsługa IPv6

EPSV, czyli rozszerzony tryb pasywny, również sprawia, że klient inicjuje połączenie danych. Serwer zwraca jednak tylko port, a nie adres IP i port jak w komunikacie „227”. Przykładowa odpowiedź to „229 Entering Extended Passive Mode (|||50000|)”. Klient korzysta wtedy z adresu użytego w połączeniu sterującym, co ogranicza problemy z błędnym adresem za NAT-em i ułatwia działanie w sieciach IPv6. EPSV wymaga nadal otwarcia odpowiedniego zakresu portów na serwerze. Dlatego EPSV warto traktować jako wygodniejszą odmianę trybu pasywnego, a nie sposób na ominięcie konfiguracji zapory.

Wskazówka: jeśli logowanie do FTP działa, ale listowanie katalogów lub pobieranie plików zawodzi, sprawdź, czy zapora serwera przepuszcza skonfigurowany zakres portów pasywnych — EPSV również z niego korzysta.

Jak dobrać zakres portów pasywnych i otworzyć go w firewallu

FTP w trybie pasywnym używa dwóch połączeń TCP: port 21 obsługuje logowanie i polecenia, a drugie połączenie — listy katalogów i transfer plików. Dlatego samo otwarcie portu 21 często nie wystarcza: logowanie może się udać, ale lista plików nie zostanie pobrana. Klient inicjuje oba połączenia, natomiast port kanału danych wybiera serwer. Bez ustalonego zakresu może za każdym razem użyć innego portu.

Tryb aktywny i pasywny FTP

Ustaw na serwerze stały zakres portów, na przykład 31000–31099. Taka pula może wystarczyć przy niewielkim ruchu; przy wielu równoczesnych transferach poszerz ją, pamiętając, że zamknięte połączenia TCP przez pewien czas pozostają w stanie TIME_WAIT. Sprawdź też zakres portów tymczasowych poleceniem sysctl net.ipv4.ip_local_port_range i unikaj nakładania się zakresów. W vsftpd ustaw pasv_min_port=31000 oraz pasv_max_port=31099, a w ProFTPD użyj dyrektywy PassivePorts 31000 31099. Przed zmianą zapisz obecne ustawienia, by porównać je po teście.

Jedna niezgodna reguła może zablokować transfer plików

Konfiguracja portów FTP

Otwórz w firewallu port 21/TCP oraz ten sam zakres portów danych. W UFW dodaj reguły sudo ufw allow 21/tcp i sudo ufw allow 31000:31099/tcp, a ich stan sprawdź poleceniem sudo ufw status verbose. W firewalld dodaj usługę FTP i zakres portów: sudo firewall-cmd --permanent --add-service=ftp, sudo firewall-cmd --permanent --add-port=31000-31099/tcp, a następnie wykonaj sudo firewall-cmd --reload. Jeśli serwer działa za NAT-em, skonfiguruj też publiczny adres, by klient nie otrzymał prywatnego, nieosiągalnego adresu.

Po zapisaniu zmian zrestartuj usługę FTP i przetestuj połączenie z innego komputera. Sprawdź, czy odpowiedź PASV podaje port z wybranego zakresu oraz czy firewall dostawcy, na przykład w panelu VPS, przepuszcza te połączenia. Przy FTPS nie polegaj na pomocnikach śledzących FTP, ponieważ szyfrowany kanał sterujący nie pozwala im odczytać numeru portu. Jeśli oba urządzenia obsługują SFTP, rozważ tę prostszą alternatywę: przesyłanie plików odbywa się przez jedno połączenie SSH.

Wskazówka: Połączenie testowe wykonaj z sieci zewnętrznej — test z samego serwera może nie ujawnić problemu z NAT-em ani regułami firewalla u dostawcy VPS.

Jak skonfigurować adres publiczny serwera za NAT-em i sprawdzić połączenie

Skonfiguruj publiczny adres, porty pasywne i reguły zapory, a następnie przetestuj FTP z zewnętrznej maszyny.

  • Sprawdź, czy serwer znajduje się za NAT-em. Uruchom ip -4 addr show, aby sprawdzić adres interfejsu. Jeśli jest prywatny, a klienci łączą się z publicznym adresem routera lub dostawcy, skonfiguruj serwer tak, by w odpowiedziach FTP podawał ten adres publiczny. W przeciwnym razie klient może próbować połączyć się z niedostępnym adresem prywatnym.
  • Skonfiguruj publiczny adres i zakres portów pasywnych. W trybie pasywnym klient nawiązuje połączenia sterujące i danych; to drugie jest potrzebne do wyświetlania katalogów i każdego transferu. We vsftpd ustaw na przykład pasv_min_port=30000, pasv_max_port=30099 i pasv_address=203.0.113.10. W ProFTPD użyj PassivePorts 30000 30099 oraz MasqueradeAddress, a w Pure-FTPd — flag -p (zakres portów) i -P (adres publiczny). Zastąp przykładowy adres własnym.
  • Otwórz port sterujący i porty danych we wszystkich zaporach. Zezwól na TCP 21 oraz ten sam zakres portów pasywnych, który skonfigurowałeś w serwerze. W UFW dodaj reguły sudo ufw allow 21/tcp i sudo ufw allow 30000:30099/tcp. Sprawdź również zaporę w panelu dostawcy, ponieważ działa niezależnie od zapory systemowej. Dobierz zakres do liczby równoczesnych transferów i upewnij się, że nie koliduje z zakresem portów wychodzących: sysctl net.ipv4.ip_local_port_range.
  • Zastosuj zmiany i przetestuj konfigurację. Po edycji pliku zrestartuj usługę, na przykład poleceniem sudo systemctl restart vsftpd, a następnie sprawdź jej status i logi. Test wykonaj z innej maszyny: curl -v --disable-epsv --user użytkownik:hasło ftp://publiczny-adres/. Odpowiedź PASV powinna zawierać publiczny adres i port z wybranego zakresu. Prywatny adres wskazuje na błędną konfigurację NAT, a port spoza zakresu — na niezaładowaną konfigurację.
  • Ustal przyczynę blokady i rozważ bezpieczniejszy protokół. Jeśli logowanie się powiedzie, ale lista katalogów się zawiesi, problem zwykle dotyczy kanału danych, nie hasła. Zewnętrzny test nc -vz publiczny-adres 30000 pomoże zdiagnozować połączenie: przekroczenie czasu oczekiwania może wskazywać na blokadę po drodze, a natychmiastowe „Connection refused” — że pakiet dotarł, lecz na tym porcie nie nasłuchuje obecnie żaden proces. Pomocniki conntrack FTP nie obsługują szyfrowanego kanału FTPS. Jeśli obie strony obsługują SFTP, wybierz ten protokół: przesyła dane przez jedno połączenie SSH na porcie 22.

Źródła:

  1. https://www.ssdnodes.com/learn/lang/pl/ftp-passive-mode-firewall-ports

FAQ - Najczęstsze pytania

Jakie porty wykorzystuje FTP?

FTP używa portu TCP 21 do kanału sterującego, który obsługuje logowanie i polecenia. Listowanie katalogów oraz przesyłanie plików odbywa się przez osobne połączenie danych, którego port zależy od trybu i konfiguracji serwera.

Czym różnią się aktywny i pasywny tryb FTP?

W trybie aktywnym serwer łączy się z portem nasłuchującym klienta, co często blokują jego firewall lub router NAT. W trybie pasywnym klient inicjuje także połączenie danych, dlatego ten tryb zwykle lepiej działa za routerem, ale wymaga otwarcia na serwerze ustalonego zakresu portów.

Dlaczego logowanie do FTP działa, ale lista katalogów się zawiesza?

Najczęściej blokowane jest połączenie kanału danych, a nie popełniono błędu przy logowaniu. Sprawdź, czy zapory systemowa i sieciowa przepuszczają skonfigurowany zakres portów pasywnych oraz czy serwer ogłasza prawidłowy adres publiczny, jeśli działa za NAT-em.

Jak skonfigurować porty pasywne i zaporę?

Ustaw na serwerze stały zakres, na przykład TCP 30000–30099, i otwórz go w każdej zaporze wraz z portem TCP 21. Zakres powinien odpowiadać ustawieniom serwera, wystarczać dla równoczesnych transferów i nie kolidować z zakresem portów wychodzących systemu.

Czym EPSV różni się od PASV i czy SFTP wymaga portów pasywnych?

EPSV podaje tylko port danych, a klient korzysta z adresu użytego w połączeniu sterującym; PASV podaje zarówno adres, jak i port. SFTP nie korzysta z FTP ani z osobnego kanału danych — przesyła pliki przez jedno połączenie SSH, zwykle na porcie 22.

Tagi:
  • Konfiguracja portów FTP
  • Tryb aktywny i pasywny FTP
  • Kanał sterujący i kanał danych
  • Firewall i porty pasywne
  • FTP za NAT-em
Ładowanie ocen...

Komentarze

Ładowanie komentarzy...

W podobnym tonie

Jak włączyć roaming w Plusie? Szybki sposób na brak zasięgu

Jak włączyć roaming w Plusie? Szybki sposób na brak zasięgu

Wyjeżdżasz za granicę i chcesz korzystać z telefonu tak jak w domu? Jak interesują cię takie tematy to Sprawdź, jak drukować ...

Najtańszy internet na kartę – porównanie ofert i cen

Najtańszy internet na kartę – porównanie ofert i cen

Wybór najtańszego internetu na kartę nie zawsze jest oczywisty — ceny i warunki ofert różnią się w zależności od operatora, p...

WPS w routerze – jak działa, czy jest bezpieczny i kiedy go używać?

WPS w routerze – jak działa, czy jest bezpieczny i kiedy go używać?

WPS w routerze pozwala szybko połączyć urządzenia z siecią Wi‑Fi bez ręcznego wpisywania hasła, ale jego wygoda budzi pytania...