在DreamPlug(这是一个运行Ubuntu Jaunty的插件计算机)上使用Avahi时,我遇到以下非常奇怪的问题。
花了几天时间后,我想我已经设法缩小了这个问题。
DreamPlug充当WiFi接入点,并具有主机名plug
和IP地址192.168.1.1
(在/etc/hosts
和/etc/hostname
)并运行lighttpd。
现在,我的Mac可以直接在Chrome中访问http://plug.local
,但是如果我尝试在iPad上加载http://plug.local
,则不起作用。 也就是说, 直到我加载桌面上的页面才能工作。
出于某种原因,iPad永远无法parsing主机名,直到Mac上第一次parsing主机名…这很奇怪,因为除了连接到Mac之外,iPad和Mac之间没有连接相同的接入点(DreamPlug)。
所以只是为了澄清:除非我访问Mac上的http://plug.local
否则访问http://plug.local
时,iPad上的Safari浏览器将挂起(直到它报告浏览失败),运行ping plug.local
,执行ssh [email protected]
或基本上做任何其他解决主机名,在这一点上,iPad立即parsing主机名,它开始正常工作。
如果我的理解是正确的,当iPad连接他们广播一个解决scheme请求plug.local
。 无论出于何种原因,这个请求被DreamPlug忽略(或者它永远不会被接收)。 但是,Mac设法播放了它的请求。 它广播一个parsing请求和DreamPlug brodcast返回结果plug.local
– > 192.168.1.1
。 iPad然后收到这个结果(这是真正的目的地为Mac),然后能够成功解决。
我很乐意根据要求提供我的avahi-daemon.conf
或其他configuration文件。
更新:我现在设法使用Wireshark,发现iPad确实向networking传播了一个请求。
我已经捕获了一个DID导致Avahi响应的数据包,以及一个没有响应的数据包。
它们看起来完全一样,唯一的区别是没有指定另一个types为OPT
RR …我不知道OPT
logging是什么。 Avahi可能会因为某些原因不喜欢附加OPT
RR的DNS查询吗?
这里有两个来自Wireshark的截图。 第一个显示从桌面计算机发送的“好”mDNS请求(在这种情况下,该设备称为runway.local
)。 这个查询工作正常,服务器(在192.168.1.1
)立即响应:
以下是从runway.local
返回的响应runway.local
:
同时,这里是第二个DNS查询,它已经从iPad发送给相同的主机名runway.local
。 在这种情况下,请求似乎只是被忽略(无论如何,这个DNS查询都没有收到响应):
试图追踪iPad请求中导致问题的原因,看起来这两个数据包几乎完全相同,从桌面(运行OS X)和iPad发送的mDNS查询的唯一区别在于iPad附加一个OPT
资源logging到DNS请求的底部。
问题是:资源logging的重要性是什么 – 是否这个 – 或者是别的什么 – 负责这个DNS请求被Avahi忽略。
更新这可能是我一直在寻找的突破:
我一直在使用–debug标志运行avahi-daemon,并且我注意到了很多“无效的查询包”。 消息。 这导致我到这个页面: http : //avahi.org/ticket/284这似乎是一个已知的问题(尽pipe一个应该被解决)。
特别:
tcpdump使我相信这是由于Mac OS 10.6使用RFC2671在DNS查询的附加数据部分添加信息。 具体来说,它提供的“UDP有效负载大小”(在我的情况下,1440)作为响应数据包的最大大小的提示。 Avahi认为非空的附加数据段的查询是无效的,在生成无效查询包消息之前它检查AVAHI_DNS_FIELD_ARCOUNT!= 0。
我没有经常使用SF,但是我可以看到这个问题已经引起了相当的关注,所以让我在这里总结一下我的发现,并希望为遇到同样问题的人提供一些解决scheme:
看来,这是一个与Ubuntu Jaunty( http://avahi.org/ticket/284 )一起提供UDP有效负载大小的Avahi版本的错误,可能会导致更新的更新mDNS规范(虽然我没有自己读过)。 正如我在原始问题的评论中解释的那样,我确实尝试升级Avahi的版本,但是我的Linux技能并不是他们应该做的,我也没有设法让它工作。 (无论哪种方式,运行一个3岁的不支持的操作系统真的不build议…)
最后,我冒了出来,擦拭了DreamPlug的SD卡,并安装了Debian Squeeze,效果很好(尽pipe只有iOS 5.0+)。 关于如何改变DreamPlug操作系统的讨论不在这个问题的范围之内,但是在一天结束的时候归结为一个过时的版本的Avahi。 使用更新的版本,你应该没问题!
祝你好运!