Imprimir longo IPv6 de uma interface

1

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

    
por Volker Raschek 07.07.2017 / 09:53

2 respostas

3

Algo como

grep eth0 /proc/net/if_inet6 | cut -d' ' -f1

fornecerá o endereço completo em hexadecimal. Você ainda precisa inserir os : separadores, se desejar. (Você não disse por que você precisava de todos os zeros - qualquer coisa que precise de : 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á todos endereços IPv6 para essa interface, portanto, é necessário iterar.

Além disso, se você precisar definir entradas de PTR do DNS a partir do IPv6 existente nas interfaces, muito provavelmente algo na maneira como você lida com o DNS está muito errado. Normalmente, você faz o inverso: seja qual for a origem das suas entradas DNS, isso também deve determinar o (s) endereço (s) na (s) sua (s) interface (s).

    
por 07.07.2017 / 10:04
2

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.

Use apenas grep para obter o 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.
    
por 07.07.2017 / 15:35