Redirección y NAT en iptables

La redirección y la traducción de direcciones de red (NAT) son funciones esenciales de iptables que permiten modificar las direcciones IP de los paquetes de red. A continuación, se presentan algunos ejemplos prácticos.

1. Redirigir tráfico HTTP a HTTPS

Para redirigir el tráfico HTTP (puerto 80) a HTTPS (puerto 443), usamos el siguiente comando:

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 443

Aplicación práctica: Esto se utiliza para asegurar que todas las conexiones a tu sitio web sean seguras, redirigiendo automáticamente las solicitudes HTTP a HTTPS.

2. Configuración de NAT para compartir Internet

Para configurar NAT y permitir que una red local comparta una conexión a Internet, usamos los siguientes comandos:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

En este ejemplo, eth0 es la interfaz conectada a Internet y eth1 es la interfaz conectada a la red local.

Aplicación práctica: Esto se utiliza en un entorno doméstico o de oficina para permitir que múltiples dispositivos compartan una única conexión a Internet.

3. Redirigir tráfico de un puerto a otro

Para redirigir el tráfico de un puerto a otro en el mismo servidor, usamos el siguiente comando:

sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80

Aplicación práctica: Esto se utiliza cuando un servicio está configurado para escuchar en un puerto no estándar, pero deseas que sea accesible a través del puerto estándar (por ejemplo, redirigir el tráfico del puerto 8080 al puerto 80).

4. Redirigir tráfico a otro servidor

Para redirigir el tráfico de un puerto específico a otro servidor, usamos el siguiente comando:

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:80

En este ejemplo, todo el tráfico que llega al puerto 80 se redirige al servidor con la IP 192.168.1.2 en el mismo puerto.

Aplicación práctica: Esto se utiliza para distribuir la carga de tráfico entre varios servidores o para acceder a servicios en una red privada desde una red pública[^1^][1].

5. Habilitar el reenvío de paquetes

Para habilitar el reenvío de paquetes en el sistema, usamos el siguiente comando:

sudo sysctl -w net.ipv4.ip_forward=1

Este comando permite que el sistema reenvíe paquetes entre interfaces de red.

Aplicación práctica: Esto es necesario para que las reglas de NAT funcionen correctamente, permitiendo que el tráfico pase a través del sistema.