FTP modalità Attiva e Passiva

Giorgio Borelli

Comunicazione tra Client e Server FTP sulla porta 21Il protocollo FTP (File Transfer Protocol) Protocollo di Trasferimento File, è uno dei più vecchi e noti protocolli usati su internet, al pari di http per la navigazione e di smtp per l'invio di posta elettronica. Come quasi tutta l'infrastruttura d'Internet, anche FTP è un protocollo basato sull'architettura Client/Server, tramite esso ed i suoi comandi è possibile trasferire facilmente dei file tra Client e Server attraverso sempre il protocollo di rete TCP.

Può capitare che a causa della presenza di un firewall, il trasferimento dati via FTP non riesca, si stabilisce la connessione ma non si riesce ad avviare il trasferimento, come mai? Il problema è come detto il firewall, che a seconda della sua configurazione blocca la comunicazione tra il Client ed il Server. Possiamo aggirare questo problema usando la modalità attiva di FTP.

Il protocollo FTP consente infatti di stabilire due tipi di connessione, dette FTP modalità Attiva e FTP modalità Passiva. Per capirne la differenza e sapere quando usare l'una e quando l'altra, dobbiamo però un attimino approfondire il funzionamento del protocollo FTP.

 

FTP Modalità Attiva

Quando il Client FTP cerca di stabilire una connessione col Server FTP, manda un pacchetto di richiesta di comunicazione al Server, che è in ascolto sulla porta 21. La porta 21 rientra tra le cosidette "Well Know Port", ovvero le "Porte Riconosciute", ricadenti nel range 0-1023, e sono dette così poichè solitamente sono assegnate ai processi di sistema più noti ed utilizzati, come la porta 80 per HTTP, o ancora la 25 per SMTP; più precisamente la porta 21 di FTP viene detta "Porta di Comando" poichè è la porta del Server che accetta i comandi FTP da parte del Client.

A questo punto, una volta che il Server accetta la comunicazione (riconosce il client tramite login: username + password), il Server apre la porta 20 e cerca di connettersi con il Client ad una sua porta superiore o ugule a 1024 in maniera randomica, ovvero casuale, se questo canale riesce a stabilirsi correttamente ecco che comincia il trasferimento dati tra Client e Server. Ecco perchè si dice anche che il protocollo FTP utilizza porte di rete multiple, perchè in pratica si stabiliscono due connessioni: la prima per la comunicazione e l'invio dei comandi sulla porta 21 del Server, e la seconda per il trasferimento dati tra la porta 21 del Server ed una porta casuale del Client superiore a 1024, il Client tramite la connessione di comunicazione, renderà noto al Server la porta scelta in maniera casuale per il trasferimento dati.

Questa sin qui descritta non è altro che il funzionamento di FTP in Modalità Attiva. La Modalità Attiva FTP viene riassunta bene dalla figura sottostante: 

 

Funzionamento del Protocollo FTP in modalità Attiva

 

Dove con "Reg Port" intendo indicare le cosidette "Porte Registrate", ossia quelle porte superiori a 1024 (partendo da 0) scelta in maniera Random (casuale). Il problema nasce proprio con questa modalità attiva e con la presenza di un Firewall, quest'ultimo, essendo la porta del Client scelta in maniera casuale per stabilire la connessione di trasferimento dati FTP è bloccata dal Firewall, il quale giustamente non la riconosce come una Well Know Port e la blocca, chiudendo di fatto la connessione.

Questo filtro causato dal FireWall, può essere aggirato in due modi, il primo è di configurare il FireWall del Client aprendo un largo range di porte ed abilitandole a ricevere connessioni in ingresso. Questa prima soluzione però crea un potenziale problema di sicurezza (grosso direi), poichè aprendo un ampio range di porte per la connessione ftp lo apriamo allo stesso tempo a qualsiasi altro servizio, quindi anche malevolo, che cerca di stabilire una connessione col nostro PC. L'altra soluzione, più elegante e molto più sicura della prima è quella di usare FTP in modalità Passiva.

 

