il problema principale risiede con FTP in modalità attiva che di solito è quella usata di default.

Il canale dati in questo caso prevede che il client si metta in ascolto su una determinata porta e che il server lo contatti. Il client indica al server indirizzo e porta tramite il comando PORT. Ovviamente il client conosce solo il proprio indirizzo privato in lan e non quello pubblico. Nel comando PORT viene quindi indicato l'ip privato.

Il processo di PAT/NAT sul router in genere agisce solo sugli indirizzi/porte presenti negli header dei pacchetti TCP e non agisce sul Payload. Il comando PORT mandato da client sta nel payload. Al server quindi arriverà un comando port con l'ip privato del client nella LAN invece che quello pubblico. Da qui capisci che il server mai si potrà connettere al client in quanto quell'ip non esiste su internet.

In modalità PASSIVA invece è il server che aspetta una connessione e manda un comando PORT al client. Sarà poi il client a collegarsi e non viceversa. Questa modalità serve a risolvere il problema precedente.