Nuestro team redactor ha estado horas buscando para dar soluciones a tu interrogante, te compartimos la resolución de modo que esperamos servirte de gran apoyo.
Solución:
El número después del ‘%’ es el ID del alcance.
IPv6 define al menos tres alcances de accesibilidad para direcciones:
-
Globalmente direccionable. Esta es una dirección IPv6 que le proporcionó su ISP. Está disponible para su uso en la Internet pública.
-
Enlace local. Esto es similar al rango 169.254.XX. Es una dirección que se asigna a sí misma una computadora para facilitar las comunicaciones locales. Estas direcciones no se enrutan en la Internet pública porque no son únicas a nivel mundial.
-
Nodo-local. Esta es una dirección que identifica la interfaz local, similar a 127.0.0.1. Básicamente, esta es la dirección: 1.
Microsoft ha publicado este artículo que describe el direccionamiento IPv6, que es el artículo menos confuso que encontré. El artículo indica que la presencia de un ID de alcance en su dirección significa que es una dirección local de enlace. También puede saber que es un enlace local porque la dirección comienza con fe80
.
La información clara y de fácil comprensión sobre este tema parece ser poco común, por lo que estoy reuniendo el resto de esto en función de mi mejor comprensión de RFC 4007 y la otra información disponible.
Una computadora puede tener varias direcciones locales de enlace, cada una con un alcance diferente. El ID de alcance indica para qué alcance es la dirección. Por ejemplo, imagine el escenario de una computadora con dos NIC, cada una con una dirección de enlace local en diferentes redes. Si intenta enviar algo a otra dirección que comience con fe80, ¿cómo sabrá la computadora a qué NIC enviar? El ID de alcance parece ser la solución para esto.
Direcciones IPv6 con la prefix fe80 :: / 64 son direcciones de enlace local que se construyen combinando eso prefix con la dirección de hardware del dispositivo de red, 71a3: 2b00: ddd3: 753f en su ejemplo. (El análogo en IPv4 es 169.254.0.0/16.) Dado que el prefix es el mismo para todas las direcciones de enlace local en una máquina, el enrutamiento a veces puede necesitar saber a qué interfaz se está refiriendo. Y eso es lo que especifica el número después del porcentaje, llamado índice de zona. Los detalles dependen del sistema operativo: en Windows, %16
es la interfaz número 16; en Linux, por ejemplo, es posible que vea algo como %eth0
.
Algunas herramientas o API considerarán que este índice de zona no es importante o está implícito para sus fines. Por ejemplo, en Linux el ifconfig
La herramienta no lo muestra porque es obvio a qué interfaz pertenece una dirección. Pero en general conviene tenerlo en cuenta.
Los caracteres después del% (que resultan ser números en su ejemplo) son el “ID de zona”. (El “ID de zona” es un texto que identifica que ayuda a identificar qué tarjeta de red usar. Puede parecerse al nombre de una tarjeta de red o simplemente ser un número).
Estos caracteres se utilizan para identificar una “interfaz de red”, que la gente suele llamar “tarjeta de red”. Por ejemplo, puede ayudar a determinar si un paquete utilizará una tarjeta Ethernet con cable o un adaptador Wi-Fi inalámbrico.
Supongo que estás usando Microsoft Windows. Utiliza números como ID de zona. Si bien la documentación de Microsoft indica diferentes tipos de ID de zona (que discuto más adelante en esta respuesta), para una dirección de enlace local (en fe80 :: / 64), el “ID de zona” es un “índice de interfaz” de una tarjeta de red.
Como punto de comparación, los sistemas similares a Unix pueden usar letras después del signo%. p.ej: fe80::71a3:2b00:ddd3:753f%eth0
En ese caso, el ID de zona, eth0
, coincide con el nombre que suele utilizar el sistema operativo para identificar la tarjeta de red.
En Microsoft Windows, puede obtener una lista de los ID de zona (numéricos) utilizando una de las líneas de comando que verifican la tabla de enrutamiento. Yo prefiero “netstat -nr
“ya que también funciona en otros sistemas operativos, pero Microsoft Windows también es compatible”route print
“. La salida resultante, que se informa, probablemente estará en una pantalla larga, así que prepárate para desplazarte hacia atrás, a menos que vayas a más.
por ejemplo, en mi sistema:
===========================================================================
Interface List
14...5c f9 dd 6d 98 b8 ......Realtek PCIe GBE Family Controller
12...e0 06 e6 7e fc 4e ......Bluetooth Device (Personal Area Network)
1...........................Software Loopback Interface 1
13...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter
15...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #2
===========================================================================
En este caso, una dirección como fe80::71a3:2b00:ddd3:753f%14
se referiría a la tarjeta de red relacionada con “ID de zona” 14
, que resulta ser mi controlador de la familia Realtek PCIe GBE. (El “GBE” se refiere a Gigabit Ethernet).
(También puede ver estos valores de “índice de interfaz”, utilizados por muchas versiones de Microsoft Windows, con algo como: “WMIC NICCONFIG GET Caption,InterfaceIndex,IPAddress /FORMAT:LIST
”. Las personas que intentan eso en PowerShell deben recordar usar comillas inversas antes de cada coma).
Ahora, aquí está la parte complicada: si desea hacer ping a una dirección remota, es posible que deba usar la dirección IPv6 del sistema remoto, pero la “ID de zona” del sistema local. Entonces, por ejemplo, si estoy usando la computadora A y tengo una dirección IPv6 local de fe80 :: 1 adjunta a la interfaz número 14, y quiero hacer ping a la computadora B y tiene una dirección IPv6 local de fe80 :: 2 adjunta a su interfaz número 16, entonces esto es lo que usaría:
ping fe80::2%14
Entonces el ping
El comando enviará el paquete ICMPv6 a la dirección IPv6 remota (fe80 :: 2), que pertenece a la computadora remota, y usará la ID de zona de interfaz 14 para hacerlo. El ID de zona 14 es un número del sistema que estoy usando, no del sistema remoto. Entonces, la dirección del sistema remoto y el ID de zona especificado provienen de diferentes computadoras.
Ahora, veamos por qué esto podría ser necesario.
Si quiero hacer ping a la dirección IPv6 de Google (que es 2607: f8b0: 400a: 802 :: 200e en el momento en que escribí esta respuesta), la tabla de enrutamiento verificará qué tarjeta de red maneja direcciones que comienzan con 2607: f8b0: 400a: 802. La tabla de enrutamiento indicará que ninguna de mis tarjetas de red está conectada directamente a una red que use direcciones que comiencen con 2607: f8b0: 400a: 802, por lo que mi computadora terminará usando una dirección de “puerta de enlace”. Si me estaba conectando a otra red que forma parte de la organización para la que estoy trabajando, es posible que tenga una dirección de “puerta de enlace” especial que enruta el tráfico a una red privada. En este caso, no tengo una puerta de enlace más específica, por lo que usaré la “puerta de enlace predeterminada” IPv6. Así es como funciona IPv6 la mayor parte del tiempo, a excepción de las direcciones locales de enlace. Así es también como funcionaba IPv4 la mayor parte del tiempo. (Simplifiqué este ejemplo asumiendo un tamaño de subred IPv6 de / 64, ya que describir todo el proceso habría hecho esta descripción aún más larga).
De acuerdo con la sección 2.8 de RFC 4291, cada computadora que use IPv6 debe asignar una dirección de enlace local a cada interfaz de red. La sección 2.5.6 de RFC 4291 muestra los bits con los que deben comenzar las direcciones locales de vínculo, lo que hace que las direcciones locales de vínculo comiencen con “fe80: 0000: 0000: 0000:” (aunque muchos de esos ceros se contraen en dos puntos ). El hecho de que esas direcciones comiencen con “fe80:” también se describe en la sección 2.4 de RFC 4291.
Si intenta hacer ping a un sistema remoto (por ejemplo, “2607: f8b0: 400a: 802”), el proceso general suele ser averiguar una red o subred de la que forma parte la dirección, lo cual se hace mirando los bits al comienzo de la dirección. Luego, esos bits se utilizan para determinar cómo enrutar el tráfico.
Sin embargo, ese proceso no funciona para una dirección local de enlace IPv6, porque cada interfaz de red (operativa, activa) tiene una dirección local de enlace que comienza con “fe80:” en una subred que usa la subred prefix/ tamaño de “/ 64”. Si está en una computadora portátil, es probable que descubra que tanto su tarjeta Ethernet como su adaptador Wi-Fi deben tener dicha dirección IPv6.
Ahora, cuando envía su ping a fe80 :: 2, desea que su computadora envíe ese paquete a la tarjeta de red correcta. Si tiene una impresora que está conectada a una red cableada, no desea enviar el tráfico fuera de su tarjeta Wi-Fi, utilizando una ruta / ruta de red que no hará que el tráfico llegue a la impresora. Y si está intentando comunicarse con un dispositivo inalámbrico usando su tarjeta Wi-Fi, no quiere que su tráfico salga de la tarjeta Ethernet.
La solución es que especifique qué dispositivo de red desea que utilice el tráfico. Entonces, ese es el propósito del ID de zona.
Actualizaciones de respuesta:
-
La versión original de esta respuesta (que resultó ser una respuesta con una calificación bastante alta de las que proporcioné) inicialmente usaba el término “identificador de interfaz” en lugar de “ID de zona”.
-
Creo que el término “identificador de interfaz” era simplemente un término que yo había inventado personalmente, y se basaba en el término “índice de interfaz”, que utiliza Microsoft Windows para identificar una tarjeta de red específica. Sin embargo, el término “ID de interfaz” resultó ser una elección que no era ideal, ya que los documentos IETF RFC han utilizado ese término para otra cosa:
- RFC 1884: “Arquitectura de direccionamiento IP versión 6” usa esa frase para algunos bits al final de una dirección IPv6. (El número de bits parecía variar en algunos ejemplos diferentes, pero este identificador se basaba normalmente en la dirección MAC-48 de una tarjeta de red).
-
RFC 5453: Los identificadores de interfaz IPv6 reservados dice (al principio), “Una dirección de unidifusión IPv6 se compone de dos partes: una subred prefix y un identificador de interfaz (IID) que identifica una interfaz única dentro de la subred prefix. ”
-
El término “ID de zona” proviene de RFC 4007: “Arquitectura de dirección de ámbito IPv6”, sección 11, “Representación textual” (y, en particular, la subsección 11.2) utilizó el término “zone_id”. Si bien considero que una RFC IETF como esa es la más autorizada, también encontré la Documentación de Microsoft Windows Server 2003: Actualizaciones para comprender IPv6, página 11 de PDF (página impresa 7) que llama a esto un “identificador de zona (ID), también conocido como un ID de alcance ”. Da un ejemplo donde un “ID de zona” en el rango fe80 :: / 64 “es el índice de interfaz de la interfaz adjunta al enlace que contiene la dirección de destino”, pero un ejemplo diferente del rango fec0 :: / 48 donde el “ID de zona” “es el ID de sitio del sitio de la organización que contiene la dirección de destino”.
Al tropezar con un término diferente utilizado por las RFC de IETF, decidí actualizar de inmediato esta respuesta popular para que sea más compatible con un conjunto de estándares más oficial. (Aunque la versión inicial fue útil tal como está escrita, preferí que mi documentación no difiera de cómo la misma frase fue documentada por los estándares IETF RFC oficiales preexistentes sobre direcciones IPv6. Por lo tanto, esta fue la razón principal de la actualización del 19 de enero de 2020 .)
-
-
Además de actualizar el “identificador de interfaz” a “ID de zona”, se produjeron otros cambios menores en la actualización del 19 de enero de 2020:
-
Se agregó el comando WMIC para obtener identificadores de índice (en Microsoft Windows)
-
Se corrigió un error tipográfico en una dirección (que decía fd80 en lugar de fe80)
-
Ajustes menores, destinados a aclarar algunos enviar mensajes de texto un poco más fácil
-
Se agregaron hipervínculos a la documentación técnica relacionada. (En realidad, dichos hipervínculos se incluyen principalmente en esta sección que describe cómo se actualizaron varias partes de esta respuesta).
-
Reseñas y calificaciones del tutorial
Al final de todo puedes encontrar las notas de otros administradores, tú además puedes dejar el tuyo si lo crees conveniente.