Come configurare smartphone e PC. Portale informativo

Modalità FTP attiva e passiva. Server FTP FileZilla per reti domestiche o di piccoli uffici

FTP (File Transfer Protocol) è uno dei protocolli di trasferimento dati più arcaici. È stato creato prima di HTTP oltre 40 anni fa. Tuttavia, la tecnologia "FTP client-server" e "server-server", di facile utilizzo e non necessita di particolare manutenzione, funge comunque da mezzo affidabile per sistematizzare la gestione interna dei documenti, creando archivi multiutente nelle reti aziendali locali e la distribuzione gratuita di software, multimedia, documenti e materiali sul World Wide Web.

Il server FTP può essere distribuito su qualsiasi dispositivo di rete con un array di dischi per archiviare grandi quantità di informazioni o su un normale computer. Quando ci si connette al server, vengono scambiati i comandi di controllo, durante i quali l'autorizzazione (se fornita), vengono assegnate le porte, vengono definite le regole di scambio e quindi viene stabilita una connessione dati. Lasciamo da parte i fondamenti teorici dell'interazione tra il server e il computer locale tramite il protocollo FTP. Questo processo viene eseguito in una delle due modalità attiva e passiva. Quali sono le loro differenze? In modalità attiva, il client invia richieste di connessione al server e la connessione viene stabilita dal server. In modalità passiva, sia i comandi di controllo che la connessione dati vengono avviati solo dal client.

La modalità passiva è necessaria quando il computer client si trova in una rete locale protetta. La maggior parte dei browser supporta il protocollo FTP e consente di connettersi, visualizzare e copiare dati da server remoti. Ad esempio, in Internet Explorer, è possibile specificare l'“indirizzo IP del server” nella barra degli indirizzi ftp:// o trovare collegamenti agli archivi di file più popolari utilizzando FileSearch. Nella scheda / "Opzioni Internet / Avanzate" / puoi abilitare l'uso della modalità FTP passiva.

Non sono richieste impostazioni speciali nel browser Mozilla Firefox. "Total Commander" e "Far" hanno un client FTP integrato. Qui, quando si crea una nuova connessione, è necessario specificare inoltre un login e una password. Per i server aperti, l'accesso predefinito è "anonimo" e la password è l'indirizzo della tua casella di posta.

Tutti i "downloader" conosciuti da FlashGet (modalità passiva per impostazione predefinita) a ReGet Deluxe (modalità attiva per impostazione predefinita) dispongono di un sistema per il rilevamento automatico degli scenari di connessione e download e sono inoltre dotati di vari acceleratori aggiuntivi per accelerare il processo di download. È possibile abilitare o disabilitare la modalità passiva, di norma, quando si crea una nuova connessione nelle schede FTP.

Per i client che lavorano in modalità di condivisione file costantemente o abbastanza spesso, è necessario installare un gestore FTP. È un programma delle serie FileZilla, CuteFTP, SmartFTP, FTP Voyager, ecc. , che può essere trovato anche nel pubblico dominio su Internet. Questi programmi consentono di ottimizzare la connessione a un server FTP remoto. Sono indispensabili nei casi di lavoro con server che funzionano solo in “modalità attiva”, perché anche se il client non ha un indirizzo IP statico, il programma può emularlo per tutta la durata della sessione.

Tra gli utenti di lingua russa, il programma open source gratuito più popolare è FileZilla. Questo programma è facile da installare, ha una chiara interfaccia russa. È possibile utilizzare diverse opzioni per configurare le connessioni. Impostazioni generali - Menu / Modifica / Impostazioni /. vengono eseguiti in una forma ad albero e influenzano le impostazioni di tutti i moduli disponibili. Nella stessa sezione del menu è possibile passare alla procedura guidata per la creazione della connessione, dove i parametri di connessione verranno proposti passo dopo passo nella scelta della modalità attiva o passiva. Alcuni server FTP offrono il download di piccoli file di script di connessione che è possibile importare nel programma e creare una connessione permanente già pronta.

E infine, tra i comandi della console del sistema operativo Windows, è supportato il comando ftp.exe, che prevede la possibilità di connettersi "manualmente" al server FTP inserendo comandi della console (il protocollo supporta 25 comandi). L'uso e la sintassi di input di questi comandi devono essere ben noti e compresi, ma richiederanno alcune abilità ed esperienza di programmazione.

3 risposte

