Discussione:
Filezilla FTP Server dietro un NAT-Firewall con DNS dinamico
(troppo vecchio per rispondere)
pozz
2006-02-26 16:59:11 UTC
Permalink
Voglio metter su un server FTP. Ho un router-modem ADSL configurato
per inoltrare le connessioni alla porta 21 verso il mio PC. Ho anche
aperto questa porta (WAN to LAN) nel firewall del router.
Mi sono registrato a DynDNS e tutto va bene... con www.web2ftp.com
riesco a collegarmi correttamente.

Ora volevo provare a configurare ed usare il server in modalità
passiva. Ho inserito, come indirizzo IP da usare in modalità passiva,
il nome dell'host scelto in DynDNS. Poi ho scelto un range di porte
da usare in modalità passiva (65000-65100). Ho aperto queste porte
sul firewall del router e ho abilitato queste porte nel NAT del
router.

Mi sembra di aver fatto tutto correttamente ma non funziona ancora
una cosa. Apro un client FTP proprio sul PC dove è attivo il server.
Mi collego al server FTP usando il nome DynDNS e vedo che il collegamento
sembra andare bene. Il client manda il comando PASV per il passaggio
alla modalità passiva e sembra funzionare ancora bene.
Il successivo comando LIST non va bene... c'è il famigerato errore
"425 Can't open data connection."


Mi sembra di capire che questo errore si ha quando non è possibile
stabilire una connessione tra il client ed il server sulle porte
usate per la modalità passiva. Ma mi sembra di averle aperte tutte,
tant'è che windump mi vede tutti i pacchetti nel range 65000-65100.
Questo vuol dire che non vengono filtrati da alcuno, ma lo stesso
non funziona.

Mi sapete dire che altro fare?
blackshard
2006-02-26 19:08:41 UTC
Permalink
Post by pozz
Mi sembra di aver fatto tutto correttamente ma non funziona ancora
una cosa. Apro un client FTP proprio sul PC dove è attivo il server.
Mi collego al server FTP usando il nome DynDNS e vedo che il collegamento
sembra andare bene. Il client manda il comando PASV per il passaggio
alla modalità passiva e sembra funzionare ancora bene.
Il successivo comando LIST non va bene... c'è il famigerato errore
"425 Can't open data connection."
Un consiglio che spero tu abbia già applicato è quello di entrare in
filezilla server, andare su Settings -> Passive Mode Settings e usare
l'opzione "Retrieve external ip address from", che recupera il tuo
indirizzo dall'esterno della tua lan, altrimenti il server istruisce il
comando pasv con l'indirizzo nella rete locale del tuo server, e
ovviamente ciò rende inutilizzabile la modalità passiva.

Dopo aver fatto questo la modalità passiva dovrebbe andare anche dal tuo
stesso host.

Ad ogni modo per essere sicuro al 100% devi fare le prove dall'esterno,
perché una cosa che funziona in locale non è detto vada bene in remoto,
e viceversa.

