FTP: attivo vs passivo, riga di comando e browser

1

Ecco uno strano per tutti. Userò AskDifferent perché il mio letto di prova è su un Mac, ma non so se il problema di fondo è specificamente Mac.

Il mio Mac è dietro un muro NAT. Chiamiamo la mia interfaccia L'indirizzo IP è 192.168.10.61. Utilizzando il link , trovo che il mio indirizzo esterno, NAT-cambiato è un'altra cosa. Chiamiamo questo 169.254.101.20.

Visualizzerò ftp anonimo su ftp.example.com. Faccio il collegamento con successo e cambierò con successo le directory:

[ dafydd@testhost ] $ ftp -dt ftp.example.com
Connected to ftp.example.com.
220 "Authorized Use Only"
ftp_login: user '<null>' pass '<null>' host 'ftp.example.com'
Name (ftp.example.com:dafydd): anonymous
---> USER anonymous
331 Guest login ok, send your complete e-mail address as password.
Password: 
---> PASS XXXX
230 Guest login ok, access restrictions apply.
---> SYST
215 UNIX Type: XXXX Version: XXXX
Remote system type is UNIX.
Using binary mode to transfer files.
---> FEAT
500 'FEAT': command not understood.
features[FEAT_FEAT] = 0
features[FEAT_MDTM] = -1
features[FEAT_MLST] = -1
features[FEAT_REST_STREAM] = -1
features[FEAT_SIZE] = -1
features[FEAT_TVFS] = -1
got localcwd as '/Users/dafydd'
---> PWD
257 "/" is current directory.
got remotecwd as '/'
ftp> cd outgoing
---> CWD outgoing
250 CWD command successful.
---> PWD
257 "/outgoing" is current directory.
got remotecwd as '/outgoing'

Tutto bene finora, giusto? Ecco il trasferimento del file:

ftp> get testfile.txt
local: testfile.txt remote: testfile.txt
---> TYPE I
200 Type set to I.
---> SIZE testfile.txt
213 1024000
---> EPSV
229 Extended Passive Mode Entered (|||56257|)
229 Extended Passive Mode Entered (|||56257|)
ftp: Can't connect to '11.12.13.14': Operation timed out
---> EPRT |1|192.168.10.61|58531|
200 PORT command successful.
200 PORT command successful.
---> RETR testfile.txt
150 Opening BINARY mode data connection for testfile.txt (1024000 bytes).
ftp: Poll timeout waiting before accept
421 Service not available, remote server has closed connection.
421 Service not available, remote server has closed connection.
ftp> quit

Quindi, do il comando get . La modalità passiva scade perché il firewall all'estremità non ha mai aperto la porta 56257 per me. La modalità attiva fallisce perché sono dietro un muro NAT . (*) Tutto qui è capito, giusto?

Quindi, come può entrare ftp://ftp.example.com/outgoing/testfile.txt in Firefox con successo dallo stesso host attraverso le stesse connessioni di rete?!

Suppongo che la mia domanda tecnica seria potrebbe essere "Posso / Come vedo cosa sta facendo Firefox sotto le copertine per far funzionare questa connessione?" Firefox è abbastanza luminoso da sostituire l'indirizzo IP NAT nel suo comando EPRT / PORT?

Qualche idea?

(*) Perché il blocco NAT blocca le connessioni attive? Perché ho detto al server ftp di rendere la sua connessione attiva a 192.168.10.61. Non può farlo; qualsiasi percorso che potrebbe avere a quell'indirizzo IP non mi arriverà. Il server FTP deve connettersi a 169.254.101.20. Se la casella NAT alla mia estremità è super intelligente, potrebbe raggiungere il mio pacchetto EPRT e cambiare l'indirizzo IP in 169.254.101.20. (Che solleva ogni sorta di domande scomode sui firewall che modificano i payload dei pacchetti. Yah, non sarà mai soggetto a cracking ...)

    
posta dafydd 01.05.2013 - 00:23
fonte

0 risposte

Leggi altre domande sui tag