打印出接口的长IPv6

打印出接口的长IPv6

是否有命令打印出::接口的长 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 地址,因此您需要迭代。

另外,如果您需要在接口上的现有 IPv6 中设置 DNS PTR 条目,则您处理 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.

相关内容