Le renvoi de port xinetd provoque HttpServletRequest.getRemoteAddr () pour toujours returnner 127.0.0.1

Nous essayons d'identifier les requests spécifiques provenant de notre application Java. Nous avons modifié les files journaux pour inclure l'adresse IP et nous utilisons httpServletRequest.getRemoteAddr() pour get cette adresse distante.

Lorsque vous utilisez xinetd pour transférer des requêtes externes sur le port 443 vers un port interne, notre server d'applications écoute (par ex. 8999), getRemoteAddr() renvoie toujours 127.0.0.1. Si nous supprimons xinetd de la stack, nous obtenons l'adresse correcte.

Notez que l'en X-Forwarded-For tête X-Forwarded-For n'est pas rempli non plus.

Existe-t-il un moyen de continuer à utiliser xinetd pour passer en avant sans que cela efface l'adresse IP du requestur?

Notre configuration:

 service https { disable = no flags = REUSE socket_type = stream wait = no user = root port = 443 protocol = tcp redirect = localhost 8999 log_on_failure += USERID } 

La réponse courte est non.

La réponse longue, votre application java, affiche simplement le server xinetd depuis localhost.

Cela ne peut pas être fait par xinetd seul. Utilisez un server proxy pour get les fonctionnalités complètes des en-têtes et etc.

Apparemment, c'est le même problème: tomcat6 derrière xinetd – vrai client ip

Votre stack server peut être buggy ou obsolète. Sur mon server (3.19.0-41-generic 14.04.2-Ubuntu, xinetd 2.3.15 libwrap loadavg) xinetd renvoie l'en-tête requirejs sans problème. Je proposerais de mettre à niveau la stack du server. Vous pouvez get la version xinetd avec

 xinetd -version 

Vérifiez également si vous avez configuré correctement RemoveIpValve sur Tomcat. Pour la configuration comme la vôtre, conf / server.xml devrait contenir quelque chose comme

 <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" />