redireccionamientod e puertos con iptables

Rodrigo Valenzuela rvr en vtr.net
Vie Nov 6 10:44:35 CLST 2009


On Fri, 6 Nov 2009 00:55:58 -0300
Aldrin Martoq <amartoq at dcc.uchile.cl> wrote:

> 2009/11/5  <rvr at vtr.net>:
> > El cuento es el siguiente, tengo un proveedor (Telmex) el cual vamos a dar
> > de baja a fin de mes. Todo me funciona bien, mi red interna (usuarios y
> > servidores) sales por mi linux con iptables, cuento corto, ningún problema.
> > El proveedor nuevo instalo el cablerio nuevo y su aparato (obviamnete hay IP
> > nueva GTD ) y ahí viene el problema.
> > Acá alojamos varios sitios y mientras no se haga el cambio de todos los
> > sitios a la IP nueva no podemos llegar y cambiar el enlace, por lo que monté
> > otro equipo con Linux + iptables, y lo que quería hacer era redireccionar
> > todas las peticiones al puerto 80 en la IP nueva hacia mi servidor apache.
> 
> > La ip interna del servidor web es 192.168.0.1, y el Linux + iptables nuevo
> > tiene la 192.168.0.3., por lo que entre ellos se ven sin problemas. El
> > problema viene cuando llega la petición a la IP nueva y la reenvía bien
> > hacia adentro con una regla PREROUTING,
> 
> No no no: la _tabla_ es PREROUTING, probablemente estás usando DNAT
> para redirigir a tu servidor en su IP interna.
> 

justamente

> > pero el server viejo 192.168.0.1 ve
> > que le llego una peticion desde la IP nueva, puerto 80 y por ende trata de
> > contestar usando el GW del proveedor viejo (gateway por defecto) , por lo
> > que la conexión se queda esperando eternamente.
> 
> No no no: en realidad ve que la petición llega desde una IP de
> internet (y el puerto origen no es 80). Si la IP de origen dice
> internet, la respuesta se irá por TELMEX en vez de volver por la IP
> interna, y por eso el DNAT no funciona como una espera... Una solución
> para tu configuración es cambiar la IP de origen... algo como esto:
> 

Ah claro, eso pasa pero según me acuerdo el puerto que ve el server viejo es el 80, 

$IPT -A PREROUTING -t nat -d ip_gtd -p tcp -m state --state NEW,ESTABLISHED,RELATED --dport 80 -j DNAT --to 192.168.0.1





> iptables -N MITABLA
> iptables -A PREROUTING -p tcp --dport 80 -j MITABLA
> iptables -A PREROUTING -p tcp --dport 25 -j MITABLA
> [... etc con el resto de los servicios ...]
> 
> iptables -A MITABLA -j DNAT --to-destination 192.168.0.1
> iptables -A MITABLA -j SNAT --to-source 192.168.0.3
> 
> 
> El problema de esta configuración es que todo el tráfico parecerá
> venir desde el linux con IP 192.168.0.3 en GTD, para efecto de los
> logs y tal vez de tu aplicación; pero la conectividad funcionará.
> 
> 
 un detalle más bien porque es temporal, esto es lo que probaré


> 
> > Cuál es el mejor enfoque para tratar este problema? Creo que no me enrede
> > mucho
> 
> Yo sacaría el linux extra y agregaría las IP's a tu conexión nueva con
> un switch. Algo como esto:
> 
> GTD -> switch
> TELMEX -> switch
> switch -> SERVIDOR
> 
> y en el servidor,
> eth0 -> IP de GTD
> eth0:1 -> IP de TELMEX
> ruta default -> la de GTD.
> 
> Cuando se muera TELMEX, le quitas las IP correspondientes.

Aquí tengo una duda, todavía hay sitios que no se han podido cambiar de ip en el nic, por lo que las consultas llegan por ip_telmex pero salen por ip_gtd? Esto no sería incorrecto? 

Bueno, gracias por los consejos y les cuento como mes fue

GRACIAS

> 
> -- 
> Aldrin Martoq
> http://aldrin.martoq.cl/
> 


-- 
Rodrigo Valenzuela <rvr at vtr.net>



Más información sobre la lista de distribución Linux