Isso é para suportar endereços RFC 7217
A variável sysctl stable_secret
contém o segredo para a geração de identificadores de interface estáveis (normalmente os 64 bits inferiores em endereços IPv6), conforme definido em RFC 7217 ,
"Um Método para Gerar Identificadores de Interface Semanticamente Opacos com a Configuração Automática de Endereços Sem Estado IPv6 (SLAAC)."
O RFC descreve um método para definir identificadores de interface (IID) em redes IPv6 que não contêm o endereço MAC, como RFC 4862 < Os endereços do SLAAC funcionam, mas não mudam com o tempo, como os endereços de privacidade do RFC 4941 . Este IID deve ser gerado usando uma chave secreta e outras informações, incluindo o prefixo da rede. Assim, o IID será estável em uma sub-rede, mas diferente em outra sub-rede com outro prefixo (e provavelmente outra chave secreta e outros ingredientes). Isso deve impedir o rastreamento do nó quando estiver em roaming em redes diferentes, melhorando a privacidade, mas permitindo o gerenciamento mais fácil dele em cada uma delas.
Do RFC :
secret_key: A secret key that is not known by the attacker. The secret key SHOULD be of at least 128 bits. It MUST be initialized to a pseudo-random number (see [RFC4086] for randomness requirements for security) when the operating system is installed or when the IPv6 protocol stack is "bootstrapped" for the first time. An implementation MAY provide the means for the system administrator to display and change the secret key.
A variável é explicada na documentação do kernel :
stable_secret - IPv6 address This IPv6 address will be used as a secret to generate IPv6 addresses for link-local addresses and autoconfigured ones. All addresses generated after setting this secret will be stable privacy ones by default. This can be changed via the addrgenmode ip-link. conf/default/stable_secret is used as the secret for the namespace, the interface specific ones can overwrite that. Writes to conf/all/stable_secret are refused. It is recommended to generate this secret during installation of a system and keep it stable after that. By default the stable secret is unset.
Esta postagem na lista de discussão do kernel Linux e esta mensagem de commit do git mostra que o RFC 7217 foi implementado no kernel Linux por Hannes Frederic Sowa em março de 2015. Infelizmente, não consegui determinar a versão do kernel lançada correspondente.
Um erro de E / S pode ocorrer quando stable_secret
é lido, mas não é definido
O texto de confirmação sugere que a leitura da variável stable_secret
retornará um erro de E / S até que seja definido:
The secret is formatted as an ipv6 address and will be stored per interface and per namespace. We track initialized flag and return EIO errors until the secret is set.
[ênfase minha]