Redireccionar puerto a una IP interna con iptables

Redireccionar puertos es una opción muy útil, sobre todo cuando tenemos una sola IP pública e instalamos nuevos equipos que requerimos tengan acceso desde la red externa, para esto podríamos hacer que puertos específicos a nuestra IP pública redireccione a ips internas a puertos específicos según el servicio requerido.

En mi caso, he tenido la necesidad de instalar 2 cámaras IP, pero para no ocupar ips públicas, que mejor opción que redireccionar puertos desde mi servidor principal que posee IP pública.

Esto es muy fácil hacerlo con IP Tables, a continuación los pasos:

1) Lo primero que debes hacer:

Habilitar la redirección de IP en iptables con cualquiera de los siguientes comandos:

echo “1” > /proc/sys/net/ipv4/ip_forward

O el siguiente

sysctl net.ipv4.ip_forward=1

Adicionalmente, debemos reiniciar el servicio con alguno de los siguientes comandos, según el OS que usen:

/etc/init.d/networking restart
service network restart

2) Creando la regla:

La regla la crear con el siguiente comando, que básicamente indica que del puerto 7777 envia todo el tráfico a la IP 10.0.0.1 al puerto 8888

iptables -t nat -A PREROUTING -p tcp –dport 7777 -j DNAT –to-destination 10.0.0.1:8888

Y finalmente necesitamos enmascarar la dirección IP, para que el destino reciba el tráfico con la IP del servidor fuente

iptables -t nat -A POSTROUTING -j MASQUERADE

Con esto hemos logrado redireccionar un puerto de nuestro servidor a una IP y puerto específico.