Hello Joan,

I fear I have to disappoint you. If I understand you correctly you want to
manipulate the packets on the IP level, setting the source ip address to
the ip address of the originator of the packet, similar to what a
loadbalancer would do. It is possible technically, but it's a very
different kind of soup compared to http proxy and really hard to implement
in java, just because native access to the network interface isn't
something java was made for. And since it's not unfamiliar to the attack
vector known as IP Spoofing, it will only work in close distance
(network-wise).  But last time I was programming something on ip leveI is
about 15 years ago, so I may be wrong.

However, you other side, should be able to retrieve the contents of the
X-FORWARDED-FOR header and return it in the getRemoteAddress call to its
application. At least tomcat would do. So the question is, how much access
do you have to your blackbox? If you have access to the machine you could
do it with apache httpd and mod_proxy or mod_proxy_ajp. If not I would ask
the provider of the blackbox, how they handle proxies in general (and if
they do it at all). I they support some kind of proxy behavior, all you
need to do is mimic one, if not... well find another provider ;-)

It sounds a bit like SEO, and there are a lot of SEO providers with better
tech ;-)

regards
Leon


On Wed, Jul 31, 2013 at 9:04 PM, Joan Balagueró Ventus Proxy <
joan.balagu...@ventusproxy.com> wrote:

> Hello,
>
>
>
> I already asked this question to the Apache HttpClient Forum. They don't
> know if this is possible with java/Tomcat.
>
>
>
> I have developed a proxy servlet with an xml cache, running in a Tomcat
> 6.0.37 on Linux Centos6.4.
>
>
>
> When the incoming xml request (sent from an external client) is not found
> in
> the proxy cache, I use HttpClient 4.2.5 to create a new http request and
> redirect it to the provider application servers to get the xml response.
>
>
>
> So far, everything worked ok with all our clients. But now we've a provider
> that needs ip transparency. Then, the request created by httpclient needs
> to
> carry the origin ip address (that from the external client), not the proxy
> ip. My proxy gets correctly the external IP (using
> request.getRemoteAddr()),
> but when the provider application reads the IP provided by the http client
> using request.getRemoteAddr(), they obviously get the proxy IP.
>
>
>
> The provider software is a blackbox, then reading ips with
> 'request.getRemoteAddr()' is something that they cannot change now.
> Therefore, things like adding a 'X-Forwarded-for' header cannot be
> implemented in this scenario.
>
>
>
> Is it possible tot achieve this at  Tomcat level? Has anyone found an
> scenario like this?
>
>
>
> Thanks in advance,
>
> Joan.
>
>

Reply via email to