FTP Modalità Passiva

Per ovviare al problema creato dalla presenza di un eventuale Firewall, FTP è in grado di lavorare anche in modalità Passiva (la quale rappresenta la modalità di funzionamento standard o di default di FTP). Come in quella attiva il Client cerca di stablire una connessione di comunicazione col Server sempre sulla porta 21, specificando però nel pacchetto inviato che intende stabilire un connessione Passiva e non Attiva, a differenza di quella attiva il Server non aprirà più la porta 20 per la connessione di trasferimento dati, ma una porta casuale superiore come numero a 1024, rendendola disponibile ad accettare connessioni in ingresso; mentre per il Client la porta aperta viene sempre scelta in maniera random (> 1024). Come per la modalità attiva, la figura sottostante riassume bene il funzionamento del protocollo FTP in modalità Passiva:

 

Funzionamento del Protocollo FTP in modalità Attiva

 

Cosa è cambiato apparte la porta 20 vi chiederete voi? Beh! è cambiato parecchio, il Data Transfer Connection non è più nel verso dal Server al Client, ma è al contrario, dal Client al Server, quindi il FireWall del Client non si pone più il problema se accettare o meno connessioni in ingresso, anzi non avviene proprio, poichè la connessione in ingresso viene aperta sul Server. Ecco spiegato come aggirare il problema del funzionamento del protocollo FTP in modalità attiva in presenza di FireWall.

I più attenti però potrebbero fare un'osservazione pertinente, se ci pensiamo bene, il problema si è invertito, anche sul Server ci potrebbe essere un FireWall che rifiuti le connessioni in ingresso, come fare allora? Bisogna dire al server di aprire delle apposite porte (> 1024) da usare appositamente per accettare connessioni in ingresso FTP in modalità Passiva, per aprire questo range di porte, sfruttiamo il comando DOS netsh:

FOR /L %I IN (5500,1,5701) DO netsh firewall add portopening TCP %I “PassiveFTP”%I

Il comando netsh viene usato per la maggior parte delle operazioni di networking, in questo caso lo abbiamo usato in maniera ciclica per aggiungere porte aperte sul FireWall ed abilitarle ad accettare connessioni ftp passive sul range 5500 - 5700.

 

Chiunque voglia aggiungere qualcosa o chiedere ulteriori chiarimenti sul funzionamento di FTP in Modalità Attiva e Passiva può farlo liberamente tramite i commenti.

Categorie: Internet | Reti

Tags:

Commenti (26) -

Sig,. Borelli Dalla diagnostica  risultava che mancava la porta FTP e quindi ho provato ad aggiungerele col N. 20 e 21. Ora mi dice che c'è un client che blocca la porta, che fare. Dovevo forse mettere una sola porta. Scusi l'ignoranza anche se sono una docente in pensione, ma 79enne. Grazie!Mirella Angela

Rispondi

Gentile Angela,
sarebbe così cortese da illustrarmi più nel dettaglio la situazione:
diagnostica di cosa e come?
manca la porta ftp dove?
chi dice che un client blocca la porta?

Riuscirei, forse, ad esserLe di maggiore aiuto se mi spiega per bene cosa stava tentando di fare, cosa voleva ottenere e che problemi ha riscontrato. Dal suo commento ho informazioni frammentarie che non mi fanno capire il problema, mi spieghi meglio, saluti Giorgio.

Rispondi

Buongiorno,
e sottopongo il mio problema.
Su un PC con Windows XP Pro ho definito un server FTP. Tale server ha funzionato fino a lunedi mattina in modalità passiva, ricevendo dei file da n client; da lunedi non funziona più in modalità passiva e funziona abbastanza male anche in quella attiva. Provando con un client FTP tipo FileZilla, in modalità passiva non riesce a visualizzare l'elenco delle directory.
Può indicarmi quale potrebbe essere il problema? il comando dos di cui parla lo posso usare anche su xp? in che modo?

