Novo IPv6 sob demanda usando extensão de privacidade?

Novo IPv6 sob demanda usando extensão de privacidade?

Habilitar Privacy Extension( net.ipv6.conf.eth0.use_tempaddr=2in /etc/sysctl.conf) IPv6me dá um novo endereço IP por um período fixo de tempo. Existe uma maneira de obter um novo IPv6 sob demanda? ou seja, atualizar um novo IPv6 quando necessário?

Responder1

O endereço temporário "ativo" possui propriedadestemporárioedinâmicomas nãodescontinuada. Quando está prestes a se tornar obsoleto (ou seja: épreferido_lftvalor cai para 0), um novo endereço temporário é adicionado pelo kernel à interface.

O endereço temporário atual da interface fará parte dos resultados mostrados aqui:

ip -6 address show temporary dynamic

mas não faz parte dos endereços mais antigos que ainda são válidos, mas obsoletos, mostrados com:

ip -6 address show temporary deprecated

Basta diminuir sua preferred_lftpropriedade para quase zero para acionar a criação do novo endereço temporário. Por tentativa e erro, isso não funcionará se preferred_lftestiver definido abaixo de 3: a contagem regressiva chega a 0 antes de acionar a criação e então não funcionará mais (mas ainda é possível definir novamente preferred_lftpara >= 3 mais tarde para obter o acionador). Não sei se há alguma dúvida sobre essa peculiaridade. 5 segundos parece um valor seguro, o que significa que o novo endereço aparecerá cerca de 2 ou 3 segundos depois.

Vamos supor que o valor atual encontrado seja 2001:db8::1/64 na interfaceeth0:

ip address change 2001:db8::1/64 dev eth0 preferred_lft 5

Observe que adulterar isso remove odinâmicopropriedade, o que não teria acontecido naturalmente e poderia desencadear a criação posterior de endereços temporários adicionais antes do esperado.


Com ipa saída JSON de ejqalguma capacidade de script é possível, aqui está o que eu fiz para gerar os comandos prontos para canalizar para um shell para alterar todos os endereços temporários candidatos de uma só vez (geralmente requer um sistema multi-homed para obter mais de um, mas adulterar isso talvez possa criar vários mais tarde também). Ele verifica que otemporárioedinâmicoendereço não édescontinuadaconsiderá-lo um candidato:

ip -6 -p -j address show temporary dynamic | jq -j '.[] |
    . as $i |
        .addr_info[] as $a |
            if $a.local == null // $a.deprecated == true then
                empty
            else
                "ip -6 address change ",
                $a.local, "/", $a.prefixlen,
                " dev ", $i.ifname,
                " preferred_lft 5\n"
            end'

que geraria novamente:

ip -6 address change 2001:db8::1/64 dev eth0 preferred_lft 5

Você também pode considerar reduzir valid_lftpara que o endereço agora obsoleto desapareça completamente mais rápido.

informação relacionada