¿Cómo puedo transferir la dirección IP de un cliente?
Cuando utiliza ELB para enrutar solicitudes a servidores backend, las direcciones IP de los clientes serán traducidas por ELB. Esta sección le guía para obtener las direcciones IP de los clientes.
- Equilibrio de carga en Capa 7 (oyentes de HTTP o HTTPS): Configure el servidor de aplicaciones y obtenga la dirección IP de un cliente desde el encabezado de HTTP.
Para obtener más información, véase Balanceo de carga de capa 7.
- Equilibrio de carga en Capa 4 (oyentes de TCP o UDP): Utilice cualquiera de los siguientes métodos para obtener la dirección IP real de un cliente.
- Método 1: Habilitar Transfer Client IP Address para los oyentes.
- Método 2: Configurar el complemento de TOA.
Para obtener más información, véase Balanceo de carga de capa 4.
Restricciones y limitaciones
- Si se utiliza Network Address Translation (NAT), no se pueden obtener las direcciones IP de los clientes.
- Si el cliente es un contenedor solo puede obtener la dirección IP del nodo donde se encuentra el contenedor, pero no puede obtener la dirección IP del contenedor.
- Si Transfer Client IP Address está habilitado para oyentes de TCP o UDP, no se puede usar un servidor en la nube como servidor backend y cliente al mismo tiempo.
- De forma predeterminada, la función Transfer Client IP Address está habilitada para los oyentes de TCP y UDP de balanceadores de carga dedicados y no se puede deshabilitar.
Si se utilizan tanto WAF como ELB, también puede obtener las direcciones IP de los clientes con WAF. Para obtener más información, consulte la Guía del usuario de Web Application Firewall.
Balanceo de carga de capa 7
Configure el servidor de aplicaciones y obtenga la dirección IP de un cliente desde el encabezado de HTTP.
El balanceador de carga coloca la dirección IP real en el campo de encabezado X-Forwarded-For en el siguiente formato:
X-Forwarded-For: IP address of the client,Proxy server 1-IP address,Proxy server 2-IP address,...
Si utiliza este método, la primera dirección IP obtenida es la dirección IP del cliente.
Servidor de Apache
- Instalar Apache 2.4.
Por ejemplo, si se utiliza CentOS 7.5 como sistema operativo, ejecute el siguiente comando para instalar el software:
yum install httpd
- Agregar el siguiente contenido al final del archivo de configuración de Apache /etc/httpd/conf/httpd.conf:
LoadModule remoteip_module modules/mod_remoteip.so RemoteIPHeader X-Forwarded-For RemoteIPInternalProxy 100.125.0.0/16
Figura 1 Contenido a agregar
Agregue el rango de direcciones IP del servidor proxy después de RemoteIPInternalProxy.
- Balanceadores de carga compartidos: 100.125.0.0/16 y el rango de direcciones IP utilizado por el servicio AAD. Los balanceadores de carga utilizan direcciones IP en 100.125.0.0/16 para comunicarse con servidores backend, y no hay riesgos de seguridad. Utilice la coma (,) para separar varias entradas.
- Balanceadores de carga dedicados: bloque CIDR de la subred donde reside el balanceador de carga
- Cambie el formato de salida del log en el archivo de configuración de Apache a lo siguiente (el %a indica la dirección IP de origen):
LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
- Reinicie Apache.
systemctl restart httpd
- Obtenga la dirección IP real del cliente de los registros de acceso httpd.
Servidor de Nginx
Por ejemplo, si se utiliza CentOS 7.5 como sistema operativo, ejecute el siguiente comando para instalar el software:
- Ejecute los siguientes comandos para instalar http_realip_module:
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel wget http://nginx.org/download/nginx-1.17.0.tar.gz tar zxvf nginx-1.17.0.tar.gz cd nginx-1.17.0 ./configure --prefix=/path/server/nginx --with-http_stub_status_module --without-http-cache --with-http_ssl_module --with-http_realip_module make make install
- Ejecute el siguiente comando para abrir el archivo nginx.conf:
vi /path/server/nginx/conf/nginx.conf
- Agregue nuevos campos e información al final de la siguiente información de configuración:
Agregue la siguiente información en http o server:
set_real_ip_from 100.125.0.0/16; real_ip_header X-Forwarded-For;
Figura 2 Adición de información
Agregue el rango de direcciones IP del servidor proxy después de set_real_ip_from <IP_address>.
- Balanceadores de carga compartidos: 100.125.0.0/16 y el rango de direcciones IP utilizado por el servicio AAD. Los balanceadores de carga utilizan direcciones IP en 100.125.0.0/16 para comunicarse con servidores backend, y no hay riesgos de seguridad. Utilice la coma (,) para separar varias entradas.
- Balanceadores de carga dedicados: bloque CIDR de la subred donde reside el balanceador de carga
- Inicie Nginx.
/path/server/nginx/sbin/nginx
- Obtenga la dirección IP real del cliente de los registros de acceso de Nginx.
cat /path/server/nginx/logs/access.log
Servidor de Tomcat
En las siguientes operaciones, la ruta de instalación de Tomcat es /usr/tomcat/tomcat8/.
- Inicie sesión en un servidor en el que Tomcat está instalado.
- Compruebe si Tomcat está funcionando correctamente.
ps -ef|grep tomcat netstat -anpt|grep java
Figura 3 Tomcat funcionando correctamente
- Modifique className="org.apache.catalina.valves.AccessLogValve" en el archivo server.xml de la siguiente manera:
vim /usr/tomcat/tomcat8/conf/server.xml
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%{X-FORWARDED-FOR}i %l %u %t %r %s %b %D %q %{User-Agent}i %T" resolveHosts="false" />
Figura 4 Ejemplo de configuración
- Reinicie el servicio de Tomcat.
cd /usr/tomcat/tomcat8/bin && sh shutdown.sh && sh startup.sh
/usr/tomcat/tomcat8/ es donde Tomcat está instalado. Cámbielo en función de los requisitos del sitio.
Figura 5 Reiniciar el servicio de Tomcat
- Consulte los logs más recientes.
Como se destaca en la siguiente figura, las direcciones IP que no están en el intervalo de direcciones IP que comienza con 100.125 son las direcciones IP de origen.
cd /usr/tomcat/tomcat8/logs/ cat localhost_access_log..2021-11-29.txt
En este comando, localhost_access_log..2021-11-29.txt indica la ruta de log del día actual. Cámbielo en función de los requisitos del sitio.
Figura 6 Consultar la dirección IP de origen
Windows Server con IIS desplegado
El siguiente ejemplo utiliza Windows Server 2012 con IIS7 para describir cómo obtener la dirección IP de origen.
- Descargue e instale IIS.
- Descargue el complemento F5XForwardedFor.dll y copie los complementos de los directorios x86 y x64 a un directorio para el que IIS tenga el permiso de acceso, por ejemplo, C:\F5XForwardedFor2008.
- Abra el Server Manager y elija Modules > Configure Native Modules.
Figura 7 Selección de módulos
Figura 8 Configurar módulos nativos
- Haga clic en Register para registrar los complementos x86 y x64.
Figura 9 Registro de complementos
- En el cuadro de diálogo Modules, compruebe que los complementos registrados se muestran en la lista.
Figura 10 Confirmación de la inscripción
- Seleccione ISAPI Filters en la página principal del Server Manager y autorice dos complementos para ejecutar extensiones ISAPI y CGI.
Figura 11 Adición de autorización
- Seleccione ISAPI and CGI Restriction para establecer el permiso de ejecución para los dos complementos.
Figura 12 Permitir que los complementos se ejecuten
- Haga clic en Restart en la página de inicio para reiniciar IIS. La configuración tendrá efecto después del reinicio.
Figura 13 Reinicio de IIS
Balanceo de carga de capa 4
For load balancing at Layer 4 (TCP or UDP listeners), use either of the following methods to obtain the real IP address of a client:
- Método 1 (para oyentes de TCP o de UDP): Habilitar Transfer Client IP Address.
- Después de habilitar esta función, el tráfico, tal como el tráfico de descarga unidireccional o push, puede interrumpirse cuando los servidores backend se están migrando durante la migración del balanceador de carga clásico asociado. Después de migrar los servidores backend, retransmita los paquetes para restaurar el tráfico.
- Una vez habilitada esta función, los servidores backend asociados no se pueden utilizar como clientes para acceder al oyente.
- Si un servidor backend se ha asociado con el oyente y las comprobaciones de estado están habilitadas, al activar esta función se comprobará el estado del servidor backend, y el tráfico a este servidor se interrumpirá durante dos intervalos de comprobación de estado.
- Realice los siguientes pasos para habilitar la función:
- Inicie sesión en la consola de gestión.
- En la esquina superior izquierda de la página, haga clic en y seleccione la región y el proyecto deseados.
- Pase el ratón sobre en la esquina superior izquierda para mostrar Service List y elija Networking > Elastic Load Balance.
- En la lista del balanceador de carga, haga clic en el nombre del balanceador de carga.
- Haga clic en Listeners.
- Para agregar un oyente, haga clic en Add Listener.
- Para modificar un oyente, localice el oyente, haga clic en a la derecha de su nombre y haga clic en Modify Listener. En el cuadro de diálogo Modify Listener, modifique los parámetros según sea necesario.
- Habilite Transfer Client IP Address.
- Configure grupos de seguridad, ACL de red y políticas de seguridad de SO y software para que las direcciones IP de los clientes puedan acceder a estos servidores backend.
Si habilita esta función, un servidor no puede servir como servidor backend y como cliente. Si el cliente y el servidor backend usan el mismo servidor y la opción Transfer Client IP Address está habilitada, el servidor backend pensará que el paquete del cliente se envía por sí mismo y no devolverá un paquete de respuesta al balanceador de carga. Como resultado, el tráfico de retorno se interrumpirá.
- Método 2 (para oyentes de TCP): Configurar el complemento de TOA.
Los oyentes de TCP requieren el complemento de TOA para obtener direcciones IP reales. Para obtener más información, consulte Configuración del complemento de TOA.