Seleccionar página

Algo muy común  cuando administramos servidores es redireccionar tráfico.

Supongamos que tenemos un servidor con determinados servicios funcionando. Y queremos migrar o probar en producción una nueva versión que va en un nuevo servidor (por ejemplo porque estamos migrando de tecnologia o de versión de servidor, etc…) , pero que sea muy facil volvera la versión vieja ante cualquier problema no detectado en periodo de test.

Lo normal y más frecuente sería simplemente cambiar la IP en el registro DNS, no obstante si alguien estaba usando la IP en vez del subdominio se verá afectado.

 ¿Qué se puede hacer? Simple, redireccionar el tráfico que reciba ese servidor por ese puerto hacia otro servidor con el mismo puerto.

¿Cómo empezamos?

Lo primero será que debemos tener habilitado el forwarding en el servidor, para ello pondremos lo siguiente:

echo "1" > /proc/sys/net/ipv4/ip_forward

CentOS:
sysctl net.ipv4.ip_forward=1
Luego reiniciaremos la red:

service networking restart

CentOS sería:

service nertwork restart

Ahora ya se puede redireccionar:

iptables -t nat -A PREROUTING -p tcp --dport <puerto receptor> -j DNAT --to-destination <ip final>:<puerto de ip final>

Supongamos que deseamos redireccionar todo el tráfico que recibe nuestro servidor por el puerto 8080 hacia otro servidor (ej: 10.2.3.3), que igual recibirá ese tráfico por el 8080 (pues se trata del mismo servicio):

iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 10.2.3.3:8080

El servidor 10.2.3.3 verá que todos los paquetes o peticiones vienen desde la IP del cliente, en caso de que quieran natear las peticiones, o sea, que el 2º servidor vea que las peticiones llegan con la IP del 1er servidor, sería poner además esta segunda línea:

iptables -t nat -A POSTROUTING -j MASQUERADE

 

Otras opciones

Redireccionar el tráfico que viene de una IP específica:

iptables -t nat -A PREROUTING -s 10.2.3.85 -p tcp --dport 8080 -j DNAT --to-destination 10.2.3.3:8080

Redireccionar el tráfico de un segmento de red:

iptables -t nat -A PREROUTING -s 10.2.3.0/24 -p tcp --dport 8080 -j DNAT --to-destination 10.2.3.3:8080

Redireccionar el tráfico que llegue por una interfaz específica:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j DNAT --to-destination 10.2.3.3:8080