列印出介面的長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.

相關內容