elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Sistemas Operativos
| |-+  GNU/Linux (Moderador: MinusFour)
| | |-+  Problema con iptables [SOLUCIONADO]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con iptables [SOLUCIONADO]  (Leído 4,813 veces)
malonecc

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Problema con iptables [SOLUCIONADO]
« en: 26 Septiembre 2012, 21:49 pm »

Hola a todos,

Me encuentro con un problema que no doy solucionado, y empiezo a pensar que me encuentro ante una limitación de iptables.
Paso a describirlo:

Tengo un equipo Debian haciendo de enrutador.

Por el eth0.2 recibo peticiones TCP en el puerto 10801 o 10802 y destino IP 20.0.0.2

Por el eth0.3 debo sacar los paquetes del eth0.2 transformados del siguiente modo:

Si recibo por el 10801 lo envío a la IP 20.0.0.2 puerto 10800 con dirección de origen 50.0.0.2
Si recibo por el 10802 lo envío a la IP 20.0.0.2 puerto 10800 con dirección origen 60.0.0.2

Total que se trata de un NAT de dirección origen y de puerto destino.

He conseguido que me funcionen las dos reglas por separado, pero nunca las dos a la vez. Por ejemplo con:

iptables -t nat -p tcp -A PREROUTING -d 20.0.0.2 --dport 10801 -j DNAT --to-destination 20.0.0.2:10800
iptables -t nat -p tcp -A POSTROUTING -d 20.0.0.2 --dport 10800 -j SNAT --to 50.0.0.2

Con estas reglas, si añado:

iptables -t nat -p tcp -A PREROUTING -d 20.0.0.2 --dport 10802 -j DNAT --to-destination 20.0.0.2:10800

Me saldrían todos los paquetes con origen 50.0.0.2, no hay manera de distinguir los que entran por el 10802 para ponerles origen 60.0.0.2

Entiendo que el problema es el orden del PREROUTING y del POSTROUTING.
Me imagino que lo ideal sería utilizar dos equipos Debian, el primero que haga el cambio de SOURCE y el segundo el DESTINATION, pero me resisto a creer que no pueda hacer de algún modo con un solo equipo.
He probado a poner mas adaptadores de red uniendo dos de ellos con un cable, pero los paquetes se enrutan internamente y pasan por iptables (o eso me parece).

Quizás haya algún modo combinando un loopback, no sé, ya estoy un poco perdido, cualquier idea será bienvenida.





« Última modificación: 29 Septiembre 2012, 20:57 pm por malonecc » En línea

xv0


Desconectado Desconectado

Mensajes: 1.026



Ver Perfil
Re: Problema con iptables
« Respuesta #1 en: 27 Septiembre 2012, 23:15 pm »

Hola

No entiendo muy bien tú pregunta, pretendes que los paquetes que recibas desde eth0.2, se traduzcan ala dirección que desees y sean redireccionados a la dirección 20.0.0.2?

Un saludo


En línea

malonecc

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Problema con iptables
« Respuesta #2 en: 28 Septiembre 2012, 09:44 am »

Lo que trato de hacer es que a cada paquete que llegue debo cambiarle el puerto destino  al 10800 y la IP origen se cambia en función del puerto destino original:

Si el puerto destino original era 10801 entonces debo ponerle ip origen 50.0.0.2
y
Si el puerto destino original era 10802 entonces le debo poner ip origen 60.0.0.2

En todos los casos el puerto destino quedará cambiado al 10800.


Reconozco que un poco liante si que es...
En línea

dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: Problema con iptables
« Respuesta #3 en: 28 Septiembre 2012, 14:26 pm »

Interesante este problema, no se tanto de IPTables, pero quiero aportar lo que pueda.

Ummm no has probado además del Post-Pre, añadir conexiones que entran y salen, y luego con eso, redireccionas?


No estoy seguro si se aplicarian de esa forma:

Citar
iptables -t nat -p tcp -A INPUT -d 20.0.0.2 --dport 10801 -j DNAT --to-destination 20.0.0.2:10800
iptables -t nat -p tcp -A OUTPUT -d 20.0.0.2 --dport 10801 -j DNAT --to-destination 20.0.0.2:10800
iptables -t nat -p udp -A INPUT -d 20.0.0.2 --dport 10801 -j DNAT --to-destination 20.0.0.2:10800
iptables -t nat -p udp -A OUTPUT -d 20.0.0.2 --dport 10801 -j DNAT --to-destination 20.0.0.2:10800

iptables -t nat -p tcp -A INPUT -d 20.0.0.2 --dport 10800 -j SNAT --to 50.0.0.2
iptables -t nat -p tcp -A OUTPUT -d 20.0.0.2 --dport 10800 -j SNAT --to 50.0.0.2
iptables -t nat -p tcp -A INPUT -d 20.0.0.2 --dport 10800 -j SNAT --to 50.0.0.2
iptables -t nat -p tcp -A OUTPUT -d 20.0.0.2 --dport 10800 -j SNAT --to 50.0.0.2

La verdad aún no se de que va el nat, snat, dnat, Post y Pre routing, pero si lo que quieres es colocar un puente, creo que primero debe comprobarse que entran las peticiones (claro que no se muy bien como funciona eso, va con ICMP y ACK) y dar la salida desde el puente.

