Nu sunt suficiente informații pentru a avea un răspuns complet. Dar trebuie să vă amintiți întotdeauna că FTP nu este un protocol simplu. În cel mai simplu caz, activ FTP funcționează astfel:
- Faceți o conexiune de control la portul 21 (server FTP), prin care
- Tu te autentifici
- Spuneți serverului unde să facă o conexiune (IP și port)
- Comenzi serverului să înceapă transferul
- The Server face o alta conexiune la IP-ul și portul pe care i-ai spus și trimite sau primește date.
De obicei, la pasul 3 îi spuneți serverului IP-ul dvs. și portul la care ascultă clientul dvs. FTP, așa că se face o altă conexiune la pasul 5 în sens invers, de la server la tine.
Ce ar fi în prezența firewall-ului între ele? Să presupunem că ați activat acceptarea pachetelor pe portul 21 (sau oricare ar fi folosit) de pe server. Puteți face o conexiune de control. Acum, cum rămâne cu conexiunea de date inversă pe care o face serverul? Cum să activezi asta?
Există două cazuri: fie permiteți static un port (sau interval) și configurați clientul FTP să folosească întotdeauna acel port, fie aveți un firewall foarte inteligent, care activ trage cu urechea pe conexiunea de control, extrage IP-ul și portul și creează dinamic regula temporară care permite conexiunea inversă. Aceasta se numește ALG care reprezintă Gateway la nivel de aplicație.
Cum știe firewall-ul ce conexiuni să asculte cu urechea? Știe că FTP funcționează prin TCP/21, așa că pur și simplu caută orice trafic pe acel port. Ce se întâmplă dacă schimbi portul de control? Probabil ați ghicit că: ALG-ul nu va funcționa.Firewall nu va adăuga regula dinamică suplimentară, astfel încât încercarea de conectare inversă a datelor nu va reuși.
Există o speranță că dacă configurați „ALG” să funcționeze cu un port care nu este implicit, problema va fi rezolvată. Cu toate acestea, acest lucru nu este întotdeauna cazul. Întreabă întâi, care firewall despre care vorbim? Lumea modernă folosește intens firewall-uri, la ambele capete și între ele și, de asemenea, există o utilizare intensă a NAT (inclusiv CGN, care este folosit de ISP-uri). Orice NAT are nevoie și de ALG: trebuie să creeze o regulă de traducere dinamică către clientul care se află în spatele NAT și care a început tranzacția. Puteți reuși în acest fel doar dacă ați reușit să configurați fiecare ALG de-a lungul căii așa cum doriți. Vezi unde merg?
Sunt două solutii comune. În primul rând, simplu: bazați-vă pe ALG-uri, care vă cere să nu schimbați niciodată portul de control FTP implicit (sincer, 20 de ani de gestionare a serverelor și încă nu înțeleg rostul folosirii porturilor care nu sunt implicite. Acest lucru creează mai multe probleme decât rezolvă) . În al doilea rând, și simplu: utilizați un mod FTP pasiv.
The pasiv FTP funcționează astfel:
- Faceți o conexiune la portul 21 (server FTP), prin care
- Tu te autentifici
- Intri in modul pasiv, iar serverul raspunde cu IP si port
- Comenzi serverului să înceapă transferul
- Tu faceți o altă conexiune la IP-ul și portul pe care v-a spus serverul și primiți sau trimiteți datele.
Observați că singurii pași modificați sunt 3 și 5. Ei evită conexiunile inverse.
Acest lucru rezolvă parțial problema cu portul non-implicit și ALG-urile necontrolate. De asemenea, permite utilizarea criptării pe conexiunea de control (care rupe în mod inerent ALG-urile).