
Существует ли команда для вывода длинной версии IPv6 (т.е. со всеми нулями вместо короткой версии с ::
) интерфейса?
Например,ip -6 addr -I eth0 full
решение1
Что-то вроде
grep eth0 /proc/net/if_inet6 | cut -d' ' -f1
даст вам полный адрес в шестнадцатеричном формате. Вам все равно придется вставить:
если они вам нужны. (Вы не сказалипочемувам нужны были все нули - все, что нужно, :
также примет сокращенные формы с ::
).
Редактировать
Для префикса DNS PTR, что-то вроде
grep eth0 /proc/net/if_inet6 | cut -d' ' -f1 | rev | sed 's/./&./g'
Обратите внимание, что он вернетсявсеАдреса IPv6 для этого интерфейса, поэтому вам нужно повторить.
Также, если вам нужно установить записи DNS PTR из существующих IPv6 на интерфейсах, весьма вероятно, что-то в том, как вы обрабатываете DNS, очень неправильно. Обычно вы делаете это наоборот: какой бы ни был источник ваших записей DNS, он также должен определять адрес(а) на вашем интерфейсе(ах).
решение2
Для генерации обратных записей DNS, возможно, sipcalc
лучше использовать следующий инструмент:
$ 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.
Просто используйте grep
, чтобы получить само имя записи:
$ 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.