Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #27502 > unrolled thread

cannot access host from outside with Private IP and Public IP in java

Started byxeon Mailinglist <xeonmailinglist@gmail.com>
First post2014-02-13 14:35 -0800
Last post2014-02-14 14:40 +0000
Articles 4 — 4 participants

Back to article view | Back to comp.lang.java.programmer


Contents

  cannot access host from outside with Private IP and Public IP in java xeon Mailinglist <xeonmailinglist@gmail.com> - 2014-02-13 14:35 -0800
    Re: cannot access host from outside with Private IP and Public IP in java Joerg Meier <joergmmeier@arcor.de> - 2014-02-14 00:53 +0100
    Re: cannot access host from outside with Private IP and Public IP in java Arne Vajhøj <arne@vajhoej.dk> - 2014-02-13 20:59 -0500
      Re: cannot access host from outside with Private IP and Public IP in java Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2014-02-14 14:40 +0000

#27502 — cannot access host from outside with Private IP and Public IP in java

Fromxeon Mailinglist <xeonmailinglist@gmail.com>
Date2014-02-13 14:35 -0800
Subjectcannot access host from outside with Private IP and Public IP in java
Message-ID<eab539eb-e7f1-4a7c-8d89-404136ec2d65@googlegroups.com>
n a Linux OS, when a program get the IP address with "getHostAddress()". it gets the first IP address available. 
In a host with 2 interfaces, eth0 and eth1, the method will get the eth0 IP address by default. 

I have a host that is behind a NAT, and I cannot change the host IP addresses, or the order of the interfaces. 
In the host, eth0 is a private address, and in eth1 is an address that NAT knows. 
If I want to reach the host from outside, I connect to an IP that NAT will translate into the address of eth1. 

I need to use the private IP address to run a java service (Hadoop MapReduce) correctly, and not the eth1 address. 
I tried to set Hadoop with the eth1 address but the service won't run giving me a not allowed exception. 

1 - Now I want to contact the Hadoop service that is running behind the NAT from the internet, and the service is registered with the private address. Is it possible to reach that node? 

2 - If I could bind eth1 to the java service, I could reach the host from outside? 

3 - If I could update the NAT table with the private address of the host, I could already reach the host from outside? 

[toc] | [next] | [standalone]


#27503

FromJoerg Meier <joergmmeier@arcor.de>
Date2014-02-14 00:53 +0100
Message-ID<1xi6aryi65mgi$.1cebcmnq0xcr3.dlg@40tude.net>
In reply to#27502
On Thu, 13 Feb 2014 14:35:46 -0800 (PST), xeon Mailinglist wrote:

> n a Linux OS, when a program get the IP address with "getHostAddress()". it gets the first IP address available. 
> In a host with 2 interfaces, eth0 and eth1, the method will get the eth0 IP address by default. 

While I cannot help you with that at all with practical advice, it occured
to me that there is really no way that this issue is not already solved for
producs such as Tomcat or Glassfish, both of which are open source. Maybe
you can find an answer there.

Liebe Gruesse,
		Joerg

-- 
Ich lese meine Emails nicht, replies to Email bleiben also leider
ungelesen.

[toc] | [prev] | [next] | [standalone]


#27504

FromArne Vajhøj <arne@vajhoej.dk>
Date2014-02-13 20:59 -0500
Message-ID<52fd7891$0$293$14726298@news.sunsite.dk>
In reply to#27502
On 2/13/2014 5:35 PM, xeon Mailinglist wrote:
> n a Linux OS, when a program get the IP address with "getHostAddress()". it gets the first IP address available.
> In a host with 2 interfaces, eth0 and eth1, the method will get the eth0 IP address by default.
>
> I have a host that is behind a NAT, and I cannot change the host IP addresses, or the order of the interfaces.
> In the host, eth0 is a private address, and in eth1 is an address that NAT knows.
> If I want to reach the host from outside, I connect to an IP that NAT will translate into the address of eth1.
>
> I need to use the private IP address to run a java service (Hadoop MapReduce) correctly, and not the eth1 address.
> I tried to set Hadoop with the eth1 address but the service won't run giving me a not allowed exception.
>
> 1 - Now I want to contact the Hadoop service that is running behind the NAT from the internet, and the service is registered with the private address. Is it possible to reach that node?
>
> 2 - If I could bind eth1 to the java service, I could reach the host from outside?
>
> 3 - If I could update the NAT table with the private address of the host, I could already reach the host from outside?

I think that the right solution is to have the service listen on the
eth1 IP address.

So I recommend that you investigate the "but the service won't run
giving me a not allowed exception".

Arne

[toc] | [prev] | [next] | [standalone]


#27507

FromAndreas Leitgeb <avl@gamma.logic.tuwien.ac.at>
Date2014-02-14 14:40 +0000
Message-ID<slrnlfsam8.ngg.avl@gamma.logic.tuwien.ac.at>
In reply to#27504
Arne Vajhøj <arne@vajhoej.dk> wrote:
> On 2/13/2014 5:35 PM, xeon Mailinglist wrote:
>> n a Linux OS, when a program get the IP address with "getHostAddress()". it gets the first IP address available.
>> In a host with 2 interfaces, eth0 and eth1, the method will get the eth0 IP address by default.
>> I have a host that is behind a NAT, and I cannot change the host IP addresses, or the order of the interfaces.
>> In the host, eth0 is a private address, and in eth1 is an address that NAT knows.
>> If I want to reach the host from outside, I connect to an IP that NAT will translate into the address of eth1.
>> I need to use the private IP address to run a java service (Hadoop MapReduce) correctly, and not the eth1 address.
>> I tried to set Hadoop with the eth1 address but the service won't run giving me a not allowed exception.
>> 1 - Now I want to contact the Hadoop service that is running behind the NAT from the internet,
>      and the service is registered with the private address. Is it possible to reach that node?
>> 2 - If I could bind eth1 to the java service, I could reach the host from outside?
>> 3 - If I could update the NAT table with the private address of the host, I could already reach the host from outside?
> I think that the right solution is to have the service listen on the
> eth1 IP address.
> So I recommend that you investigate the "but the service won't run
> giving me a not allowed exception".

I agree with Arne and want to add, that if for some reason your Java app
needs to know the name by which external clients will be able to connect
to it, then there is "almost" no way other than have that external name
configured somewhere in the app.

"almost"? Well, I don't know exactly about "upnp", but there might be a
way involving upnp if your NAT'ing router allows it.

The "not allowed" exception likely results from trying to bind to an
address that the linux box doesn't itself "know" as its own. You really
need to to have your application bind to the eth1's address in your scenario.
Beyond that, either read up on upnp or just allow the external address
(the one that would be given to clients) to be manually configured.

[toc] | [prev] | [standalone]


Back to top | Article view | comp.lang.java.programmer


csiph-web