Attiva e passiva sono le due modalità attraverso le quali FTP può operare. FTP utilizza due canali tra il client e il server, il canale dei comandi e il canale dei dati, che in realtà sono connessioni TCP separate. Il canale dei comandi è per i comandi e le risposte, il canale dei dati è per il trasferimento file effettivo. Questo è un ottimo modo per inviare comandi al server senza attendere il completamento del trasferimento in corso.

In modalità attiva, il client stabilisce un canale di comando (dalla porta client X alla porta del server 21(b)), ma il server stabilisce un canale dati (dalla porta del server 20(b) alla porta client Y, dove Y è stato fornito dal cliente).

In modalità passiva, il client configura entrambi i canali. In questo caso, il server dice al client quale porta deve essere utilizzata per il collegamento dati.

La modalità passiva viene in genere utilizzata in situazioni in cui il server FTP non è in grado di stabilire un canale dati. Uno dei motivi principali sono i firewall di rete. Sebbene tu possa avere una regola del firewall che ti consente di aprire canali FTP su ftp.microsoft.com , i server Microsoft potrebbero non essere in grado di aprire un canale dati attraverso il firewall.

La modalità passiva risolve questo problema aprendo entrambi i tipi di canale dal lato client. Per renderlo più chiaro in modo affidabile:

Modalità attiva:

  • Il client invia PORT 2001 (a) al server e il server conferma sul canale di comando.
  • Il server apre un canale dati dalla porta del server 20 (b) alla porta client 2001 (a).
  • Il client riconosce il canale dati.

Modalità passiva:

  • Il client apre un canale di comando dalla porta client 2000 (a) alla porta server 21 (b) .
  • Il client invia PASV al server in un canale di comando.
  • Il server rimanda (sul canale di comando) PORT 1234 (a) dopo che ha iniziato l'ascolto su quella porta.
  • Il client apre un canale dati dal client 2001 (a) alla porta del server 1234 (a) .
  • Il server riconosce il canale dati.

A questo punto i comandi e i canali dati sono aperti.

(a) Si noti che la selezione della porta lato client dipende dal client, poiché la selezione della porta del collegamento dati del server in modalità passiva è specifica del server.

(b) Inoltre, va notato che l'uso delle porte 20 e 21 è solo condizionale (sebbene forte). Non vi è alcun requisito assoluto per l'utilizzo di queste porte, sebbene il client e il server dovrebbero aver concordato quali porte utilizzare. Ho visto implementazioni che cercano di nascondersi dai client utilizzando porte diverse (inutile secondo me).

Di recente mi sono imbattuto in questo problema sul posto di lavoro, quindi credo di dover dire qualcosa di più qui. Userò un'immagine per spiegare come funziona FTP come fonte aggiuntiva per una risposta precedente.

Modalità attiva:

Modalità passiva:

In una configurazione in modalità attiva, il server proverà a connettersi a una porta client casuale. Molto probabilmente, questa porta non sarebbe una di quelle porte predefinite. Di conseguenza, un tentativo di connessione ad esso verrà bloccato dal firewall e la connessione non verrà stabilita.

La configurazione passiva non avrà questo problema, poiché il client sarà l'iniziatore della connessione. Naturalmente, il lato server può anche avere un firewall. Tuttavia, poiché si prevede che il server riceva più richieste di connessione rispetto al client, sarebbe logico che l'amministratore del server si adatti alla situazione e apra la selezione delle porte per adattarsi alle configurazioni in modalità passiva.

Quindi, sarebbe meglio configurare il server per supportare FTP in modalità passiva. Tuttavia, la modalità passiva lascerà il tuo sistema vulnerabile agli attacchi perché i client devono connettersi a server casuali. Quindi, per supportare questa modalità, non solo il tuo server deve avere più porte disponibili, ma anche il tuo firewall deve consentire connessioni a tutte quelle porte!

Per mitigare i rischi, una buona soluzione sarebbe specificare un intervallo di porte sul server e quindi consentire solo quell'intervallo di porte sul firewall.

Per ulteriori informazioni, consultare il documento ufficiale.

Una versione ridotta del mio articolo Modalità di connessione FTP (attiva e passiva):

La modalità di connessione FTP (attiva o passiva) determina come viene stabilita la connessione dati. In entrambi i casi, il client crea una connessione di controllo TCP alla porta 21 del server FTP. Questa è una connessione in uscita standard, proprio come con qualsiasi altro protocollo di trasferimento file (SFTP, SCP, WebDAV) o qualsiasi altra applicazione client TCP (come un browser web). Pertanto, quando si apre una connessione di controllo, di solito non ci sono problemi.

