2011-05-16 15 views
6

Utilicé el código siguiente para obtener la ip del cliente con asp.net antes, pero después de moverme a VDS esta función comienza a devolver solo la máscara de subred 178.18.198.1 o 178.18 .198.2. ¿Alguien me puede ayudar con este problema?No se puede obtener la dirección IP del usuario (proxy/firewall/equilibrador de carga)

Private Function GetIPAddress() As String 
    Dim sIPAddress As String = Nothing 
    sIPAddress = Request.ServerVariables("HTTP_X_FORWARDED_FOR") 

    If String.IsNullOrEmpty(sIPAddress) Then 
     sIPAddress = Request.ServerVariables("REMOTE_ADDR") 
    End If 

    Return sIPAddress 
End Function 

EDITAR

encontrado problema similar here:

han desplegado muchos 2008 32 bit servidores web estándar utilizando el isapi NetScaler Citrix (el NetScaler ser un equilibrador carga) En todos los casos, la dirección IP del cliente se registra en los registros IIS estándar . En un nuevo proyecto que pidieron que desplegar 2008 R2, configurado IIS 7.5 de forma idéntica con cómo he configurado IIS 7.0 en el pasado, esta vez sin embargo la IP del cliente es devolver la dirección de equilibrador de carga en los registros. Aquí está la parte extraña, I instalado "registro avanzado" y es que muestra la dirección IP del cliente correctamente, por lo que el isapi está haciendo su trabajo . Ha buscado en Google este a la muerte y podría usar algunos consejos.

También encontré módulo de filtro ISAPI, pero no puedo hacer que funcione: devcentral.f5.com/x_forwarded_for_log_filter_for_windows_servers

+0

Entendí que HTTP_CLIENT_IP devuelve mi dirección IP correcta, pero ¿por qué este código no funciona como el anterior? –

+0

Un módulo de terceros, escrito por uno de los arquitectos de F5 https://devcentral.f5.com/articles/x-forwarded-for-http-module-for-iis7-source-included#.UdrYQ6TD9mM – Kiquenet

+0

'IIS7/8 : Registrando la dirección IP del cliente real en los registros de acceso de IIS'' https: //blogs.iis.net/deanc/iis7-8-logging-the-real-client-ip-in-the-iis-hit-logs *** Opciones ***: _Advanced Logging, ARR, F5 Module_ – Kiquenet

Respuesta

4

Problema resuelto al usar HTTP_CLIENT_IP en lugar de REMOTE_ADDR en los archivos de código fuente.

El problema sobre los registros de IIS se resolvió instalando el módulo de registro avanzado de IIS como se sugiere here. También recibí el error "503: Servicio no disponible" después de instalar el registro avanzado, pero lo solucioné al otorgar permisos de lectura y escritura a Todos para archivos de programa \ carpeta IIS y comencé los grupos de aplicaciones fallidos.

http://kb.parallels.com/6735

Otra solución sugerida here es:

Por NetScaler en "carga equilibrio", "Servicios" y luego en la pestaña avanzada , en Configuración, compruebe la casilla " Use Source IP "y " Client IP "y luego en el campo Encabezado " CLIENT-IP "

+0

http://kb.parallels.com/6735 redirigir a http://kb.plesk.com/es/6735, y no se encuentra – Kiquenet

+0

Útil sobre *** Registro avanzado *** _1) _ https://www.iis.net/downloads/microsoft/advanced-logging _2) _ http://www.loadbalancer.org/blog/iis-and-x-forwarded-for-header _3) _ https://www.iis.net/learn/get-started/whats-new-in-iis -85/enhanced-logging-for-iis85 – Kiquenet

0

utilizo

IP.Text = Request.UserHostAddress; 

En C#. Eso funciona para ti?

+0

No devuelve la misma dirección: 178.18.198.2 –

+0

Esto funciona bien para mí, parece más un problema de infraestructura – Pleun

+0

Pregunta hecha en serverfault, espero que el problema resuelva: http://serverfault.com/questions/270751/server-records-wrong-ips –

Cuestiones relacionadas