Не удается получить IP-адрес пользователя (прокси / брандмауэр / балансировщик нагрузки)
я использовал код ниже, чтобы получить 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
редактировать
найдена аналогичная проблема здесь:
развернули много 2008 32 бит стандартные веб-серверы, использующие citrix netscaler isapi (netscaler является балансировщик нагрузки), во всех дела IP-адрес клиента регистрируется в стандартные журналы IIS. О новом проекте I попросили развернуть 2008 R2 с, настроенный IIS 7.5 идентично с как я настроил IIS 7.0 в прошлом, однако на этот раз клиент ИС возврат адреса балансировщика нагрузки в бревно. Вот что странно, я установлен "расширенный журнал", и это отображение IP-адреса клиента правильно, поэтому isapi делает свое работа. Погуглили это до смерти и мог бы использовать некоторые консультация.
Я также нашел модуль фильтра ISAPI, но не могу заставить его работать:devcentral.f5.com/x_forwarded_for_log_filter_for_windows_servers
2 ответов
проблема решена с помощью HTTP_CLIENT_IP вместо REMOTE_ADDR в файлах исходного кода.
проблема с журналами IIS была решена путем установки модуля расширенного ведения журнала IIS, как было предложено здесь. Также я получил ошибку "503: служба недоступна" после установки расширенного ведения журнала, но решил это, предоставив разрешения на чтение-запись всем для папки Program Files\IIS и запустил неудачное приложение бассейны.
другое решение предложил здесь - это:
на NetScaler в разделе " Загрузка балансировка", "услуги", а затем под вкладке Дополнительно в разделе параметры проверки поле для "использовать исходный IP" и "Клиентский IP" затем в поле заголовка "КЛИЕНТ-IP"