InetAddress.getAllByName()/getByName() fails to resolve IPv6 via ssh
charis
charis.charitsis at oracle.com
Mon Dec 17 21:55:40 PST 2012
I am facing the following issue:
Say there is a simple standlone code Test.java which just calls
InetAddress.getAllByName() :
*
import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class TestNameResolution {
public static void main(String args[]) {
String name = args[0];
System.out.println("Trying to resolve name \"" + name + "\" to IP
addresses");
try {
InetAddress[] addresses = InetAddress.getAllByName(name);
for (int i = 0; i < addresses.length; i++) {
if (addresses[i] instanceof Inet4Address) {
System.out.println("IPv4 address -->" +
addresses[i].getHostAddress());
}
else if (addresses[i] instanceof Inet6Address) {
System.out.println("IPv6 address -->" +
addresses[i].getHostAddress());
}
}
}
catch (UnknownHostException uhe) {
System.out.println("Cannot resolve name \"" + name + "\"");
}
}
}
*
I run this via a simple single-line script 'run':
*
java -classpath <absolute path of TestNameResolution.class>
TestNameResolution <ipv6-name-to-resolve>
*
When try this locally it resolves the name to its IPv6 address as expected.
However, when from a different machine to execute this via ssh (i.e., ssh
<my machine name> <path to 'run' script>) I often get the following output:
/
Trying to resolve name "<ipv6-name-to-resolve>" to IP addresses
Cannot resolve name "<ipv6-name-to-resolve>"
java.net.UnknownHostException: <ipv6-name-to-resolve>
at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:849)
at
java.net.InetAddress.getAddressFromNameService(InetAddress.java:1202)
at java.net.InetAddress.getAllByName0(InetAddress.java:1153)
at java.net.InetAddress.getAllByName(InetAddress.java:1083)
at java.net.InetAddress.getAllByName(InetAddress.java:1019)
at TestNameResolution.main(TestNameResolution.java:14
/
Note:
- I tried the java command that invokes the standalone also with i)
'-Djava.net.preferIPv6Stack=true' , ii) and
'-Djava.net.preferIPv6Addresses=true' and iii) with both of them at the same
time.
Still, the output is the same
- The same standalone succeeds in resolving a name which maps to IPv4 giving
the same (correct) output on the local and the remote node (where the ssh is
initiated)
Java environment details:
$ java -version
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06)
Is there any known issue with IPv6 name resolution via ssh? Any ideas what
may be causing this?
--
View this message in context: http://nio-dev.3157472.n2.nabble.com/InetAddress-getAllByName-getByName-fails-to-resolve-IPv6-via-ssh-tp7574957.html
Sent from the nio-dev mailing list archive at Nabble.com.
More information about the nio-dev
mailing list