tcpip:ip:ipv6

IPv6

Las direcciones IPv6 se expresan en 16 bytes. Aunque se tratan en binario por las máquinas, su notación para los humanos es siempre en hexadecimal, lo que requiere todavía 32 caracteres. IPv6 soporta naturalmente como su predecesor un direccionamiento jerárquico y, por lo tanto, irá de forma sistemática acompañado de una máscara de subred. Por razones comprensibles, la máscara se expresará siempre en notación CIDR.

Como las direcciones IPv6 se expresan en 16 bytes, requieren 32 caracteres hexadecimales, con lo que son largas y es tedioso teclearlas. Los bytes se agrupan de dos en dos y se separan por dos puntos (:). Por convenio, se puede ignorar los 0 de un grupo de dos bytes (4 caracteres hexadecimales). También se puede reemplazar cualquier serie de 0 en la dirección por dos símbolos de dos puntos (::). Naturalmente, esta abreviación puede usarse solo una vez en la escritura de la dirección.

20a0:1234:5678::1 es equivalente a 20a0:1234:5678:0000:0000:0000:0000:0001
20a0:1:2:3:4:5:6:7 es equivalente a 20a0:0001:0002:0003:0004:0005:0006:0007

La parte host en 64 bits de una dirección IPv6 se genera localmente en la mayoría de los casos a partir de la dirección MAC de la interfaz física. La dirección MAC, por lo tanto, se parte en dos por la mitad, y los caracteres hexadecimales fffe se insertan para alcanzar los 64 bits. Por convenio, el segundo bit de menor peso del primer byte de las direcciones MAC se asigna a 1 para la creación de la dirección IPv6. La parte host de la dirección IPv6 también puede asignarse de forma pseudoaleatoria (a partir de un hash de la dirección MAC) o simplemente configurada a mano. En este caso, se tendrá la ventaja de elegir un valor pequeño para simplificar la escritura de la dirección IPv6.

root@alfa:~# ifconfig
eth0
 Link encap:Ethernet
 Hwaddr 00:1c:23:59:d1:8c
 inet adr:172.17.6.23
 Bcast:172.17.6.255
 Máscara:255.255.255.0
adr inet6: fe80::021c:23ff:fe59:d18c/64 Scope:Enlace # herdados de MAC: 1c, 23, 59, d18c
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets 218326 bytes 267371428 (254.9 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 183982 bytes 24737320 (23.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Cualquier máquina compatible con IPv6 dispone de una dirección llamada ”de enlace local” no enrutable y autoasignada. Esta dirección le permite comunicar con otros equipos IPv6 (servidor DHCP por ejemplo) antes de cualquier configuración más general. La dirección de enlace local comienza siempre por fe80 y la parte host de la dirección se genera localmente, en principio a partir de la dirección MAC de la interfaz.

Una dirección global se puede enrutar, con lo que permite a la máquina comunicarse en IPv6 con sus homólogos situados en otras redes. La parte de red de la dirección global la impone el operador o el proveedor de acceso a Internet. Naturalmente, es única en todo Internet. La parte host de la dirección se suele generar localmente a partir de la dirección MAC o se configura manualmente. La configuración de la dirección de red IPv6 puede hacerse manualmente, mediante DHCPv6 o incluso por descubrimiento automático.

En la mayoría de los casos, se usa un servidor DHCPv6 que distribuye las direcciones IPv6 a los equipos que realizan la correspondiente solicitud. El servidor se aprovechará para tener la contabilidad de las direcciones distribuidas. Las direcciones también pueden obtenerse por observación de anuncios del router, que informan sobre la dirección global usada en la red local.

Ya raras en IPv4, las direcciones broadcast desaparecen completamente del escenario IPv6. Esto no debería ser un problema para las aplicaciones, que ya funcionan en multicast en la mayoría de los casos que requieren una comunicación de ”uno a muchos”. Los modos de comunicación son por lo tanto el unicast, el multicast y el anycast (uno a alguien).

# comprobar estado
ip a | grep inet6
 
# desactivar ya
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=1
 
# persistencia (solo activa tras un reboot)
echo "net.ipv6.conf.all.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.lo.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.tun0.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf # error
 
# activar sin reiniciar con:
sudo sysctl -p
  • tcpip/ip/ipv6.txt
  • Darrera modificació: 24/07/2024 10:14
  • per mate