Voy a averiguar.
En línea


Epzylon

Desconectado Desconectado

Mensajes: 103



Ver Perfil WWW
Re: Problema con iptables
« Respuesta #4 en: 28 Septiembre 2012, 16:47 pm »

Te tiro una idea para hacer lo que queres:

Código:
iptables -t mangle -A PREROUTING -p tcp --dport 10801 -j MARK --set-mark 801
iptables -t mangle -A PREROUTING -p tcp --dport 10802 -j MARK --set-mark 802

iptables -t nat -A PREROUTING -p tcp --dport 10801 -j DNAT --to-destination 20.0.0.2:10800
iptables -t nat -A PREROUTING -p tcp --dport 10802 -j DNAT --to-destination 20.0.0.2:10800

iptables -t nat -A POSTROUTIGN -m mark --mark 801 -j SNAT --to-source 50.0.0.2
iptables -t nat -A POSTROUTIGN -m mark --mark 801 -j SNAT --to-source 60.0.0.2

En este blog, explico el tema de mark
http://www.netsecure.com.ar/2008/12/09/netfilter-iptables-v/


Decime si funca
En línea

malonecc

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Problema con iptables
« Respuesta #5 en: 28 Septiembre 2012, 23:49 pm »

Hola,

Muy buenos ambos aportes!

Me pongo con ello y os cuento los resultados.
En línea

malonecc

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Problema con iptables
« Respuesta #6 en: 29 Septiembre 2012, 20:56 pm »

Fantástico, Epzylon!


Efectivamente el truco estaba en "marcar" los paquetes previamente. No sabía que existía esa función, pero me la apunto.

Funciona a la perfección, al final, luego de unas pequeñas correciones la cosa ha quedado así:

iptables -t mangle -A PREROUTING -p tcp --dport 10801 -j MARK --set-mark 801
iptables -t mangle -A PREROUTING -p tcp --dport 10802 -j MARK --set-mark 802

iptables -t nat -A PREROUTING -p tcp --dport 10801 -j DNAT --to-destination 20.0.0.2:10800
iptables -t nat -A PREROUTING -p tcp --dport 10802 -j DNAT --to-destination 20.0.0.2:10800

iptables -t nat -A POSTROUTING -m mark --mark 801 -j SNAT --to-source 50.0.0.2
iptables -t nat -A POSTROUTING -m mark --mark 802 -j SNAT --to-source 60.0.0.2

Solamente se me ocurren un par de cuestiones que son mas curiosidad que otra cosa,

1.- ¿Cuantas marcas distintas se pueden establecer simultáneamente?

2.- ¿Las marcas deben estar dentro de un rango o sirve cualquier numero entero?

De nuevo, un millón de gracias por las respuestas e ideas.

En línea

Epzylon

Desconectado Desconectado

Mensajes: 103



Ver Perfil WWW
Re: Problema con iptables [SOLUCIONADO]
« Respuesta #7 en: 3 Octubre 2012, 22:08 pm »

Las marcas podes poner son muchas, aunque no se el numero, te aseguro que te van a alcanzar

Es importante tener en cuenta que estas marcas solo se ven dentro del linux que las ejecutas,
es decir es un funcionamiento interno del kernel y no "viajan" en el paquete.

Pd: que groso netfiler!
pd2: avisame cualquier cosa!

Saludos
En línea

dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: Problema con iptables
« Respuesta #8 en: 4 Octubre 2012, 00:38 am »

Te tiro una idea para hacer lo que queres:

Código:
iptables -t mangle -A PREROUTING -p tcp --dport 10801 -j MARK --set-mark 801
iptables -t mangle -A PREROUTING -p tcp --dport 10802 -j MARK --set-mark 802

iptables -t nat -A PREROUTING -p tcp --dport 10801 -j DNAT --to-destination 20.0.0.2:10800
iptables -t nat -A PREROUTING -p tcp --dport 10802 -j DNAT --to-destination 20.0.0.2:10800

iptables -t nat -A POSTROUTIGN -m mark --mark 801 -j SNAT --to-source 50.0.0.2
iptables -t nat -A POSTROUTIGN -m mark --mark 801 -j SNAT --to-source 60.0.0.2

En este blog, explico el tema de mark
http://www.netsecure.com.ar/2008/12/09/netfilter-iptables-v/


Decime si funca

Buen dato, estoy revisando el blog, muy bueno.
En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problemas con iptables + thunderbird [solucionado] « 1 2 »
GNU/Linux
dato000 19 10,978 Último mensaje 22 Enero 2013, 21:59 pm
por marybal
problema con iptables SNAT
Hacking
soyloqbuskas 0 2,121 Último mensaje 29 Noviembre 2012, 01:22 am
por soyloqbuskas
PROBLEMA con perhaps iptables or you kernel needs to be upgraded.
Dispositivos Móviles (PDA's, Smartphones, Tablets)
dedos2 0 1,696 Último mensaje 5 Junio 2014, 05:46 am
por dedos2
[SOLUCIONADO] Problema IPTABLES
Redes
D_F4UL7 3 3,033 Último mensaje 28 Mayo 2016, 10:29 am
por D_F4UL7
Tengo un problema con IPTABLES
Seguridad
daikiridefresa 4 2,249 Último mensaje 4 Abril 2017, 18:38 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines