如何在 OSX 上通過 IPv6 製作反向 mDNS?
我正在尋找一種僅通過 IPv6 在 OSX 上進行反向 mDNS 查詢的方法。我對使用 IPv4 的解決方案不感興趣。
以下適用於
dig
9.16.1 的 Linux:dig +short @ff02::fb -p 5353 -x 2001:db8::1
我已經在 OSX 上安裝
dig
了帶有 homebrew 的 9.16.7,該命令具有完全相同的參數會產生超時。並且在 Wireshark 上沒有傳出查詢的跡象。以下在 Linux 和 OSX 上執行良好:
dig +short @224.0.0.251 -p 5353 -x 192.168.1.23
該二進製文件
avahi-resolve-address
在 OSX 上不可用,而且我沒有找到使反向 DNS 與dns-sd
.這是使用的作業系統版本:
- OSX 版本:Catalina 10.15.7
- Linux:Ubuntu 20.04
我找到了幾種方法來做到這一點,但它們都有點難看。首先,您可以使用
dns-sd -q
並指定ptr
記錄類型…但是您需要自己將要查找的地址轉換為逐字節反向格式。例如,要查找fe80::4e6:97e7:d892:d977
您將使用:dns-sd -q 7.7.9.d.2.9.8.d.7.e.7.9.6.e.4.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa ptr
不幸的是,這似乎只適用於連結本地地址,而不適用於公共地址。我不知道為什麼。另外,請注意
dns-sd
在進行查找後不會自動退出,但會繼續監視更改。你需要在一段時間後殺死它。您也可以使用
dig
,有點像您的原始命令,但您需要告訴它通過哪個介面發送查詢,並且格式相當奇怪。要做的“標準”事情是為介面添加一個區域索引,例如將其發送到ff02::fb
您en1
使用@ff02::fb%en1
的 . 但dig
不喜歡這種格式,所以你必須偷偷摸摸。基於 BSD 的 unix,包括 macOS,允許您將數字區域索引放在某些地址的第二個 16 位字中,這在此處確實有效。這是一個(匿名的)範例,我netstat -rn -f inet6
用來找出2001:db8:1234:5678::/64
在 interface 上en1
,該介面的連結號是5
,然後使用它進行查找(我添加了 ^^^s 以強調相關部分):% netstat -rn -f inet6 Routing tables Internet6: Destination Gateway Flags Netif Expire [...] 2001:db8:1234:5678::/64 link#5 UC en1 ^^^^^^ ^^^ [...] % dig +short @ff02:5::fb -p 5353 -x 2001:db8:1234:5678:109f:8688:b2d1:3f12 ^ Gordons-MacBook.local.