有 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 守护进程中的一个错误。