Forwarded For es el estándar de facto para identificar la dirección IP de origen de un cliente que se conecta a un servidor web a través de balanceadores de carga de Capa 7 y servidores proxy.
Salida Forwarded-For
Opción
|
Descripción
|
Fuera de
|
El ADC no altera la cabecera Forwarded-For.
|
Añadir dirección y puerto
|
Esta opción añadirá la dirección IP y el puerto del dispositivo o cliente conectado al ADC al encabezado Forwarded-For.
|
Añadir dirección
|
Esta opción añadirá la dirección IP del dispositivo o cliente conectado al ADC a la cabecera Forwarded-For.
|
Sustituir dirección y puerto
|
Esta opción sustituirá el valor de la cabecera Forwarded-For por la dirección IP y el puerto del dispositivo o cliente conectado al ADC.
|
Sustituir dirección
|
Esta opción sustituirá el valor de la cabecera Forwarded-For por la dirección IP del dispositivo o cliente conectado al ADC.
|
Cabecera de reenvío
Este campo le permite especificar el nombre dado a la cabecera Forwarded-For. Normalmente es "X-Forwarded-For", pero puede cambiarse en algunos entornos.
Registro avanzado para IIS - Registro personalizado
Puede obtener la información X-Forwarded-For instalando la aplicación IIS Advanced logging 64-bit. Una vez descargada, cree un campo de registro personalizado denominado X-Forwarded-For con la siguiente configuración.
Seleccione Predeterminado en la lista Tipo de fuente en la lista Categoría, seleccione Encabezado de solicitud en el cuadro Nombre de fuente y escriba X-Forwarded-For.
HTTP://www.iis.net/learn/extensions/advanced-logging-module/advanced-logging-for-iis-custom-logging
Cambios en Apache HTTPd.conf
Deberá realizar varios cambios en el formato predeterminado para registrar la dirección IP del cliente X-Forwarded-For o la dirección IP real del cliente si no existe el encabezado X-Forwarded-For.
Dichos cambios figuran a continuación:
Tipo
|
Valor
|
LogFormat:
|
"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i"" combinado
|
LogFormat:
|
"%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i"" proxy SetEnvIf X- Forwarded-For "^.*\..*\..*\..*" forwarded
|
CustomLog:
|
"logs/access_log" combined env=!forwarded
|
CustomLog:
|
"logs/access_log" proxy env=reenviado
|
Este formato aprovecha el soporte integrado de Apache para el registro condicional basado en variables de entorno.
La línea 1 es la cadena estándar con formato de registro combinado por defecto.
La línea 2 sustituye el campo %h (host remoto) por los valores extraídos de la cabecera X-Forwarded-For y establece el nombre de este patrón de archivo de registro como "proxy".
La línea 3 es un ajuste para la variable de entorno "forwarded" que contiene una expresión regular suelta que coincide con una dirección IP, lo cual está bien en este caso ya que nos importa más si existe una dirección IP en la cabecera X-Forwarded-For.
Además, la línea 3 podría leerse como: "Si existe un valor X-Forwarded-For, utilícelo".
Las líneas 4 y 5 indican a Apache qué patrón de registro debe usar. Si existe un valor X-Forwarded-For, usa el patrón "proxy", si no, usa el patrón "combinado" para la petición. Por razones de legibilidad, las líneas 4 y 5 no aprovechan la característica de registro de rotación de registros (piped) de Apache, pero suponemos que casi todo el mundo la usa.
Estos cambios darán lugar al registro de una dirección IP para cada solicitud.