Grazie per la disponibilità

Distinti saluti

Rispondi

Gentile Mirella,
purtroppo non mi fornisce alcun dato sul perché il server FTP che prima funzionava all'improvviso non funziona più.
Non ho nessun elemento, posso solo fare delle ipotesi:
Sono stati fatti degli aggiornamenti a Windows sulla sicurezza?
E' stato installato un firewall?
Sono state modificate delle impostazioni sul firewall?
Sono stati installati programmi che in qualche modo stabiliscono connessioni che possano portare conflitti?
E' cambiato qualcosa in merito alla configurazione del suo sistema?

Insomma qualcosa deve pur essere accaduto, ci rifletta bene e troverà la risposta da sola.

In merito al comando dos per aprire le porte, funziona anche con XP, basta eseguirlo nella shell così per come è scritto nell'articolo; però le consiglio vivamente prima di fare tentativi che potrebbero portare ulteriori problemi e vulnerabilità di cercare d'individuare l'origine del problema.

Saluti, Giorgio.

Rispondi

Ciao Giorgio,
è possibile darti un esempio pratico di una problematica a questo correlata?
Quando provo ad accedere via FTP alla NAS visualizzo errore 227 Entering Passive Mode (ip retelocale, 253, 234)
Avresti idee?

Rispondi

Prova ad accedere in FTP dal client in active Mode, oppure setta sul server FTP di accettare l'IP pubblico del tuo client in Passive Mode.

Fammi Sapere, ciao Giorgio.

Rispondi

Ciao Giorgio, scusami il ritardo, non avevo visto la tua risposta:

ho una nas sulla quale come FTP posso impostare solo porta di connessione FTP e range di porte per le quali riuscire a trasferire dati dal NAS all'esterno.
Via ftp da rete interna funziona.
Via ftp da fuori no, da errore 227 Entering Passive Mode (h1,h2,h3,h4,p1,p2) dove da h1 a h4 è l'ip della rete interna mentre se faccio p1*256+p2 viene fuori il range di porte che ho impostato sul NAS.
Provato su router a: disabilitare firewall -  port forwarding su porta 21 ma in pratica sembra che riesco ad entrare in rete ma non ad uscire Frown

Rispondi

Ok, ricominciamo d'accapo, prova disattivando il Passive Mode sul tuo FTP Server.

Fammi sapere, Giorgio.

Rispondi

Ciao, alla fine ho risolto:
il router aveva un autenticazione wpa/wpa2 mixed con un bridge wpa2 al quale era collegato la NAS.
impostato su entrambi i dispositivi di rete la stessa autenticazione non da ulteriori errori.
Grazie mille dell'aiuto la tua spiegazione sopra era perfetta

Rispondi

Prego, non mi sembra però di aver fatto molto Smile hai fatto tutto da solo, felice comunque di esserti stato utile, alla prossima, Giorgio.

Rispondi

La tua spiegazione è stata fondamentale perchè ho capito come funziona il trasferimento e quindi avevo potuto escludere che il problema derivasse dall'ftp server Smile
Gentilissimo

Rispondi

Sono commosso Smile
e pensare che non volevo neanche scriverlo questo articolo sulla modalità attiva e passiva di FTP, mi fa piacere sapere che viene apprezzato e che sia risultato utile.

Questi sono commenti che gratificano e motivano, spingendomi ad andare avanti col mio blog nonostante il pochissimo tempo a disposizione.

Prego, alla prossima, Giorgio.

Rispondi

Salve.
Volevo sottoporre alla vostra attenzione il mio caso e sperare in un vostro aiuto.
Io ho un registratore streamer che ha un hard disk interno con una memoria che non fa storage, quindi praticamente quando io registro dei flussi audio/video una volta che premo stop questi invia automaticamente tutte le informazioni registrate ad un hard disk di rete o anche un pc tramite protocollo ftp.
Siccome questa è una cosa che non ho mai fatto, prima di azzardarmi a fare ho letto un po di notizie in rete pero credo che un vostro aiuto sia necessario.
Come configuro il pc  che dovra accogliere le informazioni dall apparato?
Uso Filezilla? nel caso come lo configuro e come configuro la parte dei permessi e del firewall qualora dovessi avere problemi ?
Grazie mille anticipatamente
Matteo

