Debian 无法解析 mdns 查询

Debian 无法解析 mdns 查询

有 4 个 Debian 机器,突然都无法解析 mdns ip4 查询。相反,MacOS 似乎可以很好地解析这些查询。

我可以这样做avahi-resolve --name hostname.local并得到结果“超时”

奇怪的是,我可以在 wireshark 中看到 mdns 查询正在离开,而响应正在返回,即

User Datagram Protocol, Src Port: 18189, Dst Port: 5353
Multicast Domain Name System (response)
 Transaction ID: 0x0000
 Flags: 0x8400 Standard query response, No error
 Questions: 0
 Answer RRs: 1
 Authority RRs: 0
 Additional RRs: 0
 Answers
     hostname.local: type A, class IN, cache flush, addr ip-here
         Name: hostname.local
         Type: A (Host Address) (1)
         .000 0000 0000 0001 = Class: IN (0x0001)
         1... .... .... .... = Cache flush: True
         Time to live: 120 (2 minutes)
         Data length: 4
         Address: ip-here
 [Unsolicited: True]

所有这些机器都有一个 l2 桥:br0映射到单个以太网端口,所有其他网络似乎都按预期工作(ping 直接 ip 等)

我不太清楚为什么它没有解决查询。如能提供任何帮助,我将不胜感激。

更新:

我比较了正常工作和不正常工作的 mDNS 响应之间的差异。4 个主机能够解析 mDNS 查询,但是我运行的 3 个“服务器”已安装 docker,从那时起,它们会从其他端口响应 mDNS 查询,5353这似乎是唯一明显的区别(除了 ip/主机名/校验和)。

我将保留这个问题,一旦我找到让 docker 与 mDNS 良好配合的方法,我就会回答(互联网上有很多关于此问题的问题)

更新2:

这个问题似乎是在安装 k8s 后开始的,但只有在应用 callico 网络后才会出现。它似乎安装了许多旧版 iptables 规则。当目标端口为 5353 时,我可以通过添加新的 iptables 规则来执行 SNAT,从而使 mDNS 在正确的端口上响应。不幸的是,calico 会不断刷新并将此规则进一步推到链的下方,从而阻止其运行。

我改用 flannel 网络并删除了 calico。

答案1

看来这是 avahi 守护进程中的一个错误。

https://github.com/lathiat/avahi/issues/448

相关内容