我正在寻找一种仅通过 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
在进行查找后不会自动退出,但会继续监视更改。你需要在一段时间后杀死它。您也可以使用
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 以强调相关部分):