Как получить IP-адрес посетителя на машине балансировки нагрузки, используя asp.net - PullRequest
4 голосов
/ 25 марта 2010

У нас есть два сервера балансировки нагрузки. Так как мы разместили приложение asp.net 3.5 прямо сейчас, мы используем запрос userhostaddress, чтобы получить ip посетителя, но он дает ip балансировщика нагрузки вместо реального ip. Может кто-нибудь иметь код для этого.

Ответы [ 3 ]

8 голосов
/ 25 марта 2010

Я думаю, что вы должны искать не только HTTP_X_FORWARDED_FOR, но и все остальное, отклоняйте баланс нагрузки, используя

Context.Request.ServerVariables[CheckAllBelowList]

"HTTP_X_COMING_FROM",
"HTTP_X_FORWARDED_FOR",
"HTTP_X_FORWARDED",
"HTTP_VIA",
"HTTP_COMING_FROM",
"HTTP_FORWARDED_FOR",
"HTTP_FORWARDED",
"HTTP_FROM",
"HTTP_PROXY_CONNECTION",
"HTTP_CLIENT_IP",
"CLIENT_IP",
"FORWARDED",

Возвращение одного из них - фактический IP-адрес вашего клиента, за исключением случаев, когда используется другой прокси, мне также нужно узнать, как кто-то может получить это, чтобы найти пользователя, который находится за 2-3 прокси ...

Если вы знаете что-нибудь другое, пожалуйста, скажите мне об этом.

1 голос
/ 25 марта 2010

В зависимости от сервера балансировки нагрузки IP-адрес клиента может / должен быть записан на:

Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

Но будьте осторожны, если пользователь также находится за прокси-сервером, значение может быть исходным клиентом прокси, а не клиентом балансировщика нагрузки (в данном случае это будет IP-адрес прокси). Я не уверен, что поведение "нормальное".

Надеюсь, это поможет, Alex

1 голос
/ 25 марта 2010

Проблема больше связана с тем, что «балансировщик нагрузки» действует как прокси. Какой тип балансировки нагрузки вы используете? Я знаю, что на сервере Microsoft ISA есть настройка для передачи IP-адреса оригинального пользователя через веб-сервер.

В противном случае вам придется написать страницу для выгрузки серверных переменных и посмотреть, будет ли добавлена ​​дополнительная серверная переменная, которая дает вам реальный IP-адрес клиента.

...