Не удается получить IP-адрес пользователя (прокси / брандмауэр / балансировщик нагрузки) - PullRequest
6 голосов
/ 16 мая 2011

Я использовал приведенный ниже код для получения клиентского ip с asp.net, но после перехода на VDS эта функция начинает возвращать только маску подсети 178.18.198.1 или 178.18.198.2. Кто-нибудь может мне помочь с этой проблемой?

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

EDIT

Найдена похожая проблема здесь :

развернуто много 2008 32 бит стандартные веб-серверы, использующие citrix netscaler isapi (netscaler, являющийся балансировщик нагрузки), во всех случаях IP-адрес клиента зарегистрирован в стандартные журналы IIS. На новом проекте я попросили развернуть 2008 R2, настроил IIS 7.5 идентично как я настраивал IIS 7.0 в прошлом, на этот раз клиент ip возвращая адрес балансировщика нагрузки в журналы. Вот странная часть, я установлена ​​"расширенная регистрация" и она показывает IP-адрес клиента правильно, поэтому Исапи делает свое работа. Погуглил этого до смерти и мог бы использовать некоторые советы.

Я также нашел модуль ISAPI Filter, но не могу заставить его работать: devcentral.f5.com / x_forwarded_for_log_filter_for_windows_servers

Ответы [ 2 ]

4 голосов
/ 18 мая 2011

Проблема решена путем использования HTTP_CLIENT_IP вместо REMOTE_ADDR в файлах исходного кода.

Проблема с журналами IIS была решена путем установки модуля IIS Advanced Logging, как предложено здесь . Также я получил ошибку «503: Служба недоступна» после установки расширенного ведения журнала, но решил эту проблему, предоставив всем пользователям права на чтение и запись для папки Program Files \ IIS и запустив пулы сбойных приложений.

http://kb.parallels.com/6735

Другое предлагаемое решение здесь :

На NetScaler под "нагрузкой" балансировка »,« Услуги », то под расширенная вкладка, в настройках, проверьте поле для «Использовать исходный IP» и «IP-адрес клиента» затем в поле «Заголовок» "КЛИЕНТ-IP"

0 голосов
/ 16 мая 2011

Я использую

IP.Text = Request.UserHostAddress;

В C #. Это работает для вас?

...