HAPROXY+Apache = Obtener IP Real

Introducción

Tenemos una plataforma montada de la siguiente manera:

INTERNET <-> HAPROXY <-> APACHE

Cuando una persona accede a la plataforma y revisamos los logs de APACHE vemos que nos está llegando la IP del balanceador. Lo que queremos es que llegue directamente la IP de la persona que se conecta.

Por lo tanto nuestro objetivo es que en APACHE llegue la IP pública que accede a nuestra plataforma/portal.

Si quieres ver el otro post de HAPROXY+NGINX = Obtener IP Real.

Configuraciones

HAPROXY

Lo primero que debemos hacer es configurar nuestro HAPROXY, vamos a poner una configuración de ejemplo usada:

frontend test_http
        bind                    *:80
        option                  forwardfor
        default_backend         bk_test_http

backend bk_test_http
        mode    http
        balance source

        server  server01 10.192.28.60:80 cookie node1 check inter 5000 fall 3 rise 2

Comprobamos que la sintaxis es correcta:

haproxy -f /etc/haproxy/haproxy.cfg -c

Reiniciamos el servicio:

systemctl restart haproxy

Modo debug del HAPROXY

haproxy -f /etc/haproxy/haproxy.cfg -d

En este punto lo único que hemos añadido extra ha sido:

option forwardfor

APACHE

Lo segundo es configurar nuestros frontales APACHE para que recojan la IP real. Para ello debemos activar el módulo de apache remoteip:

# Ubuntu/Debian
a2enmod remoteip

Para versiones de CentOS/RedHat ya viene activado el módulo por defecto. Lo podemos comprobar con el siguiente comando:

apachectl -M | grep remoteip

Después tenemos que rellenar la configuración en la siguiente ruta: «/etc/apache2/conf-available/remoteip.conf» (Ubuntu/Debian) o «/etc/httpd/conf.d/remoteip.conf» (CentOS/RedHat):

RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 10.192.28.59

Habilitamos la configuración:

a2enconf remoteip

Comprobamos que la configuración es correcta:

apachectl2 -t

Reiniciamos el Servicio

systemctl restart apache2

Como podéis ver hemos añadido los parámetros RemoteIPTrustedProxy (Aquí debemos indicar la IP de nuestro HAPROXY) y RemoteIPHeader. Con esto conseguimos que en los acces_log de Apache llegue la IP real del cliente.

Si ha ido bien deberíamos ver en los accesslog la ip real de cada persona.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *