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

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

RFC4193 содержит псевдокод для генерации IPv6 ULA (уникальный локальный адрес). Должен ли я следовать этому алгоритму или произвольный 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.

Я бы предпочел, чтобы время не было фактором. Будет ли приемлемо взять Link Local Address (производный от Mac) и заменить первый октет, чтобы преобразовать его в ULA?

решение1

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

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

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

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

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

Связанный контент