[Standards] NEW: XEP-0279 (Server IP Check)
Kurt.Zeilenga at Isode.com
Thu Mar 11 22:59:22 UTC 2010
So, the spec begins with:
> There are times when a client might want or need to discover what its external Internet Protocol (IP) address is, e.g. when gathering transport candidates for SOCKS5 Bytestreams  or Jingle ICE-UDP Transport Method . One way to do so is for the client to ask the XMPP server to which it has connected. This simple specification defines such a method. The information provided by the server cannot necessarily be relied upon because there might be intermediate entities between the client and the server, but if the IP address returned by the server is different from the client's notion of its IP address then at the very least the client has received a hint that it might be behind a network address translator (NAT) and therefore cannot usefully provide its private IP address as a candidate for use in multimedia negotiations.
If the server returns an IP address different that the client's notion of its IP address then the client might take this to be a hint that there is an intermediate system between the client and server. However, this hint doesn't hint at all where in between the client and server that intermediate system might be. A client which takes the difference in IP address from that of its server as an indication that IP address cannot be usefully provided as as candidate in multimedia negotiations could just have prevented use of their globally routable address from being used as a candidate.
And when there is no difference, this should not be taken to mean that the client's IP is globally routable address. Both the client and server could be communicating via privately routed addresses.
That is, the information returned can never be relied upon for determination of what IP address to use or not use as a candidate.
I think clients would be better used by using other mechanism for discovery of candidate IP addresses for use in multimedia negotiations.
More information about the Standards