我想avahi-resolve
并且dig -p 5353 @224.0.0.251
做了很多同样的事情。
但是,我有一个设备,我可以使用avahi-resolve
但不使用来解析其名称dig
:
$ avahi-resolve --name ding-5cd80b3.local
ding-5cd80b3.local 192.168.0.248
$ dig +short -p 5353 @224.0.0.251 ding-5cd80b3.local
;; Warning: ID mismatch: expected ID 60466, got 0
我也不能进行反向查找:
$ avahi-resolve --address 192.168.0.248
Failed to resolve address '192.168.0.248': Timeout reached
$ dig +short -p 5353 @224.0.0.251 -x 192.168.0.248
;; connection timed out; no servers could be reached
宣传其名称的设备是一个简单的物联网设备,因此我对它具有非常基本的 mDNS 支持(如果使用ESP-IDF 提供的mDNS 支持)并不感到惊讶。
我已经尝试对两者都使用详细标志,avahi-resolve
并dig
查看是否可以让我对正在发生的事情有所了解,但在这两种情况下,我都没有得到任何额外的见解。
我猜这ID mismatch
意味着它dig
实际上正在得到响应,但拒绝显示它,因为它将这解释为DNS 欺骗的情况,同时avahi-resolve
更加宽容。
除了使用 Wireshark 之外,有什么方法可以让dig
我变得更加宽容(我试过了)或者我可以看到这里发生了什么?+besteffort
我正在使用 Ubuntu,并且如前所述,有问题的设备正在使用ESP-IDF。
问题似乎确实与底层 ESP-IDF 库及其 mDNS 支持有关。
它的响应中不包含原始查询中包含的 ID,它始终只使用 0。因此
dig
错误说ID mismatch: expected ID 60466, got 0
.我已经针对 ESP-IDF记录了 issue #5574来解决这个问题。