Konfiguracja serwera FTP z pasywnym trybem transferu (vsftpd) w Linux
vsftpd (Very Secure FTP Daemon) to jeden z najczęściej używanych serwerów FTP w systemach Linux. Domyślnie obsługuje zarówno aktywny, jak i pasywny tryb transferu plików.
✅ Pasywny tryb FTP jest zalecanym rozwiązaniem, ponieważ działa poprawnie za firewallami i NAT-em.
❌ Tryb aktywny FTP często napotyka problemy z zaporami sieciowymi i routerami.
W tym artykule dowiesz się:
🔹 Jak działa tryb pasywny FTP?
🔹 Jak skonfigurować vsftpd w trybie pasywnym?
🔹 Jakie porty otworzyć w firewallu?
🔹 Jak sprawdzić, czy serwer działa poprawnie?
1. Jak działa pasywny tryb FTP?
W trybie pasywnym to klient FTP inicjuje połączenie z serwerem na losowym porcie. Jest to bardziej kompatybilne z zaporami sieciowymi, ponieważ:
✅ Nie wymaga otwierania portów na komputerze klienta
✅ Działa bez potrzeby konfiguracji NAT na routerze
Jak działa transfer w trybie pasywnym?
1️⃣ Klient FTP łączy się z serwerem na porcie 21 (port sterujący).
2️⃣ Serwer FTP wysyła klientowi numer portu do transferu danych.
3️⃣ Klient łączy się do wskazanego portu i pobiera pliki.
📌 Zaleta: W przeciwieństwie do trybu aktywnego, w którym serwer próbuje otworzyć połączenie zwrotne, w trybie pasywnym cały ruch jest inicjowany przez klienta.

2. Instalacja vsftpd w Ubuntu/Debian
Jeśli nie masz jeszcze vsftpd, zainstaluj go poleceniem:
sudo apt update
sudo apt install vsftpd -y
Sprawdź status usługi:
sudo systemctl status vsftpd
Jeśli serwer nie działa, uruchom go:
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
3. Konfiguracja trybu pasywnego w vsftpd
Otwórz plik konfiguracyjny:
sudo nano /etc/vsftpd.conf
🔹 Krok 1: Wyłączenie trybu aktywnego
Aby wymusić tryb pasywny FTP, wyłącz tryb aktywny:
port_enable=NO
🔹 Krok 2: Włączenie trybu pasywnego
Dodaj lub zmodyfikuj następujące linie:
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
🔹 Krok 3: Ustawienie adresu IP serwera
Jeśli serwer FTP działa w sieci NAT, podaj zewnętrzny adres IP:
pasv_address=Twoj_Zewnetrzny_IP
Jeśli masz dynamiczny adres IP, możesz użyć domeny (np. z Dynamic DNS).
🔹 Krok 4: Zezwolenie na transfer danych
Dodaj regułę:
pasv_addr_resolve=YES
🔹 Krok 5: Zapisz zmiany i zrestartuj serwer
Zapisz plik (Ctrl + X
, Y
, Enter
) i uruchom vsftpd ponownie:
sudo systemctl restart vsftpd
4. Konfiguracja firewalla dla pasywnego FTP
Jeśli korzystasz z ufw
, otwórz porty dla FTP:
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
Dla iptables
:
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 40000:50000 -j ACCEPT
Sprawdź, czy firewall działa:
sudo ufw status
Jeśli używasz AWS, Google Cloud lub OVH, otwórz te porty w ustawieniach zapory sieciowej.
5. Testowanie pasywnego FTP
📌 Sprawdzenie logów serwera FTP
Po konfiguracji warto sprawdzić, czy serwer działa prawidłowo:
sudo tail -f /var/log/vsftpd.log
📌 Testowanie połączenia FTP w trybie pasywnym
Z komputera-klienta użyj polecenia:
ftp adres_IP_serwera
Po zalogowaniu wpisz:
ls
Jeśli widzisz listę plików, oznacza to, że konfiguracja działa poprawnie.
6. Częste problemy i ich rozwiązania
Problem | Rozwiązanie |
---|---|
Błąd „Connection timed out” | Otwórz porty 40000-50000 w firewallu i NAT |
Połączenie FTP działa, ale nie pokazuje plików | Sprawdź pasv_address=Twoj_Zewnetrzny_IP w vsftpd.conf |
Serwer FTP działa, ale klient nie może pobierać plików | Upewnij się, że pasv_enable=YES jest aktywne |
7. Dlaczego warto używać pasywnego FTP?
✅ Lepsza kompatybilność z firewallami – klient inicjuje wszystkie połączenia.
✅ Łatwiejsza konfiguracja w sieciach NAT – serwer nie musi otwierać portów zwrotnych.
✅ Większe bezpieczeństwo – unika problemów związanych z otwieraniem losowych portów na kliencie.
📌 Tryb pasywny jest obecnie standardem w konfiguracji FTP i zalecanym rozwiązaniem.
Podsumowanie
✅ Tryb pasywny FTP działa lepiej w nowoczesnych sieciach, ponieważ klient inicjuje połączenie.
✅ Wymaga otwarcia portów 40000-50000, ale działa za firewallami i NAT-em.
✅ Konfiguracja w vsftpd jest prosta, wystarczy dodać pasv_enable=YES
i określić zakres portów.
Jeśli masz problemy z połączeniem, sprawdź ustawienia firewalla oraz upewnij się, że serwer widzi poprawny adres IP.