Se il protocollo FTP è più complesso rispetto ad altri protocolli di trasferimento file, è il trasferimento di file. Mentre altri protocolli utilizzano la stessa connessione per la gestione delle sessioni e i trasferimenti di file (dati), il protocollo FTP utilizza una connessione separata per i trasferimenti di file e directory.

In modalità attiva, il client inizia ad ascoltare su una porta casuale le connessioni dati in entrata dal server (il client invia un comando FTP PORT per dire al server su quale porta è in ascolto). Attualmente, è tipico che il client si trovi dietro un firewall (come il firewall integrato di Windows) o un router NAT (come un modem ADSL) che non è in grado di accettare connessioni TCP in entrata.

Per questo motivo è stata introdotta la modalità passiva ed è attualmente maggiormente utilizzata. L'utilizzo della modalità passiva è preferibile perché la maggior parte della configurazione complessa viene eseguita solo una volta sul lato server da un amministratore esperto e non individualmente sul lato client da utenti (forse) inesperti.

In modalità passiva, il client utilizza la connessione di controllo per inviare un comando PASV al server e quindi ottiene l'indirizzo IP del server e il numero di porta del server dal server, che il client utilizza quindi per aprire una connessione dati con l'indirizzo IP del server e il server numero di porta.

Configurazione di rete per modalità passiva

In modalità passiva, la maggior parte del carico di configurazione è sul lato server. L'amministratore del server deve configurare il server come descritto di seguito.

Il firewall e il NAT lato server FTP devono essere configurati non solo per consentire/instradare le connessioni in entrata alla porta FTP 21, ma anche a un certo numero di porte per le connessioni dati in entrata. In genere, il software del server FTP ha un'opzione di configurazione per impostare l'intervallo di porte che verranno utilizzate dal server. E lo stesso intervallo deve essere aperto/instradato sul firewall/NAT.

Quando un server FTP è dietro un NAT, deve conoscere il suo indirizzo IP esterno in modo da poterlo fornire al client in risposta al comando PASV.

Configurazione di rete per la modalità attiva

In modalità attiva, la maggior parte del carico di configurazione è sul lato client.

Il firewall (ad es. Windows Firewall) e NAT (ad es. regole di routing del modem ADSL) sul lato client devono essere configurati per consentire/instradare l'intervallo di porte per le connessioni dati in ingresso. Per aprire le porte in Windows, vai su Pannello di controllo > Sistema e sicurezza > Windows Firewall > Impostazioni avanzate > Regole in entrata > Nuova regola. Per il port routing su NAT (se presente), fare riferimento alla relativa documentazione.

Quando NAT è sulla tua rete, il client FTP deve conoscere il suo indirizzo IP esterno, che WinSCP deve fornire al server FTP usando il comando PORT. In modo che il server possa connettersi correttamente al client per aprire una connessione dati. Alcuni client FTP possono determinare automaticamente l'indirizzo IP esterno, alcuni di essi devono essere configurati manualmente.

Smart Firewall/NAT

Alcuni firewall/NAT tentano di aprire/chiudere automaticamente le porte dati controllando la connessione FTP e/o convertendo gli indirizzi IP della connessione dati nel traffico di connessione di controllo.

Con un tale firewall/NAT, la configurazione di cui sopra non è richiesta per il semplice FTP non crittografato. Ma questo non può funzionare con FTPS perché il traffico della connessione di controllo è crittografato e il firewall/NAT non può ispezionarlo o modificarlo.

Quando si lavora tramite il protocollo FTP, vengono stabilite due connessioni tra il client e il server: una connessione di controllo (i comandi passano attraverso di essa) e una connessione dati (i file vengono trasferiti attraverso di essa).
La connessione di controllo è la stessa per Attivo e Passivo modalità. Il client avvia una connessione TCP da una porta dinamica (1024-65535) alla porta numero 21 sul server FTP e dice "Ciao! Voglio entrare in contatto con te. Ecco il mio nome e la mia password". Ulteriori azioni dipendono dalla modalità FTP (Attiva o Passiva) selezionata.

