La conexión FTPS con Fritzbox NAS falla, ¿debido a un cambio de puerto EPSV/PAS?

La conexión FTPS con Fritzbox NAS falla, ¿debido a un cambio de puerto EPSV/PAS?

Utilizo mi FRITZ!Box 3490 con un disco duro USB conectado como servidor NAS. He configurado un determinado puerto (32753) para la comunicación FTP. Para garantizar un nombre de servidor estático (u**********u.myfritz.net), activé y configuré myFritz.

El acceso al NAS funciona bien cuando accedo desde mi computadora portátil (no conectada localmente) a través de WinSCP.

Pero cuando intento acceder al NAS a través del servidor remoto de mi espacio web, la conexión falla después del comando EPSV o PAS.

Aquí está la terminal:

$ curl -v --ftp-pasv --ssl -k -u speedITBackup 'ftp://u**********u.myfritz.net:32753/Backup/Superfein/'
Enter host password for user 'speedITBackup':
*   Trying 92.218.125.113...
* TCP_NODELAY set
* Connected to u**********u.myfritz.net (92.218.125.113) port 32753 (#0)
< 220 FRITZ!Box3490 FTP server ready.
> AUTH SSL
< 501 Use AUTH TLS for secure control connection.
> AUTH TLS
< 234 Authentication method accepted
* successfully set certificate verify locations:
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, [no content] (0):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, [no content] (0):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, [no content] (0):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, [no content] (0):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, [no content] (0):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* Server certificate:
*  subject: CN=u************u.myfritz.net
*  start date: Dec  9 12:27:41 2022 GMT
*  expire date: Jan 15 12:27:41 2038 GMT
*  issuer: CN=u**********u.myfritz.net
*  SSL certificate verify result: self signed certificate (18), continuing anyway.
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> USER speedITBackup
* TLSv1.3 (IN), TLS handshake, [no content] (0):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, [no content] (0):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 331 Password required for speedITBackup.
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> PASS **************
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 230 User speedITBackup logged in.
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> PBSZ 0
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 200 ok
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> PROT P
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 200 Data channel will be secured
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> PWD
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 257 "/" is current directory.
* Entry path is '/'
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> CWD Backup
* ftp_perform ends with SECONDARY: 0
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 250 CWD command successful.
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> CWD Superfein
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 250 CWD command successful.
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> EPSV
* Connect data stream passively
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 229 Entering Extended Passive Mode (|||60770|)
*   Trying 92.218.125.113...
* TCP_NODELAY set
* Connecting to 92.218.125.113 (92.218.125.113) port 60770
* connect to 92.218.125.113 port 32753 failed: Connection refused
* Failed to connect to u***********u.myfritz.net port 32753: Connection refused
* Failed EPSV attempt. Disabling EPSV
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> PASV
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 227 Entering Passive Mode (92,218,125,113,230,160)
* Skip 92.218.125.113 for data connection, re-use u************u.myfritz.net instead
*   Trying 92.218.125.113...
* TCP_NODELAY set
*** Connecting to 92.218.125.113 (92.218.125.113) port 59040**
* connect to 92.218.125.113 port 32753 failed: Connection refused
* Failed to connect to u**************u.myfritz.net port 32753: Connection refused
* Closing connection 0
* TLSv1.3 (OUT), TLS alert, [no content] (0):
* TLSv1.3 (OUT), TLS alert, close notify (256):
curl: (7) Failed to connect to upfamnsqwzodew4u.myfritz.net Port 32753: Connection refused

No estoy seguro de lo que sucede aquí: con los comandos EPSV y PAS, el FRITZ!Box parece enviar un puerto nuevo (60770 / 59040), pero luego se conecta a uno antiguo.

¿El problema está en el lado del servidor o del cliente?

¿Hay alguna manera de hacer que esta comunicación funcione? ¿Quizás a través de la configuración de mi FRITZ!Box?

Con cygwin intenté llegar a mi fritzbox y el resultado es:

$ curl -vvv --ftp-pasv --ssl -k -u speedITBackup 'ftp://u********u.myfritz.net:32753/Backup/Superfein/'
Enter host password for user 'speedITBackup':
*   Trying 92.218.125.113:32753...
* connect to 92.218.125.113 port 32753 failed: Timed out
* Failed to connect to u*************u.myfritz.net port 32753 after 21110 ms: Timed out
* Closing connection 0
curl: (28) Failed to connect to u************u.myfritz.net port 32753 after 21110 ms: Timed out

Respuesta1

Tengo x-plore instalado en mi televisor Android y en el Fritzbox 3490. Y usé un disco duro en el USB del Fritzbox smb ftp para ver películas en mi televisor.

De repente, de la nada, se agota el tiempo de espera de x-plore para la conexión ftp. ¿Alguna idea de por qué sucede esto? No cambié nada en la configuración...

Respuesta2

Tengo un FRITZ!Box 7520 y también tengo funcionando un servidor FTP. Accedo desde la LAN local pero también desde fuera. Estoy usando el complemento Total Commander + FTP en Android. Yo también estoy usando myFritz.

Hay 3 tipos de FTP:

  1. FTP sin cifrar (utiliza múltiples puertos)
  2. FTPS (FTP seguro, utiliza múltiples puertos)
  3. SFTP (FTP sobre SSH, utiliza un solo puerto)

FRITZ!Box sólo soporta 1 y 2. Es triste porque SFTP sólo requiere un puerto, por lo que esta es la opción más sencilla cuando se trata de cortafuegos.

Su comando curl usa FTPS. Puede conectarse, pero cuando intenta enumerar archivos falla porque no puede ingresar al modo pasivo.

Esta línea de registro es sospechosa:

*** Connecting to 92.218.125.113 (92.218.125.113) port 59040**
* connect to 92.218.125.113 port 32753 failed: Connection refused

Intenta conectarse en el puerto 59040 y luego dice que no pudo conectarse en el puerto 32753. Para mí, eso parece un error en curl.

Por favor, corre:

curl --version

El mío es 7.74.0. Cualquier cosa que se acerque a esta versión es aceptable. Si tienes suerte sólo tendrás que actualizar curl.

También puedes probar estas cosas:

  • Utilice el mismo comando curl en su LAN local y vea si tiene éxito. Puede utilizar cygwin, por ejemplo, para ejecutarlo en Windows.
  • Si tiene éxito pruébalo desde fuera.
  • Utilice wget en lugar de curl

Editar: Dijiste en los comentarios que tu proveedor de alojamiento bloquea los puertos salientes entre 49152 y 65534. Estos puertos se llaman dinámicos, privados o efímeros, como puedes leer más adelante.Wikipedia. Pero no sé si tiene sentido bloquear sólo estos puertos y permitir todos los demás.

La siguiente captura de pantalla muestra la configuración FTP de su FRITZ!Box. Parece que no es posible cambiar los puertos del modo pasivo. Sólo se puede cambiar el puerto principal.

Para solucionar su problema, puede:

  • cambiar a otro proveedor de alojamiento
  • use un proxy (curl admite proxies)
  • use una Raspberry Pi ejecutando un servidor FTP
  • usar el modo activo

ingrese la descripción de la imagen aquí

información relacionada