Geração de ULA IPv6 (endereço local exclusivo)

Geração de ULA IPv6 (endereço local exclusivo)

RFC4193 contém pseudocódigo para geração de ULA IPv6 (Endereço Local Único). Devo seguir este algoritmo ou um ULA arbitrário é válido?

   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.

Eu preferiria que o tempo não fosse um fator. Seria aceitável pegar o endereço local do link (derivado do Mac) e substituir o primeiro octeto para convertê-lo em ULA?

Responder1

Quanto à obtenção de alguns bits de um endereço local de link, nem todos os endereços são adequados para isso. Não derivado de MAC não terá nenhuma aleatoriedade, fe80::1é usado como gateway de todos em algumas redes.

Tecnicamente, esse algoritmo não é necessário. Mas os ULAs devem ser aleatórios. Da seção 3.2.1 imediatamente anterior:

IDs globais atribuídos localmente DEVEM ser gerados com um algoritmo pseudo-aleatório consistente com[ALEATÓRIO]. A Seção 3.2.2 descreve um algoritmo sugerido. É importante que todos os sites que geram IDs globais utilizem um algoritmo funcionalmente semelhante para garantir que haja uma alta probabilidade de exclusividade.

O algoritmo sugerido usa primitivos comumente disponíveis como entradas, para ser confiável e único. É possível que outra pessoa tenha o mesmo endereço MAC, por não endereçar novamente uma VM ou o fornecedor da NIC cometer um erro. Mas também gerar um com o mesmo carimbo de data/hora NTP é extremamente improvável. Certamente você pode encontrar implementações disso já escritas se não quiser escrever código.

Se você estiver usando outra coisa, não use um esquema puramente baseado em endereço MAC. Talvez leia 40 bits de/dev/random.

informação relacionada