Генерация ULA IPv6 (уникальный локальный адрес)

RFC4193 содержит псевдокод для генерации ULA IPv6 (уникальный локальный адрес). Должен ли я следовать этому алгоритму или действителен произвольный ULA?

   3.2.2. Sample Code for Pseudo-Random Global ID Algorithm

   The algorithm described below is intended to be used for locally
   assigned Global IDs.  In each case the resulting global ID will be
   used in the appropriate prefix as defined in Section 3.2.

     1) Obtain the current time of day in 64-bit NTP format [NTP].

     2) Obtain an EUI-64 identifier from the system running this
        algorithm.  If an EUI-64 does not exist, one can be created from
        a 48-bit MAC address as specified in [ADDARCH].  If an EUI-64
        cannot be obtained or created, a suitably unique identifier,
        local to the node, should be used (e.g., system serial number).

     3) Concatenate the time of day with the system-specific identifier
        in order to create a key.

     4) Compute an SHA-1 digest on the key as specified in [FIPS, SHA1];
        the resulting value is 160 bits.

     5) Use the least significant 40 bits as the Global ID.

     6) Concatenate FC00::/7, the L bit set to 1, and the 40-bit Global
        ID to create a Local IPv6 address prefix.

Я бы предпочел, чтобы время не было фактором. Можно ли взять локальный адрес ссылки (производный от Mac) и заменить первый октет, чтобы преобразовать его в ULA?

1
задан 13 January 2020 в 18:03
1 ответ

Что касается получения некоторых битов из локального адреса ссылки, не все адреса подходят для этого. Не MAC производные не будут иметь никакой случайности, fe80::1 используется как шлюз каждого в некоторых сетях. Технически этот алгоритм не требуется. Но ULA должны быть случайными. Из раздела 3.2.1 непосредственно перед этим:

Локально назначенные глобальные идентификаторы ДОЛЖНЫ быть сгенерированы с помощью псевдослучайности алгоритм, соответствующий [RANDOM]. В разделе 3.2.2 описывается предложенный алгоритм. Важно, чтобы все объекты, генерирующие глобальную Идентификаторы используют функционально схожий алгоритм для обеспечения высокого уровня вероятность уникальности.

Предлагаемый алгоритм использует в качестве входных данных общедоступные примитивы, чтобы быть надежно уникальным. Возможно, что кто-то другой может иметь тот же самый MAC-адрес, не переадресовывая ВМ или производителя сетевых карт, допустившего ошибку. Но и генерация одного и того же временного штампа NTP крайне маловероятна. Конечно, если Вы не хотите писать код, Вы можете найти реализации этого уже написанного.

Если Вы используете что-то другое, не используйте чисто схему, основанную на MAC-адресах. Возможно, читайте 40 бит из /dev/random.

.
2
ответ дан 14 January 2020 в 22:12

Теги

Похожие вопросы