
Existe um comando para imprimir a versão longa do IPv6 (ou seja, com todos os zeros em vez da versão curta com ::
) de uma interface?
Por exemplo,ip -6 addr -I eth0 full
Responder1
Algo como
grep eth0 /proc/net/if_inet6 | cut -d' ' -f1
lhe dará o endereço completo em hexdecimal. Você ainda precisa inserir os :
separadores se quiser. (Você não dissepor quevocê precisava de todos os zeros - tudo o que for necessário :
também aceitará formulários curtos com ::
).
Editar
Para o prefixo de um DNS PTR, algo como
grep eth0 /proc/net/if_inet6 | cut -d' ' -f1 | rev | sed 's/./&./g'
Observe que ele retornarátodosEndereços IPv6 para esta interface, então você precisa iterar.
Além disso, se você precisar definir entradas DNS PTR do IPv6 existente nas interfaces, muito provavelmente algo na maneira como você lida com o DNS está muito errado. Normalmente você faz o contrário: qualquer que seja a fonte de suas entradas DNS, isso também deve determinar o(s) endereço(s) em sua(s) interface(s).
Responder2
Para gerar registros DNS reversos, talvez sipcalc
seja uma ferramenta melhor:
$ sipcalc -r 2001:db8::1
-[ipv6 : 2001:db8::1] - 0
[IPV6 DNS]
Reverse DNS (ip6.arpa) -
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa.
Basta usar grep
para obter o próprio nome do registro:
$ sipcalc -r 2001:db8::1 | fgrep .ip6.arpa
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa.