阿瓦希公司;你好,DNS-SD区域文件

阿瓦希公司;你好,DNS-SD区域文件,dns,go,multicast,mdns,avahi,Dns,Go,Multicast,Mdns,Avahi,我希望对MDN的Go库进行改进: 我已经和作者谈过了,他只是说“我已经达到了它对我有用的程度”,这很好,完全符合开源的精神 他提到了Avahi、Bonjour和dns sd发现工具的一些互操作性问题,这些工具找不到他导出的服务 我希望了解Avahi在使用端口和简单名称进行简单服务时发布的记录 我本以为会有一个合适的版本: dig @localhost .local -t AXFR 可能有Avahi导出它的区域,但它对我不起作用(提示“你做错了!”)-我想了解典型Avahi服务导出的最低记录,并

我希望对MDN的Go库进行改进:

我已经和作者谈过了,他只是说“我已经达到了它对我有用的程度”,这很好,完全符合开源的精神

他提到了Avahi、Bonjour和dns sd发现工具的一些互操作性问题,这些工具找不到他导出的服务

我希望了解Avahi在使用端口和简单名称进行简单服务时发布的记录

我本以为会有一个合适的版本:

dig @localhost .local -t AXFR
可能有Avahi导出它的区域,但它对我不起作用(提示“你做错了!”)-我想了解典型Avahi服务导出的最低记录,并从我笔记本上的Apple实现中自动导出的Lee Hambleys Macbook.local中检查相同的内容,我可能能够改进对MDN的Go-lang支持

当其他人使用Avahi/Bonjour/MDN时,他们会使用什么工具来深入了解并检查工作是否按预期进行

#avahi的好心人非常好心,给了我以下提示:

 killall -USR1 avahi-daemon
这会导致
avahi守护进程
将其区域文件转储到
syslog

但理想情况下,我想知道如何最好地查询服务器,
tcpdump
看起来也很有希望,但它仍然只显示获得lookedup的记录,而不是区域中所有内容的完整转储:

sudo tcpdump dst port 53
Password:
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on en0, link-type EN10MB (Ethernet), capture size 65535 bytes
09:43:28.883763 IP 192.168.178.41.50916 > resolver2.opendns.com.domain: 50479+ A? e3191.c.akamaiedge.net. (40)
09:43:29.046201 IP 192.168.178.41.61989 > resolver2.opendns.com.domain: 55378+ PTR? 251.0.0.224.in-addr.arpa. (42)
09:43:29.123784 IP 192.168.178.41.56659 > resolver2.opendns.com.domain: 26471+ A? p05-btmmdns.icloud.com.akadns.net. (51)
09:43:29.819277 IP 192.168.178.41.53504 > resolver2.opendns.com.domain: 32010+ PTR? 220.220.67.208.in-addr.arpa. (45)
09:43:47.379251 IP 192.168.178.41.50916 > resolver2.opendns.com.domain: 50479+ A? e3191.c.akamaiedge.net. (40)
09:43:55.900406 IP 192.168.178.41.60511 > resolver2.opendns.com.domain: 32846+ AAAA? lc22.prod.livefyre.com. (40)
09:44:04.115159 IP 192.168.178.41.50916 > resolver2.opendns.com.domain: 50479+ A? e3191.c.akamaiedge.net. (40)
^C
7 packets captured
3187 packets received by filter
0 packets dropped by kernel

由于协议的工作方式,MDN不支持区域传输。据我所知,有两种可能的方法:

1)通过查询目标(服务器/子网),尝试暴力方法。您可以使用dig来完成这项工作,只需将查询发送到多播地址并查询您的目标,例如

dig-x192.168.0.10-p5353@224.0.0.251

还有一些现成的脚本和工具可以帮助枚举MDN目标。一些例子包括

  • -Z和朋友们
2)强制守护进程转储其区域文件(或设置)。你已经发现Avahi是服从的

killall-USR1 avahi守护程序

苹果公司的Bonjour包括一款不提供倾倒区信息的产品。但是,您可以添加更多日志记录以获得类似的好处

SIGUSR1信号切换附加记录,并带有警告和通知 默认情况下启用:

   % sudo killall -USR1 mDNSResponder
启用此日志记录后,用户还可以使用syslog(1)来 更改进程的日志筛选器。例如,要启用日志 紧急级别-调试:

   % sudo syslog -c mDNSResponder -d
SIGUSR2信号切换数据包记录:

   % sudo killall -USR2 mDNSResponder
SIGINFO信号将转储内部状态的快照摘要 到/var/log/system.log:

   % sudo killall -INFO mDNSResponder

此外,还可能用于调试协议错误。这应该足以解决互操作性错误

mDNS在端口5353上运行,因此您必须对此进行筛选,而不是端口53:-)我认为区域转移不应该与MDN一起工作。我想你可能把mDNS/DNS-SD和Avahi搞混了?花几个小时浏览RFC可能是值得的:谢谢,我几乎肯定把我的术语弄混了,据我所知,dns sd希望dns记录导出到标准dns,MDN在不同的端口上运行,但这些记录看起来像dns记录?我没有尝试过,但这似乎都是可靠的建议,特别是
dig
ing多播地址