перенаправление портов xinetd заставляет HttpServletRequest.getRemoteAddr () всегда возвращаться 127.0.0.1

Мы пытаемся определить, куда определенные запросы прибывают из нашего JAVA-приложения. Мы изменили файлы журнала для включения IP-адреса, и мы используем httpServletRequest.getRemoteAddr() получить тот удаленный адрес.

При использовании xinetd для передачи внешних запросов на порте 443 к внутреннему порту наш сервер приложений слушает на (например, 8999), getRemoteAddr() всегда возвраты 127.0.0.1. Если мы удаляем xinetd из стека, мы получаем корректный адрес.

Обратите внимание что X-Forwarded-For заголовок не становится заполненным также.

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

Наша установка:

service https
{
    disable = no
    flags = REUSE
    socket_type = stream
    wait = no
    user = root
    port = 443
    protocol = tcp
    redirect = localhost 8999
    log_on_failure += USERID
}
0
задан 21 April 2015 в 21:00
2 ответа

Короткий ответ - нет.

Длинный ответ, ваше приложение java видит только сервер xinetd с localhost.

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

По-видимому, та же проблема: tomcat6 за xinetd - реальный IP-адрес клиента

1
ответ дан 4 December 2019 в 16:58

Ваш серверный стек может быть ошибочным или устаревшим. На моем сервере (3.19.0-41-generic 14.04.2-Ubuntu, xinetd 2.3.15 libwrap loadavg) xinetd делает пересылку необходимого заголовка без проблем. Я бы предложил обновить серверный стек. Вы можете получить xinetd версию с помощью

xinetd -version

Также проверьте, правильно ли вы настроили RemoveIpValve в Tomcat. Для такой конфигурации, как ваша, conf/server.xml должен содержать что-то вроде

<Engine name="Catalina" defaultHost="localhost">
  <Valve className="org.apache.catalina.valves.RemoteIpValve"
    remoteIpProxiesHeader="x-forwarded-by"
    remoteIpHeader="x-forwarded-for"
    internalProxies="127\.0\.0\.1" 
    protocolHeader="x-forwarded-proto" />      
0
ответ дан 4 December 2019 в 16:58

Теги

Похожие вопросы