¿Por qué me expulsan de una sesión FTP una vez que ejecuto un comando?

12

¿Por qué me expulsan de una sesión FTP una vez que ejecuto un comando? Parece que una vez que inicie sesión con éxito en un servidor obtengo lo siguiente después de ejecutar un comando como "ls" (he incluido la parte de error en las etiquetas "[ERROR]"):

allen92@allen92-VirtualBox:~/Videos$ ftp -n ftp.FreeBSD.org
Connected to ftp.FreeBSD.org.
220 beastie.tdk.net FTP server (Version 6.00LS) ready.
ftp> user
(username) anonymous
331 Guest login ok, send your email address as password.
Password: 
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
[ERROR]
421 Service not available, remote server has closed connection
[ERROR]
ftp> 

Esto parece suceder en cualquier servidor FTP remoto. Todo funciona bien cuando inicio sesión en la máquina local y ejecuto comandos FTP. Si, de hecho, el error "421" es un error genérico, ¿hay alguna forma de averiguar la fuente del problema? Cualquier ventaja sobre esto sería apreciada. No he podido encontrar ningún soporte en este tema en particular . Cualquier persona con un problema similar comparte tus pensamientos.

NOTA: Tengo instalado VSFTPD .

AllenD
fuente

Respuestas:

13

Lo más probable es que haya un firewall NAT entre usted y los servidores que muestran el síntoma. (Los cortafuegos NAT ocultan una red completa detrás de un único número de IP).

El problema es que ftp quiere enviar los datos resultantes del comando en una nueva conexión TCP / IP separada y que no puede atravesar el firewall porque necesita ir del servidor a usted, y usted está oculto detrás del firewall que tiene No tengo idea de que los datos están destinados a su máquina. Cuando se diseñó el protocolo FTP, muchos dispositivos modernos como el enrutador NAT (que se hizo necesario cuando había más dispositivos que direcciones IP disponibles) aún no se habían inventado.

Use el pasvcomando (puede llamarse algo diferente en su cliente) para cambiar a una conexión pasiva donde las conexiones de datos van de usted al servidor.

Consulte http://slacksite.com/other/ftp.html para obtener una explicación más detallada.

Thorbjørn Ravn Andersen
fuente
Muchas gracias. En el caso de VSFTPD, el comando para ingresar al modo pasivo es "pasivo". Eso parece estar funcionando por ahora. Creo que toda esta situación tiene que ver conmigo ejecutando la instalación de Linux en una máquina virtual y su configuración no tan estándar. Voy a descubrir cómo habilitar el modo "pasivo" de forma predeterminada. Una vez que me entere, publicaré para cualquiera interesado.
AllenD
No es raro que la red predeterminada para máquinas virtuales sea algún tipo de NAT, por lo que la máquina no está expuesta. Para VirtualBox, cambiar a Bridged lo hace aparecer como cualquier otra máquina en la red local.
Thorbjørn Ravn Andersen
-1

Agregue o habilite esta línea en /etc/vsftpd.conf

seccomp_sandbox = NO

Andrej Sevčnikar
fuente
Esta respuesta resolvió mi problema, pero todavía tengo preguntas sobre esta configuración no documentada.
A1rPun
Por qué seccomp_sandbox=NOla respuesta correcta está documentada en ciertas circunstancias en el /etc/vsftpd.confarchivo: `` # seccomp_sanbox agrega una capa de seguridad adicional que limita el número de # syscalls que se pueden realizar a través de vsftpd. Sin embargo, puede suceder que una # lista blanca no permita una llamada legítima (generalmente activada indirectamente por # biblioteca de terceros como pam o openssl) y el proceso está siendo eliminado por el núcleo. # # Por lo tanto, si su servidor muere en situaciones comunes (descarga de archivos, carga), # descomente la siguiente línea y no olvide abrir el error en # bugzilla.novell.com se
GSchukat