avahi-resolve 可以解析主机名,而 dig -p 5353 @224.0.0.251 却不能?

avahi-resolve 可以解析主机名,而 dig -p 5353 @224.0.0.251 却不能?

我也想到了同样的事情,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 支持(如果使用mDNS支持由 ESP-IDF 提供)。

我尝试过对两者使用详细标志avahi-resolvedig看看是否能让我了解正在发生的事情,但在任何一种情况下,我都没有得到任何额外的了解。

我猜这ID mismatch意味着它dig实际上得到了回应,但它拒绝显示它,因为它将此解释为DNS 欺骗同时也avahi-resolve变得更加宽容。

除了使用 Wireshark 之外,还有什么方法可以变得dig更加宽容(我试过了+besteffort)或者有什么方法可以让我了解这里发生了什么?

我正在使用 Ubuntu,如上所述,有问题的设备正在使用ESP-IDF

答案1

问题确实似乎出在底层 ESP-IDF 库及其 mDNS 支持上。

它没有在响应中包含原始查询中包含的 ID,它始终只使用 0。因此dig出现错误ID mismatch: expected ID 60466, got 0

我已经记录了问题#5574针对 ESP-IDF 来解决这个问题。

相关内容