]
John Bailey reassigned AS7-3017:
--------------------------------
Assignee: (was: John Bailey)
IPv6: Incorrect address binding in pure IPv6 environment (= not dual
network stacks!) - several cases
-----------------------------------------------------------------------------------------------------
Key: AS7-3017
URL:
https://issues.jboss.org/browse/AS7-3017
Project: Application Server 7
Issue Type: Bug
Components: JMX, Remoting, Server, Web
Affects Versions: 7.1.0.Beta1b
Reporter: Pavel Janousek
Priority: Blocker
Fix For: No Release
There are many problems in IPv6 area, I've been trying gradually to identify and
describe them. This is the first one major description of them from the beginning. It is
real blocker (correct address binding as specified in cfg/command line) for other testing
until it will be correctly resolved.
The one root of problems is actual implementation of working with IPv6 address. IP
address setting (e.g. in XML cfg) as 127.0.0.1 is +totally+ useless in IPv6 environment
(it has its own *incompatible* ekvivalent - _::1_). The default behavior of AS7 is IPv6
disabled at all, so user should be forced to *reconfigure* his instance of AS7 to run it
in pure IPv6 network stack only (the are also missing some document described this process
yet!).
So one issue is when AS7 instance is bring up with default configuration (distributed
standalone.xml), but in only IPv6 network environment available only like:
{code}
bin/standalone.sh -Djava.net.preferIPv4Stack=false
{code}
It uses configured address 127.0.0.1 (default from standalone.xml if key
_jboss.bind.address_ isn't defined) as binding point which it could try to use. It is
bad and should be avoided, because 127.0.0.1 isn't +valid IPv6 address+, nor allowed
IPv6 address format specification (see [RFC
5952|http://tools.ietf.org/html/rfc5952]), and
note - IPv4-Compatible IPv6 Address are deprecated (see [RFC 4291 section
2.5.1.1|http://tools.ietf.org/html/rfc4291#section-2.5.5]). Only one possibility is
allowed now - IPv4-Mapped IPv6 Address, but it has it's own format and regulary
defined address space, also it doesn't make sense to use it in pure IPv6 environment.
*So conclusion - a such address setting (127.0.0.1) in pure IPv6 environment is
miss-configuration error at all and starting AS7 instance in this case should only report
valid error message about what happens and end itself, not trying to do with a such
address format anything - nor convert to other address format, nor use its own inside
logic (convert to ::ffff:<IPv4>) etc..*
This error relates to other one - produced log contains nonsense messages
as:{code}12:59:31,222 INFO [org.jboss.as.remoting] (MSC service thread 1-2) Listening on
localhost.localdomain/127.0.0.1:4447
{code} even though it is bound and listening only on _::ffff:127.0.0.1:4447_.
----
The next one error-ed case is invalid bounding to specified IPv6 address when this IP
setting includes _zone id_ identified. But not in every case - for ex. ::1%lo produces
correct binding at all (_::1:3528_ too), but _fe80::200:ff:fe00:1%p2p1_ (link-local IPv6
address of network interface p2p1) produces binding issue - _:::3528_.
Warning: In multiple homed servers (= server with several physical network
interfaces/network cards) it is possible to have more than one network interface with the
*same* IPv6 address (compare to IPv4 world where this case isn't possible) - IPv6 link
local address is unique only on link and so the setting needs to include network
identifier (network interface name or its index) - every networked AS7 component has to
accommodate this setting and produces correct binding.
----
The other one case is derived from the first example - invocation as:
{code}./standalone.sh -Djava.net.preferIPv4Stack=false -Djboss.bind.address=::1{code}
So the admin/management is binded to _::ffff:127.0.0.1:9990_ and _::ffff:127.0.0.1:9999_,
but it isn't accessible from WelcomePage at _::1:8080_ because the URL is specified
as: {code}<a href="/console">{code} and so the next request is
http://[::1]:8080/console which redirect requester to http://[::1]:9990, but there
isn't any console because it is here - http://[::ffff:127.0.0.1]:9990.
This is not good as it could lead to integration issues between components (X trying to
connect to Y on ::1; Y listening on ::ffff:127.0.0.1).
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: