Habilitar Privacy Extension
( net.ipv6.conf.eth0.use_tempaddr=2
in /etc/sysctl.conf
) IPv6
me 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_lft
propriedade para quase zero para acionar a criação do novo endereço temporário. Por tentativa e erro, isso não funcionará se preferred_lft
estiver 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_lft
para >= 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 ip
a saída JSON de ejq
alguma 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_lft
para que o endereço agora obsoleto desapareça completamente mais rápido.