Как получить IP посетителя на машине балансировки нагрузки с помощью asp.net

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


person Jalpesh Vadgama    schedule 25.03.2010    source источник


Ответы (3)


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

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

person David McEwing    schedule 25.03.2010
comment
Как я могу сделать это со страницей? Мы проверили все переменные, но реального ip там нет. - person Jalpesh Vadgama; 31.03.2010
comment
Вот простая страница ASP.NET, которая выгружает все переменные сервера: weblogs.asp.net/owscott/viewing-all-server-variables-for-a-site, но вы также можете включить трассировку в ASP.NET, чтобы показывать множество подобных вещей на любой странице msdn.microsoft.com/en-us/library/94c55d08.aspx - person Matthew Lock; 24.11.2014

Я думаю, что вы должны искать не только 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 прокси ...

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

person Aristos    schedule 25.03.2010

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

Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

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

Надеюсь, это поможет, Алекс

person Alex Duggleby    schedule 25.03.2010