Rispondi

Ciao a te Matteo,
beh! di presenza sarebbe tutto più facile, nelle configurazioni di rete intervengono sempre molti fattori che sono difficili da intuire/spiegare tramite un commento. Cercherò cmq di essere utile, andando al sodo del problema.

Secondo me non hai bisogno di una configurazione FTP, non devi trasferire file in remoto, se ho ben capito sei sempre nella tua rete locale, quindi niente FTP. Diversamente ti serve un Filezilla Server FTP o eventualmente configurare IIS come server FTP, ma questa è un'altra storia.

Passiamo al discorso rete, che credo sia quello che fa per te.
Per far dialogare due dispositivi in rete è necessario che questi siano configurati ed abbiano i giusti permessi sia a livello hardware che software, eccoti pertanto un articolo esplicativo di come configurare una piccola rete LAN su sistema Windows:
www.informaticando.net/.../...-LAN-in-Windows.aspx
Avendo adesso un'idea dei vari componenti di una rete locale, devi fare in modo che il registratore streamer invii il flusso dati al PC in rete in una cartella con i giusti permessi.
Ma il registratore non possiede un pannello di gestione dove puoi specificare la "cartella" di destinazione del flusso dati? Se si basterebbe, una volta dati i giusti permessi, indicare la cartella di rete sul PC.

Sò che può sembrar poco quanto ti ho detto, ma penso che sia davvero tutto qui, probabilmente il tuo registratore avrà una scheda di rete con il suo indirizzo IP, basta configurarlo in LAN e fargli inviare i dati al PC. Per quel che riguarda il firewall, basta andare nelle eccezioni e dirgli di non bloccare quel programma e/o quel dispositivo con quel dato indirizzo IP, male che vada puoi disabilitarlo per fare le tue prove e poi riattivarlo e configurarlo quando sarai riuscito nel primo passaggio dell'invio del flusso dati in rete.

Fammi sapere se riesci, eventualmente commenta nuovamente fornendo elementi più precisi, saluti Giorgio.

Rispondi

Ciao Giorgio.
Ho risolto scaricando filezilla server.
Ho creato una cartella condivisa, con tutti i permessi di lettura scrittura e quant'altro.
Ho configurato il recorder in modo tale che punta la cartella specifica sull IP specifico di quel pc e ho fatto.
Sembra funzionare.
Grazie mille per l informazione.
Buona giornata

Rispondi

Benissimo Matteo, sono contento che un nostro scambio di domande e risposte ti abbia portato sulla giusta strada per la risoluzione del tuo problema.

Prego cinquecento Smile , e grazie a te del tuo intervento, sicuramente tornerà utile ad altri. Quando vuoi intervenire nuovamente sai dove trovarmi, saluti Giorgio.

Rispondi

Giuseppe
Giuseppe says:

Buona sera Giorgio!
Provo a postare qui il mio problema nel caso possa aiutarmi.

Ho scaricato filezilla client,ho importato su di esso
un FTP Configuration File (datomi dal mio fornitore di hosting)al fine di collegare il server del mio sito web al mio pc .
Sia nel caso in cui provo a trasferire i file dal sito al pc che nel caso inverso mi compare il seguente messaggio:

"Errore critico: Impossibile collegarsi al server"

Leggendo il suo articolo www.informaticando.net/.../...ttiva-e-Passiva.aspx
ho provato a trasferire i file sia con la modalità attiva che quella passiva.
In entrambi i casi il messaggio di errore è lo stesso.
Non so se i dati che ho fornito sono sufficienti a rendere l'idea nel caso mi dica cos'altro devo indicare e lo farò.

La ringrazio per l'attenzione

Saluti

Giuseppe

Rispondi