Un altro consiglio: se il tuo server ftp sarà un ftp a cui accedi solo
tu e pochi altri intimi, è meglio che cambi la porta con qualcosa di
meno "vistoso", ti risparmierai molti attacchi!
pozz
2006-02-26 22:27:52 UTC
Permalink
Post by blackshard
Un consiglio che spero tu abbia già applicato è quello di entrare in
filezilla server, andare su Settings -> Passive Mode Settings e usare
l'opzione "Retrieve external ip address from", che recupera il tuo
indirizzo dall'esterno della tua lan, altrimenti il server istruisce il
comando pasv con l'indirizzo nella rete locale del tuo server, e
ovviamente ciò rende inutilizzabile la modalità passiva.
Già fatto, anche se ho inserito il nome del mio host così come da DynDNS.
Ho visto che il server correttamente comunica al client, subito dopo il
comando PASV, il suo indirizzo IP. Non è questo il problema.
Post by blackshard
Dopo aver fatto questo la modalità passiva dovrebbe andare anche dal tuo
stesso host.
Eppure non va :(
Post by blackshard
Ad ogni modo per essere sicuro al 100% devi fare le prove dall'esterno,
perché una cosa che funziona in locale non è detto vada bene in remoto,
e viceversa.
Questo lo so... ma se non va neanche in locale...
Post by blackshard
Un altro consiglio: se il tuo server ftp sarà un ftp a cui accedi solo
tu e pochi altri intimi, è meglio che cambi la porta con qualcosa di
meno "vistoso", ti risparmierai molti attacchi!
Già fatto... avevo anche intenzione di usare SSL.
blackshard
2006-02-26 23:50:58 UTC
Permalink
Post by pozz
Post by blackshard
Un consiglio che spero tu abbia già applicato è quello di entrare in
filezilla server, andare su Settings -> Passive Mode Settings e usare
l'opzione "Retrieve external ip address from", che recupera il tuo
indirizzo dall'esterno della tua lan, altrimenti il server istruisce
il comando pasv con l'indirizzo nella rete locale del tuo server, e
ovviamente ciò rende inutilizzabile la modalità passiva.
Già fatto, anche se ho inserito il nome del mio host così come da DynDNS.
Ho visto che il server correttamente comunica al client, subito dopo il
comando PASV, il suo indirizzo IP. Non è questo il problema.
Post by blackshard
Dopo aver fatto questo la modalità passiva dovrebbe andare anche dal
tuo stesso host.
Eppure non va :(
Post by blackshard
Ad ogni modo per essere sicuro al 100% devi fare le prove
dall'esterno, perché una cosa che funziona in locale non è detto vada
bene in remoto, e viceversa.
Questo lo so... ma se non va neanche in locale...
Non è detto che non vada in remoto. Provare per credere. Se mi collego
da una macchina della lan (non il server stesso) e provo ad avviare una
comunicazione in modalità passiva non mi va'. Ma se accedo dall'esterno
tutto ok.

Mi scoccio di andare a trovare il motivo preciso per cui ho questo
comportamento, ma quando ci sono i protocolli di rete in mezzo è dura
trovare la soluzione (se c'è!)
pozz
2006-02-27 18:31:18 UTC
Permalink
Post by blackshard
Non è detto che non vada in remoto. Provare per credere. Se mi collego
da una macchina della lan (non il server stesso) e provo ad avviare una
comunicazione in modalità passiva non mi va'. Ma se accedo dall'esterno
tutto ok.
Mi scoccio di andare a trovare il motivo preciso per cui ho questo
comportamento, ma quando ci sono i protocolli di rete in mezzo è dura
trovare la soluzione (se c'è!)
Boh, la cosa diventa interessante. Perché non dovrebbe andare?
Purtroppo mi è difficile fare questo test da remoto poiché non ho
una doppia connessione ad Internet.

Sai se esiste qualche sito web che gestisce un collegamento FTP in
modalità passiva? www.web2ftp.com lo fa solo in modalità attiva.

In alternativa qualche terminale free di un Linux su cui gira un
ftp-client già configurato per la modalità passiva.
ObiWan
2006-02-27 11:46:11 UTC
Permalink
Post by pozz
Apro un client FTP proprio sul PC dove è attivo il server.
Mi collego al server FTP usando il nome DynDNS e
vedo che il collegamento sembra andare bene.
<snip>

Occhio, se il client FTP è connesso alla rete LAN .. sarà difficile
riuscire a far funzionare il tutto, connetti il client ad internet usando
una diversa connessione e *SENZA* connetterlo in LAN e ritenta

Inoltre, per il momento EVITA di usare per il server FTP una porta
"non standard" e lascialo sulla 21 dato che cambiando la porta
potresti avere problemi con alcuni nat/firewall

Ciao
pozz
2006-02-27 18:29:28 UTC
Permalink
Post by ObiWan
Post by pozz
Apro un client FTP proprio sul PC dove è attivo il server.
Mi collego al server FTP usando il nome DynDNS e
vedo che il collegamento sembra andare bene.
<snip>
Occhio, se il client FTP è connesso alla rete LAN .. sarà difficile
riuscire a far funzionare il tutto, connetti il client ad internet usando
una diversa connessione e *SENZA* connetterlo in LAN e ritenta
Perchè mai un client sulla LAN non può collegarsi al server che si
trova sulla stessa LAN? Comunque sono lo stesso PC ;)
Purtroppo non posso avere due PC e due connessioni ad Internet diverse
contemporaneamente.

Non esiste qualche sito web che gestisce server FTP in modalità passiva
così che possa testare il mio server da remoto?
www.web2ftp.com si collega al server solo ed esclusivamente in modalità
attiva... e funziona.
Post by ObiWan
Inoltre, per il momento EVITA di usare per il server FTP una porta
"non standard" e lascialo sulla 21 dato che cambiando la porta
potresti avere problemi con alcuni nat/firewall
OK, porta 21 con gli stessi problemi :(
ObiWan
2006-02-28 09:17:26 UTC
Permalink
Post by pozz
Perchè mai un client sulla LAN non può collegarsi al server che si
trova sulla stessa LAN? Comunque sono lo stesso PC ;)
Semplice; tu richiedi una connessione ftp al server xyz.dyndns,org
(come da te scritto); tale nome viene risolto con l'indirizzo pubblico
del tuo router (es. 151.49.114.177) a questo punto il client FTP chiede
al router di .. connettersi a se stesso, in questo caso nella maggioranza
dei casi la connessione NON funziona proprio oppure si verificano
alcuni problemi (come ad esempio quello da te riscontrato); se invece
provassi la stessa operazione connetendoti tramite FTP all'indirizzo
LAN del server; il tutto dovrebbe funzionare

ripeto, l'unico modo di provare se il tuo FTP funziona veramente è quello
di chiedere ad un tuo amico di connettersi al tuo server dall'esterno

Ciao
pozz
2006-02-28 19:37:04 UTC
Permalink
Post by ObiWan
Post by pozz
Perchè mai un client sulla LAN non può collegarsi al server che si
trova sulla stessa LAN? Comunque sono lo stesso PC ;)
Semplice; tu richiedi una connessione ftp al server xyz.dyndns,org
(come da te scritto); tale nome viene risolto con l'indirizzo pubblico
del tuo router (es. 151.49.114.177) a questo punto il client FTP chiede
al router di .. connettersi a se stesso, in questo caso nella maggioranza
dei casi la connessione NON funziona proprio oppure si verificano
alcuni problemi (come ad esempio quello da te riscontrato); se invece
provassi la stessa operazione connetendoti tramite FTP all'indirizzo
LAN del server; il tutto dovrebbe funzionare
Effettivamente ho provato dall'esterno e... FUNZIONA!!!
Voglio ragionare su questo discorso, però.
Il client della LAN 192.168.1.33 contatta il server 115.10.10.10 (indirizzo
IP del router della LAN dietro cui si trova il client e il server).
Al router arriva un pacchetto dalla LAN per un indirizzo Internet che,
guarda caso, è proprio quello della sua interfaccia Internet (ADSL).
A questo punto che fa? Il pacchetto dovrebbe essere processato dal
NAT che cambia l'indirizzo IP sorgente (192.168.1.33) con il suo
(115.10.10.10), riassegnando probabilmente la porta sorgente (è la
funzionalità del NAT). Questo pacchetto è diretto a sè stesso, quindi
dovrebbe essere di nuovo elaborato dal NAT ma al contrario, come
pacchetto WAN-to-LAN. Siccome ho configurato il NAT in modo che tutti
i pacchetti in entrata siano inoltrati a 192.168.1.33, dovrebbe
mandarli proprio lì, cioè al computer dove risiede il server (che è
sempre quello del client). E il tutto dovrebbe funzionare.
Se non funziona è perchè ha qualche problema il router che non gestisce
correttamente questa possibilità: pacchetto LAN-to-WAN diretto all'indirizzo
"WAN" del router stesso.

Ho notato che, inserendo http://115.10.10.10 (è solo un esempio) il
router risponde correttamente con la pagina web di configurazione,
così come se facessi http://192.168.1.1 (indirizzo LAN del router).
Perché questo funziona? Perchè non c'è il secondo NAT che interviene?

Altra domanda. Quando mi collego da client a server sullo stesso PC dietro
il router, vedo che la connessione di controllo (porta 21) avviene
correttamente, tant'è che i due host si scambiano i vari messaggi.
Il tutto si blocca proprio quando il client deve instaurare la connessione
dati. Perché mai?

Il router è uno Zyxel Prestige 660HW.
Post by ObiWan
ripeto, l'unico modo di provare se il tuo FTP funziona veramente è quello
di chiedere ad un tuo amico di connettersi al tuo server dall'esterno
Per fortuna ho trovato un sito che gestisce l'FTP tramite HTTP anche in
modalità passiva: http://www.net2ftp.com
Renaissance
2006-03-04 09:32:08 UTC
Permalink
Post by pozz
Se non funziona è perchè ha qualche problema il router che non gestisce
correttamente questa possibilità: pacchetto LAN-to-WAN diretto
all'indirizzo "WAN" del router stesso.
E' un problema noto, che si risolve se il router supporta il
"nat loopback".
Post by pozz
Il tutto si blocca proprio quando il client deve instaurare la connessione
dati. Perché mai?
Il router è uno Zyxel Prestige 660HW.
Prova ad aprire anche la 20 (se e' ftp in modalita' attiva).

bye G.L.
ObiWan
2006-03-06 07:55:15 UTC
Permalink
Post by Renaissance
Post by pozz
Se non funziona è perchè ha qualche problema il router che non
gestisce correttamente questa possibilità: pacchetto LAN-to-WAN
diretto all'indirizzo "WAN" del router stesso.
E' un problema noto, che si risolve se il router supporta il
"nat loopback".
cosa della quale dubito, visti i problemi (e che di solito nei
routers SoHo non è implementata)
Post by Renaissance
Post by pozz
Il tutto si blocca proprio quando il client deve instaurare la
connessione dati. Perché mai?
Il router è uno Zyxel Prestige 660HW.
Prova ad aprire anche la 20 (se e' ftp in modalita' attiva).
Ho paura che anche così non si risolva il problema, credo
che il tutto si "incastri" a causa di un comando "PORT" che
contiene un "IP errato", l'ideale sarebbe avere il dump (log)
di una sessione sia dal lato client che da quello server

Detto questo, la cosa più semplice da fare potrebbe essere
quella di usare un DNS sulla LAN (o modificare il file hosts)
"mappando" il nome del server FTP all'indirizzo IP "LAN" in
questo modo, dalla LAN i clients utilizzerebbero l'indirizzo
IP interno mentre da internet verrebbe utilizzato l'indirizzo IP
pubblico risolvendo così il problema

Ciao
--
* ObiWan

Microsoft MVP: Windows Server - Networking
http://www.microsoft.com/communities/MVP/MVP.mspx
http://italy.mvps.org

DNS "fail-safe" for Windows 2000 and 9X clients.
http://www.treewalkdns.com

Support and discussions forums/groups
http://forums.treewalkdns.com
news://news.treewalkdns.com

408 XP/2000 tweaks and tips
http://www.treewalkdns.com/tq/index.htm
Loading...