redireccionamientod e puertos con iptables

Miguel Oyarzo O. admin en aim.cl
Dom Nov 8 12:16:48 CLST 2009


rvr en 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).

Suerte!

=====================================
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
=====================================








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