Buona Sera a te Giuseppe,
probabilmente il tuo problema di accesso FTP non è dovuto nè alla modalità attiva nè tantomeno a quella passiva.
Molto più semplicemente il suo provider ha abilitato sul suo account/dominio dei filtri FTP; non deve far altro che entrare nell'area riservata o pannello di controllo del suo account/dominio fornitole dal suo provider e tramite la "Gestione dell'accesso FTP" rimuovere gli eventuali filtri.

Mi faccia sapere, saluti Giorgio.

Rispondi

Giuseppe
Giuseppe says:

Ciao Giorgio e grazie per la risposta.

Ho riportato quanto da te detto al fornitore hosting il quale mi ha fatto fare un primo test
"Firewall/Proxy Test" del quale dispongo di uno screenshot ma non so come allegarlo qui,tuttavia secondo loro non è quello il problema (ma se posso mandarti da qualche parte lo screenshot preferirei che tu gli dessi un'occhiata dato che di loro non è che abbia molta fiducia).

Poi mi hanno fatto fare un secondo test "Traceroute" del quale dispongo dei dati che posso inviarti da qualche parte,in pratica avviato il "Tracerout" al secondo passaggio compare :  
2     *        *        *     Richiesta scaduta.

Per loro il problema risiede qui e cioè nella mia connessione!

Cosa ne pensi?
Hai qualche idea su come possa risolvere il problema?

Ti ringrazio molto per l'ascolto e la disponibilità!

Saluti

Giuseppe

Rispondi

Ciao Giuseppe,
prova ad allegare lo screenshot scrivendomi dall'apposita pagina contatti.

Mail server (www.miodominio.it) è raggiungibile con Traceroute?
Sei si, accertati di aver impostato sul client Filezilla la connessione FTP in modo corretto?

Rispondi

Giuseppe
Giuseppe says:

Inviato il messaggio con allegato dalla pagina contatti.

Grazie

Giuseppe

Rispondi

Dall'allegato non si evince nulla.
Fornisci pure il tuo dominio, vediamo se riusciamo a pingarlo.

Rispondi

Giuseppe
Giuseppe says:

Risolto il problema installando direttamente sul browser di mozilla firefox il plugin FireFTp.

Grazie per la disponibilità

Giuseppe

Rispondi

Benissimo Giuseppe,
hai visto che tentando e sperimentando si scoprono e si imparano sempre cose nuove, io ad es. questo plugin FireFtp per FireFox non lo conoscevo, troppo abituato con Filezilla.

Cmq felice che tu abbia risolto, torna pure a commentare quando vuoi, saluti Giorgio.

Rispondi

Giuseppe
Giuseppe says:

Giusto Giorgio!!
Continuerò a seguirti ed eventualmente a commentare dato che sul tuo sito viene trattata la quasi totalità degli argomenti inerenti all'informatica ed al web.
Pertanto sei già nei miei Preferiti.

Saluti

Giuseppe

Rispondi

Magari! Ma quando mai, limitandoci al solo web non basterebbe una vita e neanche due per scrivere tutto quello che c'è da scrivere;
A tal proposito, ricordo che il mio professore d'informatica alle superiori mi diceva sempre che d'informatica ne sapeva una goccia nell'oceano ed era uno di quelli bravi.
Ed è proprio così, l'universo informatico è talmente vasto, ed ogni giorno ci sono sempre cose nuove da scoprire ed imparare, che solo uno stolto potrebbe pensare di conoscerne tale immensità, e quando sento qualcuno vantarsi di saperne un sacco, beh! sono certo di avere di fronte uno che ne sà davvero poco.

Cmq caro Giuseppe, ti ringrazio, e prenderò il tuo come un complimento ed uno sprono a scrivere di più sul mio blog, spesso per mancanza di tempo lo trascuro in merito all'uscita di nuovi articoli.

Io sono sempre qui, sei sempre il benvenuto, Giorgio.

Rispondi

Aggiungi Commento

biuquote
Loading