От чего я читать онлайн, локальный адрес канала IPv6 генерируется путем взятия MAC-адреса сетевого интерфейса, вставки слова FF: FE в его середину, операции ИЛИ в некоторых дополнительных битах и т. д. MAC-адрес 00: 3E: E1: c6: 20: c2 соответствует IPv6-локальному адресу fe80 :: 23e: e1ff: fec6: 20c2% en0, и программа, которая знает MAC-адрес, может вычислить IPv6-адрес или наоборот. наоборот.
Кажется, что это нормально работает на моем Macintosh, но на машине Windows моего коллеги мы видим это (из вывода ipconfig):
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::eb:b41:3e4c:fd9e%11
IPv4 Address. . . . . . . . . . . : 192.168.0.3
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
Здесь похоже, что MAC-адрес сетевого интерфейса (0b: 41: 3e: 4c: fd: 9e) имеет только байт «eb» или перед ним, вместо того, чтобы вставлять ff: fe в средний, как я и ожидал.
Кто-нибудь может объяснить, почему это так? то есть Windows делает что-то противоречащее спецификации локального адреса ссылки IPv6 здесь, или просто использует какое-то другое приемлемое соглашение MAC-> IPv6, о котором я не знаю? Или, может быть, поставщикам просто разрешено делать все, что они хотят, при генерации адреса fe80 из MAC-адреса?
Дело не в том, что локальный адрес канала должен быть сгенерирован из MAC-адреса; это никогда не было требованием. Вы можете вручную назначить локальные адреса ссылки на многих устройствах.
То, что вы видите в Windows, - это использование расширений конфиденциальности и случайной адресации. Вместо первоначального способа назначения идентификатора интерфейса SLAAC были введены расширения конфиденциальности и генерация случайных адресов. Это значение по умолчанию для Windows, но его можно отключить.
Видеть RFC 4862, автоконфигурация IPv6 адреса без сохранения состояния и RFC 4941, Расширения конфиденциальности для автоконфигурации адресов без сохранения состояния в IPv6.