По крайней мере один, но все чаще оба метода поддерживаются популярными операционными системами.
Обратите внимание, что эти функции являются ортогональными. Вы можете использовать оба одновременно, если хотите.
В некоторых операционных системах MAC-адрес (EUI-48) просто больше не используется для идентификаторов интерфейса. Вместо этого используется случайный или основанный на хэше идентификатор, как правило, в соответствии с RFC 7217.
Windows использует собственную схему по умолчанию, начиная с Windows Vista.
Чтобы проверить, активна ли эта функция, выполните команду PowerShell:
Get-NetIPv6Protocol | fl RandomizeIdentifiers
Чтобы включить / отключить функцию:
Set-NetIPv6Protocol -RandomizeIdentifiers Enabled
Set-NetIPv6Protocol -RandomizeIdentifiers Disabled
Linux (NetworkManager) поддерживает RFC 7217 начиная с NetworkManager v1.2.0, используя UUID профиля соединения как часть начального числа. Эта функция активна по умолчанию в последних версиях NM.
Чтобы включить или отключить эту функцию:
nmcli con modify "<profilename>" ipv6.addr-gen-mode stable-privacy
nmcli con modify "<profilename>" ipv6.addr-gen-mode eui64
Linux (ядро SLAAC) поддерживает RFC 7217 начиная с ядра v4.1.0; однако, он должен быть активирован вручную путем сохранения секретного начального числа через sysctl.
Секретный ключ - это 128-битная шестнадцатеричная строка (в форме адреса IPv6), которая должна храниться в net.ipv6.conf.default.stable_secret
sysctl. Чтобы сделать это постоянным, это могло быть вставлено /etc/sysctl.d/50-rfc7217.conf
или подобный:
net.ipv6.conf.default.stable_secret = 84a0:d5aa:52b0:4d35:k567:3aa6:7af5:474c
Установка секрета автоматически активирует этот режим для всех сетевых интерфейсов. Чтобы проверить, активна ли эта функция, найдите «addrgenmode stable_secret» ip -d link
или значение «2» в sysctl net.ipv6.conf.<ifname>.addr_gen_mode
.
Как определено в RFC 4941, временные адреса конфиденциальности генерируются случайным образом и поворачиваются каждые несколько часов.
Windows поддерживает временные адреса начиная с Windows XP SP2.
Чтобы включить / отключить эту функцию:
netsh interface ipv6 set privacy state=enabled
netsh interface ipv6 set privacy state=disabled
Обратите внимание, что Windows больше не использует первичные адреса на основе MAC-адресов, начиная с Windows Vista.
Linux (NetworkManager) : последние версии NetworkManager обрабатывают RA самостоятельно, хотя два значения, приведенные ниже, имеют значения, идентичные sysctl (2 = предпочитать конфиденциальный адрес, 1 = предпочитать основной адрес):
nmcli con modify <name> ipv6.ip6-privacy 2
Кроме того, начиная с версии 1.2.0 стал доступен улучшенный режим, который изменяет основной адрес, чтобы он больше не был основан на MAC-адресах, а стал уникальным для каждой сети (RFC 7217):
(Обратите внимание, что конфиденциальная адресация ортогональна к addr-gen-mode; возможно использовать оба варианта.)
Примечание: Начиная с версии 1.4.0, NM также позволяет рандомизировать сам MAC-адрес. Набор wifi.cloned-mac-address
для stable
иметь различную MAC для каждой сети (рекомендуется), или random
рандомизировать его для каждого соединения (может вызвать проблемы).
Во всех случаях <name>
должно быть имя соединения, например, WiFi SSID или "Wired Connection 1"
. Используйте, nmcli con
чтобы перечислить все.
Чтобы сделать это значением по умолчанию для новых соединений, начиная с 1.2.0 вы можете изменить /etc/NetworkManager/NetworkManager.conf
:
[connection]
ipv6.addr-gen-mode=stable-privacy
wifi.cloned-mac-address=stable
Linux (ядро SLAAC) поддерживает временные адреса, но не использует их по умолчанию. Их можно активировать через sysctl.
Чтобы включить временные адреса и сделать их предпочтительными для исходящих соединений:
sysctl net.ipv6.conf.all.use_tempaddr=2
sysctl net.ipv6.conf.default.use_tempaddr=2
Чтобы включить генерацию временного адреса, но оставьте статический адрес SLAAC предпочтительным:
sysctl net.ipv6.conf.all.use_tempaddr=1
sysctl net.ipv6.conf.default.use_tempaddr=1
Часть all
или default
может быть заменена определенным именем интерфейса; например net.ipv6.conf.eth0.use_tempaddr
.
(Я использовал ip link set eth0 down && ip link set eth0 up
для принудительного назначения адреса, но вы также можете запустить rdisc6 eth0
или просто подождать несколько минут для следующего периодического объявления маршрутизатора.)
Mac OS X - включена по умолчанию, начиная с OS X 10.7 Lion:
sysctl -w net.inet6.ip6.use_tempaddr=1
Временные адреса, если включены, будут предпочтительными.
FreeBSD :
sysctl net.inet6.ip6.use_tempaddr=1
sysctl net.inet6.ip6.prefer_tempaddr=1
NetBSD :
sysctl -w net.inet6.ip6.use_tempaddr=1
Предпочтение временных адресов? Понятия не имею. Адрес autoconf представляется предпочтительным. ifconfig
не отображается список свойств адреса.
OpenBSD - поддержка добавлена в 5.2 ; включен и предпочтен по умолчанию в 5.3 .
ifconfig em0 autoconfprivacy
ifconfig
показывает "autoconfprivacy" рядом с временными адресами.
Если аппаратный адрес используется в адресе IPv6, это обычно означает, что ваша сеть использует автоматическую настройку IPv6 без сохранения состояния. В этом случае вы можете просто выбрать свой собственный суффикс адреса и настроить IPv6 вручную.
Однако, даже если в добавленном вручную адресе не будет вашей информации об оборудовании, он все равно будет статичным (в отличие от адресации конфиденциальности, которая часто меняет адреса). Кроме того, статические адреса могут быть проблемой в сети, превышающей 2-3 устройства.