Зачем вам IPv6 Neighbor Solicitation для получения MAC-адреса?
Я разработчик программного обеспечения и только что получил бесплатную книгу о IPv6 на Techdays, которую я читаю для удовольствия. Они отдали его, потому что это немного старая книга (W2008), поэтому, может быть, все обстоит иначе для других / более новых ОС, но я не понимаю необходимости для Neighbor Discovery, чтобы получить MAC-адрес.
Согласно книге, каждый узел автоматически получает локальный IP-адрес, который создается из MAC-адреса путем вставки FF-FE
между 3-м и 4-м байтами и переключением бита U / L, так что локальный IP-адрес канала для узла с MAC-адресом 00-AA-00-3F-2A-1C
становится FE80::2AA:FF:FE:3F:2A1C
,
Чтобы определить MAC-адрес канального уровня, на локальный IP-адрес отправляется сообщение запроса соседей, которое отвечает сообщением, содержащим его MAC-адрес... Но отправитель уже знает об этом, поскольку MAC закодирован в канальном канале. локальный IP-адрес. Так что это похоже на отправку открытки кому-то с просьбой указать его адрес.
2 ответа
Каждый узел автоматически генерирует локальный адрес ссылки, но:
Этот адрес может не создаваться в формате EUI-64, указанном в RFC 2464. Адреса IPv6 также могут быть криптографически сгенерированными адресами ( RFC 3972), временными адресами конфиденциальности ( RFC 4941) или в современных операционных системах стабильными адресами конфиденциальности ( RFC 7217).
Адрес, который выглядит так, как будто он имеет идентификатор интерфейса EUI-64, может фактически не соответствовать указанному MAC-адресу из-за явной конфигурации администратором.
Поскольку вы не можете просто "преобразовать адрес обратно" в MAC-адрес, вы должны отправить запрос соседа для определения MAC-адреса.
Существуют и другие причины, по которым необходимо Соседство с соседями. Вот некоторые из них:
- Обнаружение дублированного адреса ( RFC 4862). Возможно, что какой-то другой хост (правильно или неправильно) запросил адрес, который хост хочет использовать.
- Обнаружение недостижимости соседей. Отсутствие ответа на ходатайство соседа является одним из признаков того, что сосед недоступен.
Книги все хороши и хороши, но очень устаревшие книги могут быть не такими полезными. Даже IPv6 претерпел значительные изменения за последние десять лет. Лучший источник правды - это соответствующие RFC, как оригинальные, так и любые, помеченные как обновленные или устаревшие. RFC указаны достаточно подробно, чтобы можно было писать соответствующие реализации. Вы можете узнать все детали обнаружения соседей, прочитав RFC 4861.
Итак, вы либо неправильно поняли, либо были дезинформированы о нескольких вещах.
Используя SLAAC, хост может создавать свою собственную IPv6-адресацию, используя свой MAC-адрес, но многие думали, что это опасно, отдавая слишком много информации и позволяя отслеживать конкретный хост. Исходя из этого, были разработаны расширения конфиденциальности и произвольная адресация, и они используются операционными системами для обеспечения конфиденциальности / безопасности. Это означает, что хост может создавать свою собственную адресацию, не основываясь на своем MAC-адресе.
Когда хост должен обнаружить MAC-адрес соседа в IPv4, он использует ARP. ARP передает запрос, но IPv6 не передает. Вместо этого каждый хост должен присоединиться к группе многоадресной рассылки запрашиваемого узла. Эта группа основана на последних 24 битах своего адреса IPv6. Поскольку интерфейсы IPv6 могут иметь любое количество адресов IPv6, хост может присоединиться к нескольким группам многоадресной рассылки запрашиваемого узла. Узел IPv6, ищущий MAC-адрес другого узла, отправит многоадресный запрос в группу многоадресной рассылки запрашиваемого узла целевого адреса IPv6.
Это обеспечивает преимущество по сравнению с IPv4 ARP. Поскольку ARP использует широковещательную передачу для запросов, он прерывает каждый хост в широковещательном домене уровня 2. Поскольку многоадресная группа запрашиваемого узла использует последние 24 бита целевого IPv6-адреса, запрос многоадресной рассылки ND, вероятно, прервет только целевой хост или, возможно, один или два других хоста в широковещательном домене уровня 2.