Получите IP-адрес клиента с сервера балансировки нагрузки с помощью X-Forwarded-For

У меня есть приложение MVC на сервере балансировки нагрузки, и я хочу установить реальный IP-адрес клиента. Я добавил «X-Forwarded-For» в настраиваемый заголовок и использовал код С # .net, как показано ниже, чтобы получить IP-адрес, но он возвращает значение null. Пожалуйста, помогите мне, как я могу проверить или как я могу это сделать. Спасибо.

Добавить собственный заголовок:

Response.AddHeader("X-Forwarded-For", "client1, proxy1, proxy2");

С # .net код:

string IP_REMOTE_ADDR = string.Empty;
string IP_HTTP_X_FORWARDED_FOR = string.Empty;
string RETURN_IP = string.Empty;

IP_REMOTE_ADDR = string.IsNullOrEmpty(System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]) ? "" : System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
IP_HTTP_X_FORWARDED_FOR = string.IsNullOrEmpty(System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]) ? "" : System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

if (IP_HTTP_X_FORWARDED_FOR != "")
{
    RETURN_IP = IP_HTTP_X_FORWARDED_FOR;
    if (RETURN_IP.Contains(","))
    {
        RETURN_IP = RETURN_IP.Split(',')[0];
    }
}
else
{
    if(IP_REMOTE_ADDR != "")
    {
        RETURN_IP = IP_REMOTE_ADDR;
    }
    else
    {
        RETURN_IP = "";
    }
}

return RETURN_IP;

person ตอ เอ๋ย ตอเตย    schedule 18.10.2017    source источник
comment
Может быть, я запутался, если вы сидите за балансировкой нагрузки, как вы можете добавить настраиваемый заголовок клиенту, чтобы получить корневой IP-адрес. Добавление этого заголовка должно контролироваться самим балансировщиком нагрузки. И даже если вы получите этот исходный адрес, как вы узнаете, что это не адрес прокси на клиенте, а не исходный IP-адрес?   -  person Fran    schedule 18.10.2017
comment
Я использую поставщика сервера балансировки нагрузки, они сказали мне, что другой клиент может правильно получить IP-адрес клиента, и они советуют мне использовать метод в качестве моего вопроса, но это не работает. Поэтому я думаю, что, возможно, это неправильно из-за моего приложения, а не сервера, но я не знаю, что не так.   -  person ตอ เอ๋ย ตอเตย    schedule 19.10.2017