redireccionamientod e puertos con iptables

Rodrigo Valenzuela rvr en vtr.net
Dom Nov 8 21:40:14 CLST 2009


On Sun, 08 Nov 2009 16:16:48 +0100
"Miguel Oyarzo O." <admin at aim.cl> wrote:

> rvr at vtr.net escribió:
> > Estimados:
> > 
> > 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, 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.
> > 
> > Cuál es el mejor enfoque para tratar este problema? Creo que no me 
> > enrede mucho
> > 
> > Gracias!!!
> 
> 
> Es mas facil de lo que piensas  (no requieres redirigir puertos)
> 
> 1) Agrega una nueva interfaz de red a tu maquina y ponle la IP de tu 
> nuevo proveedor (tendras 2 IP, pero un solo GW, el de tu antiguo ISP)
> entonces,
> 2) mediante el comando "ip" crea una segunda tabla de rutas (TABLAX) que 
> tenga el gateway nuevo o el que tu quieras
> 
> usa esto si quieres:
> #ip route flush table TABLAX
> #ip route show table main | grep -Ev ^default | while read ROUTE ; do 
> $RUTA table TABLAX $ROUTE ; done
> #ip route add default dev eth1 via $GW_GDT table TABLAX
> 
> Esto te creara una nueva tabla de rutas llamada TABLAX.
> 
> 3) usando iptables --set-mark y la tabla "mangle" marca cada paquete que 
> entre por esa nueva intefaz, con un numero X
> 
> 4) Asocia todos los paquetes marcados con X a la nueva tabla TABLAX
> Algo como #ip rule add fwmark X table TABLAX
> 
> Es todo, el kernel hara lo demas, peticiones por la interfaz vieja se 
> iran por la tabla de rutas default "main" (TELMEX) y peticiones que 
> entren por la nueva interfaz se iran por la tabla de rutas TABLAX (GTD).


Exactamente esa es la solución que me interesó en una primera instancia pero me surgieron muchas dudas, por lo que empecé a leer más, espero tener más tiempo en la semana para centrarme en esto.

La duda que tenía es que según este enfoque mi servidor tendría que estar expuesto directamente a inet, y lo que tengo en la oficina es un tarro que hace de FW delante de mi red. De hecho por acá estoy partiendo http://linux-ip.net/html/adv-multi-internet.html

> 
> Suerte!

y mucha lectura, gracias!!
> 
> =====================================
> Miguel A. Oyarzo O.
> Ingeniería en Redes y Telecomunicaciones
> Austro Internet S.A.  &  INALAMBRICA S.A.
> Teléfono: [+05661] 710030
> Punta Arenas - Chile
> Linux User: # 483188 - counter.li.org
> =====================================
> 
> 
> 
> 
> 
> 


-- 
Rodrigo Valenzuela <rvr at vtr.net>



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