Newsgroup: it.comp.reti.locali
Titolo: Problemi FTP, Port Forwarding e router

Di recente a casa ho cambiato lo Zyxel 661HW per un TPlink W8970 (del 
quale non sono soddisfattissimo).
A volte mi capitava di usare un piccolo servizio FTP per trasferire file 
da e verso un pc sempre acceso.
 
Vista la modestia delle mie esigenze ho sempre utilizzato con successo 
il Cerberus FTP Server. Questo finchè oggi per la prima volta da quando 
ho cambiato router ho provato a riconnettermi e non ha funzionato.
 
Questo il log lato client (filezilla):
 
Stato:	Risoluzione dell'indirizzo IP 
xxxxx.dyndns.org
 in corso
Stato:	Connessione a 111.222.333.444:21...
Stato:	Connessione stabilita, in attesa del messaggio di benvenuto...
Risposta:	220-Cerberus FTP Server Personal Edition
Risposta:	220-UNREGISTERED
Comando:	USER PIPPO
Risposta:	331 User xxxxx, password please
Comando:	PASS ********
Risposta:	230 Password Ok, User logged in
Comando:	SYST
Risposta:	215 UNIX Type: L8
Comando:	FEAT
Risposta:	211- Additional features supported include:
Risposta:	 MDTM
Risposta:	 SIZE
Risposta:	 REST STREAM
Risposta:	 AUTH TLS
Risposta:	 AUTH SSL
Risposta:	 PBSZ
Risposta:	 PROT
Risposta:	 LANG EN*
Risposta:	 SITE CHMOD
Risposta:	 SITE PSWD
Risposta:	211 End
Stato:	Connesso
Stato:	Lettura elenco cartelle...
Comando:	PWD
Risposta:	257 "/" is the current directory
Comando:	TYPE I
Risposta:	200 Type Binary
Comando:	PASV
Risposta:	227 Entering Passive Mode (111,222,333,444,4,2)
Comando:	LIST
Errore:	Tempo scaduto per la connessione
Errore:	Non è stato possibile leggere il contenuto della cartella
 
 
Nel lato server dal comando LIST il log riporta:
 
Apr 11 09:35:59  0  LIST
Apr 11 09:37:31  0  Timeout while waiting for connection
Apr 11 09:37:31  0  Unable to accept passive connection
Apr 11 09:37:31  0  425 Unable to open the data connection
Apr 11 09:37:31  0  The connection was closed by the remote socket
Apr 11 09:37:31  0  Connection terminated.
 
 
 
In pratica sta bloccato per un po' sul comando LIST e di li non si muove 
finchè non arriva il timeout.
Il port forwarding sul router è corretto o almeno credo (porta 21/TCP). 
Il problema è lo stesso sia che mi connetto tramite dyndns che 
direttamente all'IP. Altra prova che ho fatto è stato variare la 
connessione da passiva ad attiva ma nada.
 
Idee?

 Errore:	Tempo scaduto per la connessione
 
Il problema è dato dall'IP e dalle porte per la modalità passiva. Il 
PASV impiega la porta 21 per il controllo, mentre i dati sono 
trasferiti su una porta scelta fra un pool disponibile: il server FTP 
deve poter aprire un dato range di porte, generalmente > 1024, che il 
firewall/router deve abilitare; inoltre deve comunicare al client 
l'indirizzo IP pubblico al quale collegarsi.
 
Però in modalità attiva i dati passano sempre dalla porta 20 e non 
dovrebbero esserci difficoltà.
 
Prova anche un altro client, es. CyberDuck; a volte FileZilla è un po' 
legnoso su certe opzioni (es. MLSD).
 
Ciao
Luca
 
 

 legnoso su certe opzioni (es. MLSD).
 
Grazie, proverò!
 

 trasferiti su una porta scelta fra un pool disponibile: il server FTP 
 
Tanto per chiarire; in modalità normale il client invia al server un
comando "PORT" che indica al server su quale porta il client si mette
in ascolto; a quel punto, il server inizia una connessione dalla
propria porta 20 (source port) alla porta specificata dal client che,
di solito è una porta "dinamica"; nella modalità passiva invece, tutte
le connessioni vengono effettuate dal client verso il server; quindi
all'invio del comando "PASV" il server risponde comunicando al client
la porta (dinamica) sulla quale si metterà in ascolto, a questo punto
il client si connette a tale porta per avviare lo scambio dati
 
Quanto sopra significa che sarà necessario configurare quanto segue
 
* Il firewall per accettare connessioni sulla porta 21 ed inoltrarle
  (port forward) all'indirizzo IP del server FTP
 
per FTP passivo
 
* Il server FTP in modo da usare per il PASV un range di porte che sia
  ben definito, ad esempio 5500-6500
 
* Il firewall in modo da permettere il traffico in ingresso sul range
  di porte definito e da fare port-forward verso l'indirizzo IP del
  server FTP
 
per FTP normale
 
* il firewall in modo da permettere il traffico in uscita dal server
  FTP, porta origine 20 a qualsiasi IP su porte dinamiche
 
oltre a quanto sopra sarà opportuno abilitare il logging del firewall e
controllarlo in modo da avere informazioni che permetteranno di
risolvere eventuali problemi.
 

   server FTP
 
Tutto ok, ma in più occorre settare nel server FTP l'IP pubblico che 
verrà passato al client, altrimenti si rischia che il client riceva 
l'istruzione di collegarsi al server... all'IP 192.168.1.2 :-)
 
Ciao
Luca