
是否有指令列印出::
介面的長 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.