Reenviar puertos ftp desde CentOS 4.3 hacia un equipo de red Interna

Imagen de claudiotm

Forums: 

Buenos días,

Tengo instalado CentOS 4.3, y dentro de mi red Local tengo un Windows 2003, en el cúal está instalado un servidor ftp con Flilezille server(es un software open source).

En Centos, tengo hecho forward de los puerto 20 y 21 de esta manera,

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 20 -j DNAT --to 10.10.1.100:20

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 21 -j DNAT --to 10.10.1.100:21

Al momento de conectar desde un cliente usando tambien filezille, me muestra error
Could not retrieve directory listen.

Lo mismo ocurre desde un navegador firefox:
Error: No tiene permisos para acceder a esta carpeta.

El mensaje en Win 2003 con filezille server dice:
Can't open data connection

Por favor si pueden ayudarme con este problema.

Gracias,
Claudio

P.D Esta configurado en server y cliente en modo pasivo.

Te hace falta hacer la

Imagen de RazaMetaL

Te hace falta hacer la redireccion para el protocolo udp, si miras /etc/services podras darte cuenta de el ftp utiliza los puerto 20 y 21 tanto en tcp como en udp:


# cat /etc/services | grep ftp
ftp-data 20/tcp
ftp-data 20/udp
# 21 is registered to ftp, but also used by fsp
ftp 21/tcp
ftp 21/udp fsp fspd

-------------------------

Antes de preguntar visita esta dirección :evil:

 

-----

Visita este [url=http://www.sindominio.net/ayuda/preguntas-inteligentes.html]link[/url] :evil:

[img]http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/debian.jpg[/img]

(adsbygoogle = window.adsbygoogle || []).push({});

Gracias por responder, Ya e

Imagen de claudiotm

Gracias por responder,

Ya e habilitado esos puertos de esta manera

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 20 -j DNAT --to 10.10.1.100:20
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 21 -j DNAT --to 10.10.1.100:21
iptables -t nat -A PREROUTING -i eth1 -p udp --dport 20 -j DNAT --to 10.10.1.100:20
iptables -t nat -A PREROUTING -i eth1 -p udp --dport 21 -j DNAT --to 10.10.1.100:21

Sin embargo aun no logro conectarme a mi server ftp interno.

Lo curioso es que mediante el dos o prompt del cliente win si logro conectarme y puedo ver la carpeta, el inconveniente ocurre al tratar de conectarme usando un navegador o un cliente ftp.

Trata cambiando los modos

Imagen de RazaMetaL

Trata cambiando los modos PASV en el cliente. Si desde el prompt puedes loguearte y ver las carpetas, entonces la redireccion si esta funcionando.

-------------------------

Antes de preguntar visita esta dirección :evil:

 

-----

Visita este [url=http://www.sindominio.net/ayuda/preguntas-inteligentes.html]link[/url] :evil:

[img]http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/debian.jpg[/img]

(adsbygoogle = window.adsbygoogle || []).push({});

Cambíe los modos en el

Imagen de claudiotm

Cambíe los modos en el cliente a pasivo, y el error que aun muestra es,
No se puede recuperar la lista de directorio de contenido.

Preguntando en otro lugar me responden:

The FTP Client first contacts the FTP Server on port 21
Then the FTP Server tells the FTP Client to contact it again on another port to transfer data.
This does not work for us because not told the firewall to forward those ports.
set the Passive Mode FTP port range to 28860-28870 on the FTP Server.
forward these ports to the server in the firewall.

Entonces habilito los puertos en CentOS 4.3, para que pueda responder el server interno win 2003, hacia el cliente que está en Internet, de esta manera.

iptables -t nat -A PREROUTING -i eth0("es la nic interna") -p tcp --dport 28860:28870 -j REDIRECT --to-port 3128

Sin embargo aun continuo con el problema.

Alguna sugerencia.

Será que el contralador de dominio me esta dando problemas?.

Gracias,

Algo de eso vi en una lista

Imagen de RazaMetaL

Algo de eso vi en una lista alguna vez, no recuerdo ahora como el amigo lo soluciono, por cierto tambien es usuario de EcuaLUG :). Si encuentro el post en la lista te lo transcribo aca.

Y que tal si instalas un proxy para ftp en CentOS?

-------------------------

Antes de preguntar visita esta dirección :evil:

 

-----

Visita este [url=http://www.sindominio.net/ayuda/preguntas-inteligentes.html]link[/url] :evil:

[img]http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/debian.jpg[/img]

(adsbygoogle = window.adsbygoogle || []).push({});

De hecho lo que te dijeron

Imagen de antares

De hecho lo que te dijeron es verdad. El daemon ftp escucha en el puerto 21. Tu cliente se conecta al puerto 21, el demonio hace fork (saca un proceso hijo) que atiende a la conexión en otro puerto que esté libre, ya que el 21 siempre debe estar libre para escuchar más peticiones. De lo que tengo entendido el puerto libre lo asigna el sistema operativo. No te podría asegurar que sea en el rango que te pusieron.

Lo tuyo es bastante interesante, espero que consigas una solución, y sobre todo no olvides postearla para beneficio de todos.

Saludos,

antares

Habilita los puertos para

Imagen de elgabo

Habilita los puertos para que hagan DNAT desde el 1024 al 65535 para hacer ftp pasivo
Yo tenia un problema con un FTP interno pero yo no hacia DNAT sino FORWARD ;)
Pero esta guia me ayudo a darme una idea de la que habia que hacer (busca la palabra ftp pasivo)
Supongo que tienes que poner bien las reglas para hacer el DNAT y ademas el MASQUERADE de tu ip interna.

Suerte

Imagination is more important than Knowledge -- Albert Einstein

Imagination is more important than Knowledge -- Albert Einstein
Errar es humano, pero para dañar las cosas realmente bien, pero bien de verdad, necesitas la contraseña de root.

mira este sencillo

Imagen de Epe

mira este sencillo script:
[url]http://cursos.ernestoperez.com/rc.firewall[/url]

lo uso para hacer DNAT efectivamente hacia otras máquinas.

Esta es la linea en cuestión que puede te interese:

$IPTABLES -A PREROUTING -t nat -i $EXTERNALIF -p tcp -d $MYADDR --dport 21 \
-j DNAT --to 192.168.0.10:21
$IPTABLES -A FORWARD -i $EXTERNALIF -p tcp -d 192.168.0.10 --dport 21 -j ACCEPT

No sólo el puerto 21 sino el 20. El UDP no se usa, no te preocupes.

como característica fundamental inicial, el servidor que recibe la conexión (en el caso de éste ejemplo es 192.168.0.10) debe tener como gateway al linux, y linux debe permitir hacer NAT.

Te sugiero impementes ese script, es super fácil y confirmado que funciona.

Saludos
epe
--
EcuaLinux.com
Ecuador: +(593) 9 9246504, +(593) 2 3412402
USA: +1 404 795 0321

Saludos
epe

EcuaLinux.com

+(593) 9 9924 6504

Servicios en Software Libre

Solucion

Imagen de claudiotm

Saludos a todos,

La solución de mi problema fue de la siguiente manera.
Primero en mi server ftp filezille, tengo habilitado el puerto tcp 21 ademas habilité el puerto 2013 para que pueda responder el server ftp en modo pasivo para mostrar datos.

Luego en mi server Linux que es un firewall puse la siguientes reglas.

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 21 -j DNAT --to 10.10.1.100:21
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 2013 -j DNAT --to 10.10.1.100:2013

Está funcionando por el momento bien.

Saludos,
Claudio T