Esto se resuelve con dos extensiones de IPv6:
- RFC 4941, también conocido como "Direccionamiento de privacidad", permite que las conexiones salientes usen direcciones temporales generadas aleatoriamente (que se rotan cada pocas horas).
- RFC 7217 permite que la dirección primaria estática se genere a partir de un hash opaco que no revela ninguna información.
Al menos uno, pero cada vez más, ambos métodos son compatibles con los sistemas operativos populares.
Tenga en cuenta que estas características son ortogonales. Puede usar ambos al mismo tiempo, si lo desea.
Direcciones privadas estables
En algunos sistemas operativos, la dirección MAC (EUI-48) simplemente ya no se usa para identificadores de interfaz. En cambio, se utiliza un identificador aleatorio o basado en hash, generalmente de acuerdo con RFC 7217.
Windows utiliza un esquema personalizado de manera predeterminada que comienza con Windows Vista.
Para verificar si la función está activa, ejecute un comando de PowerShell:
Get-NetIPv6Protocol | fl RandomizeIdentifiers
Para habilitar / deshabilitar la función:
Set-NetIPv6Protocol -RandomizeIdentifiers Enabled
Set-NetIPv6Protocol -RandomizeIdentifiers Disabled
Linux (NetworkManager) admite RFC 7217 a partir de NetworkManager v1.2.0, utilizando el UUID del perfil de conexión como parte de la semilla. Esta característica está activa por defecto en las versiones recientes de NM.
Para habilitar o deshabilitar esta función:
nmcli con modify "<profilename>" ipv6.addr-gen-mode stable-privacy
nmcli con modify "<profilename>" ipv6.addr-gen-mode eui64
Linux (kernel SLAAC) admite RFC 7217 a partir del kernel v4.1.0; sin embargo, debe activarse manualmente almacenando la semilla secreta a través de sysctl.
La clave secreta es una cadena hexadecimal de 128 bits (con forma de dirección IPv6), que debe almacenarse en el net.ipv6.conf.default.stable_secret
sysctl. Para hacerlo persistente, se podría poner /etc/sysctl.d/50-rfc7217.conf
o similar:
net.ipv6.conf.default.stable_secret = 84a0:d5aa:52b0:4d35:k567:3aa6:7af5:474c
Establecer el secreto activa automáticamente este modo para todas las interfaces de red. Para verificar si la función está activa, busque "addrgenmode stable_secret" en ip -d link
, o el valor "2" en sysctl net.ipv6.conf.<ifname>.addr_gen_mode
.
Direcciones privadas temporales
Como se define en RFC 4941, las direcciones de privacidad temporales se generan aleatoriamente y se rotan cada pocas horas.
Windows admite direcciones temporales a partir de Windows XP SP2.
Para habilitar / deshabilitar esta función:
netsh interface ipv6 set privacy state=enabled
netsh interface ipv6 set privacy state=disabled
Tenga en cuenta que Windows ya no utiliza direcciones primarias basadas en direcciones MAC que comienzan con Windows Vista.
Linux (NetworkManager) : las versiones recientes de NetworkManager manejan RA por sí mismas, aunque los dos valores siguientes tienen significados idénticos a sysctl (2 = prefieren la dirección de privacidad, 1 = prefieren la dirección principal):
nmcli con modify <name> ipv6.ip6-privacy 2
Además, a partir de 1.2.0, se hizo disponible un modo mejor, que cambia la dirección principal para que ya no esté basada en MAC, sino que sea única para cada red (RFC 7217):
(Tenga en cuenta que el direccionamiento de privacidad es ortogonal al modo addr-gen; es posible usar ambos).
Nota al margen: a partir de 1.4.0, NM también permite aleatorizar la dirección MAC. Configure wifi.cloned-mac-address
para stable
tener un MAC diferente para cada red (recomendado), o random
para aleatorizarlo para cada conexión (puede causar problemas).
En todos los casos, <name>
debe ser el nombre de la conexión, por ejemplo, WiFi SSID o "Wired Connection 1"
. Use nmcli con
para enumerar todo.
Para que esto sea el valor predeterminado para nuevas conexiones, a partir de 1.2.0 puede cambiar /etc/NetworkManager/NetworkManager.conf
:
[connection]
ipv6.addr-gen-mode=stable-privacy
wifi.cloned-mac-address=stable
Linux (kernel SLAAC) admite direcciones temporales, pero no las usa de manera predeterminada. Se pueden activar a través de sysctls.
Para habilitar direcciones temporales y hacerlas preferidas para conexiones salientes:
sysctl net.ipv6.conf.all.use_tempaddr=2
sysctl net.ipv6.conf.default.use_tempaddr=2
Para habilitar la generación de direcciones temporales, pero mantenga la dirección SLAAC estática como prefiera:
sysctl net.ipv6.conf.all.use_tempaddr=1
sysctl net.ipv6.conf.default.use_tempaddr=1
La parte all
o default
se puede reemplazar con un nombre de interfaz específico; por ej net.ipv6.conf.eth0.use_tempaddr
.
(Solía ip link set eth0 down && ip link set eth0 up
forzar una asignación de dirección, pero también puede ejecutar rdisc6 eth0
o simplemente esperar unos minutos para el próximo anuncio periódico del enrutador).
Mac OS X : habilitado de forma predeterminada desde OS X 10.7 Lion:
sysctl -w net.inet6.ip6.use_tempaddr=1
Se preferirán las direcciones temporales, si están habilitadas.
FreeBSD :
sysctl net.inet6.ip6.use_tempaddr=1
sysctl net.inet6.ip6.prefer_tempaddr=1
NetBSD :
sysctl -w net.inet6.ip6.use_tempaddr=1
Preferencias de direcciones temporales? No tengo idea. La dirección de autoconf parece ser la preferida. ifconfig
no parece enumerar ninguna propiedad de dirección.
OpenBSD - soporte agregado en 5.2 ; habilitado y preferido por defecto en 5.3 .
ifconfig em0 autoconfprivacy
ifconfig
muestra "autoconfprivacy" junto a las direcciones temporales.
Notas sobre la configuración:
En Linux, OS X y todos los BSD, edite /etc/sysctl.conf
para que la configuración sea permanente.
En Windows, los cambios persistirán automáticamente. (Puede agregar store=active
el netsh
comando si desea que dure solo hasta que se reinicie).
Parcialmente basado en los sistemas operativos IPv6 en IPv6INT.net. Consulte también Notas generales sobre IPv6
Si la dirección de hardware se usa en la dirección IPv6, generalmente significa que su red usa la configuración automática sin estado IPv6. En tal caso, simplemente puede elegir su propio sufijo de dirección y configurar IPv6 manualmente.
Sin embargo, a pesar de que la dirección agregada manualmente no tendrá su información de hardware, seguirá siendo estática (a diferencia de Privacy Addressing, que cambia las direcciones de vez en cuando). Además, las direcciones estáticas pueden ser un problema en una red de más de 2-3 dispositivos.