.Net Core 5 API продолжает возвращать один и тот же IP-адрес

В моем .net core 5 API мне нужно получить удаленный IP-адрес из запроса. На моем тестовом сервере работает нормально. Проверял несколько раз из разных сетей.

НО

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

Я установил .Net 5 SDK. Я сравнил его с моим сервером и IIS (разные версии IIS, но конфигурация выглядит нормально).

Любые идеи?


person RoyM    schedule 04.02.2021    source источник
comment
Найдите сетевых администраторов и обсудите с ними. Вы не можете просто получить удаленный IP-адрес из самого запроса, так как этот IP-адрес может относиться к обратному прокси-серверу или чему-то промежуточному, а фактический IP-адрес клиента может отображаться в заголовке HTTP.   -  person Lex Li    schedule 05.02.2021
comment
Перед этим проверьте заголовок x-forwarded-for, если он имеет значение, используйте его. Предполагая, что ваш прокси-сервер правильно заполняет это значение.   -  person DavidG    schedule 05.02.2021
comment
Не могли бы вы написать, как вы получаете удаленный IP-адрес?   -  person Charlino    schedule 05.02.2021
comment
Вы пытались вызвать этот API напрямую с этих разных устройств.   -  person Jay    schedule 05.02.2021
comment
@Charlino Несколько месяцев назад это не сработало, но я предполагаю, что недавно произошли некоторые изменения, и теперь все просто: protected IPAddress RemoteIpAddress => HttpContext.Connection.RemoteIpAddress;   -  person RoyM    schedule 05.02.2021


Ответы (2)


Я предполагаю, что у вас есть среда LB. Так что, скорее всего, вы получаете LB IP. Если это так. вы должны настроить LB, чтобы разрешить передачу заголовков HTTP во внутренние запросы. Особенно, если вы используете внутреннее направление HTTP через DMZ. в основном вы можете полагаться на x-forwarded-for, и прокси-сервер (LB) заполнит его и передаст на ваши внутренние серверы.

person AGM    schedule 05.02.2021

После разговора с моим клиентом, видимо, он знал, что сервер на самом деле находится за NAT (спрашивал его об этом раньше, и он отрицал это ????‍♂️)

person RoyM    schedule 05.02.2021