In modalità attiva quando il cliente dice "Ciao!" comunica inoltre al server un numero di porta (dall'intervallo dinamico 1024-65535) in modo che il server possa connettersi al client per stabilire una connessione dati. Il server FTP si connette al numero di porta del client specificato utilizzando il numero di porta TCP 20 per il trasferimento dei dati.

In modalità passiva, dopo che il client dice "Hello!", il server comunica al client il numero di porta TCP (dall'intervallo dinamico 1024-65535) a cui può connettersi per stabilire una connessione dati.

Differenza principale tra la modalità FTP attiva e la modalità FTP passiva è la parte che apre la connessione dati. In modalità attiva, il client deve accettare una connessione dal server FTP. In modalità passiva, il client avvia sempre una connessione.

Comandi di base

ABOR - Interrompe il trasferimento di file
CDUP - Cambia la directory in padre.
CWD - Cambia directory.
DELE - Elimina file (nome file DELE).
EPSV - Entra in modalità passiva estesa. Usato al posto del PASV.
AIUTO - Visualizza un elenco di comandi accettati dal server.
LIST - Restituisce un elenco di file in una directory. L'elenco viene trasmesso tramite la connessione dati.
MDTM - Restituisce l'ora di modifica di un file.
MKD - Crea directory.
NLST - Restituisce un elenco di file in una directory in un formato più breve di LIST. L'elenco viene trasmesso tramite la connessione dati.
NOOP - Operazione nulla
PASV - Entra in modalità passiva. Il server restituirà l'indirizzo e la porta a cui è necessario connettersi per ottenere i dati. La trasmissione inizierà quando vengono immessi i seguenti comandi: RETR, LIST, ecc.
PORTO - Entra in modalità attiva. Ad esempio PORTA 12,34,45,56,78,89. A differenza della modalità passiva per il trasferimento dei dati, il server stesso si connette al client.
PWD - Restituisce la directory corrente.
ESCI - Disconnetti
REIN - Reinizializza la connessione
RETR - Scarica il file. RETR deve essere preceduto da un comando PASV o PORT.
RMD - Elimina directory
RNFR e RNTO - Rinomina file. RNFR - cosa rinominare, RNTO - cosa.
DIMENSIONE - Restituisce la dimensione del file
STOR - Carica un file. STOR deve essere preceduto da un comando PASV o PORT.
SYST - Restituisce il tipo di sistema (UNIX, WIN, ...)
TIPO - Imposta il tipo di trasferimento file (binario, testo)
USER - Nome utente per accedere al server

Elenco completo dei codici di risposta del server FTP

100 L'azione richiesta è stata avviata, attendere la risposta successiva prima di emettere un nuovo comando.
110 Commento
120La funzione sarà implementata tra nnn minuti
125Canale aperto, comunicazione avviata
150Lo stato del file è corretto, si prepara ad aprire un canale
200Il comando è corretto
202Comando non supportato
211Stato del sistema o risposta a una query
212Stato della directory
213Stato del file
214 Messaggio esplicativo di aiuto
215 Visualizzato insieme alle informazioni di sistema sul comando SYST
220Servizio pronto per nuovo utente.
221 Terminato con successo con uscita
225Canale formato ma nessuna comunicazione
226Canale chiuso, scambio completato con successo
227Modalità passiva (h1,h2,h3,h4,p1,p2).
228transizione alla modalità passiva lunga (indirizzo lungo, porta).
229Passaggio alla modalità passiva estesa (|||porta|).
230Utente identificato, continua
231Sessione utente terminata; Servizio terminato.
232Comando di fine sessione accettato e terminerà al termine del trasferimento del file.
250Richiesta completata con successo
257 Viene creato il "PERCORSO".
331Nome utente corretto, password richiesta
332Autenticazione richiesta per accedere
350L'azione richiesta sul file richiede maggiori informazioni
404Questo server remoto non è stato trovato
421Procedura non possibile, il canale si sta chiudendo
425 Non è possibile aprire un canale di informazioni
426Canale chiuso, scambio interrotto
434L'host richiesto non è disponibile
450La funzione richiesta non è stata implementata, il file non è disponibile, ad esempio è occupato
451Errore locale, operazione interrotta
452Errore durante la scrittura del file (spazio insufficiente)
500Errore di sintassi, il comando non può essere interpretato (probabilmente troppo lungo)
501Errore di sintassi (parametro o argomento errato)
502Comando non utilizzato (tipo MODE illegale)
503 Sequenza di comando non riuscita
504 Comando non applicabile per questo parametro
530Accesso fallito! Autorizzazione richiesta (non loggato)
532Autenticazione richiesta per ricordare il file
550Funzione richiesta non implementata, file non disponibile, ad esempio non trovato
551 L'operazione richiesta è stata interrotta. Tipo di pagina sconosciuto.
552 L'operazione richiesta è stata interrotta. Memoria allocata insufficiente
553 L'operazione richiesta non è stata accolta. Nome del file non valido.

Articoli correlati in alto