¿Existe una API de Java que identificará la dirección IPv6 :: FD00 como locales / privado?

CraigF:

Busco una API de Java que identifique correctamente si una determinada dirección IP es privada o local. Este código parece funcionar para la mayoría de IPv4 IPv6 / direcciones:

    boolean isLocalIp = InetAddress.getByName(ipAddr).isSiteLocalAddress() ||
                        InetAddress.getByName(ipAddr).isLinkLocalAddress() ||
                        InetAddress.getByName(ipAddr).isLoopbackAddress() ;

En particular, se identifica "fec0 ::" como una dirección local de tipo / privado, pero no se identifica, por ejemplo, "FC00 ::" o "FD00 ::" como las direcciones locales de tipo / privada.

En cuanto a este enlace de Wikipedia https://en.wikipedia.org/wiki/Private_network#IPv6 :

El bloque de direcciones FC00 :: / 7 está reservado por la IANA para las direcciones locales y únicas (ULA). [2] Son las direcciones unicast, pero contienen una de 40 bits de números aleatorios en el prefijo de enrutamiento para evitar colisiones cuando se interconectan dos redes privadas. A pesar de ser inherentemente local en uso, el alcance de la dirección IPv6 las direcciones locales únicas es global.

El primer bloque definido es FD00 :: / 8, diseñado para / 48 bloques de enrutamiento, en el que los usuarios pueden crear varias subredes, según sea necesario.

cualquier ayuda lata con la explicación de si hay alguna suposición falsa aquí (por ejemplo, que "FC00 ::" o "FD00 ::" deberá ser identificado como una dirección local IPv6 / privada) o si hay alguna otra API de Java que identificará correctamente todos direcciones IP locales / privado?

Gracias por cualquier comentario / respuestas!

John Bollinger:

¿Alguien puede ayudar a explicar si existe alguna suposición falsa aquí (por ejemplo, que "FC00 ::" o "FD00 ::" deberá ser identificado como una dirección local IPv6 / privado)

Las direcciones de esos bloques no están destinados a ser llevados fuera un único dominio administrativo, pero el término "dirección local" significa algo mucho más específico. Ese término ahora-obsoleto se refiere específicamente al bloque fec0 :: / 10.

Direcciones en el bloque FC00 :: / 7 son "direcciones locales únicas" que no se garantiza que sea único a nivel mundial, pero no son de enlace local, ya que se permiten para ser transferido entre diferentes dominios de difusión.

o si hay alguna otra API de Java que identificar correctamente todas las direcciones IP locales / privado?

Miré brevemente InetAddress.isAnyLocalAddress(), pero no parecen sus documentos para que coincida con lo que estás tratando de hacer. No se ve como la biblioteca estándar tiene un método tal disposición.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=176315&siteId=1
Recomendado
Clasificación