当前位置: 首页>>技术教程>>正文


在iPad上的DreamPlug Ubuntu上使用Avahi

, , ,

问题描述

在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永远无法解析主机名,直到在Mac上首先解析主机名为止……这很奇怪,因为iPad和Mac之间没有连接,只是它们已连接到主机。相同的访问点(DreamPlug)。

因此,请再次澄清一下:iPad上的Safari在访问http://plug.local时将挂起(直到报告浏览失败),除非我在Mac上访问http://plug.local,运行ping plug.local,执行ssh root@plug.local或基本上执行任何其他可解析主机名的操作, iPad立即解析主机名,并开始正常工作。

如果我的理解是正确的,则在连接iPad时,它们会广播对plug.local的解析请求。无论出于何种原因,DreamPlug都会忽略此请求(或者永远不会收到它)。但是,Mac确实可以广播其请求。它广播一个解析请求,并且DreamPlug广播播回结果plug.local->。 192.168.1.1。然后,iPad收到此结果(该结果确实是Mac的),然后可以成功解析。

我很乐意根据要求提供avahi-daemon.conf或其他配置文件。

更新:我现在设法使用Wireshark,发现iPad确实确实向网络广播了一个请求。

我捕获了DID导致Avahi做出响应的数据包,以及没有得到的数据包。

它们看起来完全相同,唯一的区别是,失败的磁盘指定了额外的RR类型OPT …我不知道OPT记录是什么。难道是Avahi不喜欢出于某些原因附加了OPT RR的DNS查询?

这是Wireshark的两个屏幕截图。第一个显示了从台式计算机发送的”good” mDNS请求(在这种情况下,该设备称为runway.local)。此查询工作正常,服务器(位于192.168.1.1)立即响应:

这是从runway.local返回的响应的示例:

同时,这是第二个DNS查询,该查询已从iPad发送给同一主机名runway.local。在这种情况下,似乎只是忽略了该请求(无论如何,此DNS查询都没有收到响应):

尝试查找导致问题的iPad请求中的内容,这两个数据包似乎几乎完全相同,从台式机(运行OS X)和iPad发送的mDNS查询之间唯一的区别是iPad附加了OPT资源记录到DNS请求的底部。

问题是:资源记录的意义是什么-是-还是其他原因-导致该DNS请求被Avahi忽略。

更新这可能是我一直在寻找的突破:

我一直在使用–debug标志运行avahi-daemon,并且注意到很多“无效的查询数据包”。消息。这导致我转到此页面:http://avahi.org/ticket/284,这似乎是一个已知问题(尽管应该解决)。

特别:

A tcpdump makes me believe that this is due to Mac OS 10.6 using RFC2671 to add information in the additional data section of DNS queries. Specifically, it is supplying the ‘UDP payload size’ (in my case, 1440) as hint for the max size of response packets. […] Avahi considers queries with non-empty additional data sections invalid, where it checks that AVAHI_DNS_FIELD_ARCOUNT != 0 just before generating the Invalid query packet message.

最佳方法

我不经常去科幻小说,但是我可以看到这个问题吸引了相当多的关注,所以让我在这里总结一下我的发现,并希望为遇到同样问题的人提供一些解决方案:

似乎这是Ubuntu Jaunty(http://avahi.org/ticket/284)附带的Avahi版本的一个错误,该错误与提供UDP有效负载大小有关,可能是由于mDNS规范有了更近期的更改(尽管我尚未阅读)我)。正如我在对原始问题的评论中所解释的那样,我确实尝试升级了Avahi的版本,但是我的Linux技能不是应有的技能,因此我无法使其正常工作。 (无论哪种方式,实际上都建议不要运行3年不支持的操作系统…)

最后,我尝试了一下,擦除了DreamPlug的SD卡,并在其上安装了Debian Squeeze,效果很好(尽管仅适用于iOS 5.0+)。关于如何更改DreamPlug操作系统的讨论不在此问题的讨论范围之内,但是归根结底,归根结底是Avahi的版本已过时。使用较新的版本,您应该会很好!

祝好运!

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7945.html,未经允许,请勿转载。