La historia detrás de X-Forwarded-For y X-Real-IP
Posted on Wed 21 October 2015 in Redes
Determinar la IP real del cliente en arquitecturas con proxies es más complejo de lo que parece. Los headers X-Forwarded-For y X-Real-IP tienen diferentes propósitos y limitaciones.
X-Forwarded-For: La cadena completa¶
Formato y propósito¶
X-Forwarded-For: client, proxy1, proxy2
- Rastrea la IP original del cliente a través de múltiples saltos
- Acumula IPs conforme pasa por proxies
- No es obligatorio para todos los proxies
Limitaciones críticas¶
⚠️ Fácilmente falsificable: Un cliente puede añadir IPs falsas
⚠️ Potencialmente no confiable para determinar la IP real
X-Real-IP: El enfoque directo¶
Características¶
- Menos documentación oficial disponible
- Comúnmente usado junto con X-Forwarded-For
- Enfoque más simple para pasar la IP del cliente
Limitación¶
"Not many good info or specs about this one" - No hay estándares definitivos
Configuración Nginx recomendada¶
Para extraer la IP más precisa:
# Configurar proxies conocidos
set_real_ip_from 10.0.0.0/8;
set_real_ip_from 172.16.0.0/12;
set_real_ip_from 192.168.0.0/16;
# Activar procesamiento recursivo
real_ip_recursive on;
# Usar X-Forwarded-For como fuente
real_ip_header X-Forwarded-For;
El desafío real¶
Determinar la IP "real" del cliente es inherentemente complejo debido a:
- Múltiples saltos de red
- Proxies no cooperativos
- Potencial spoofing de IP
- Lack de estándares uniformes
Buenas prácticas¶
- Validar fuentes confiables de headers
- Configurar correctamente proxies conocidos
- No confiar ciegamente en headers de cliente
- Implementar logging para debugging
La confiabilidad real depende más de tu arquitectura de red que de los headers específicos utilizados.
Fuente original: Distinct Place