Verwenden von Avahi auf DreamPlug Ubuntu mit iPads


17

Ich habe das folgende, sehr merkwürdige Problem mit der Verwendung von Avahi auf dem DreamPlug (einem Plug-Computer, auf dem Ubuntu Jaunty ausgeführt wird).

Nachdem ich Tage damit verbracht habe, denke ich, habe ich es geschafft, das Problem einzugrenzen.

Der DreamPlug fungiert als WLAN-Zugangspunkt und verfügt über den Hostnamen plugund die IP-Adresse 192.168.1.1(die in /etc/hostsund festgelegt sind /etc/hostname) und führt lighttpd aus.

Jetzt funktioniert mein Mac sofort mit dem Zugriff http://plug.localauf Chrome. Wenn ich jedoch versuche, http://plug.localdas iPad zu laden , funktioniert dies nicht. Das heißt, es funktioniert erst, wenn ich die Seite auf den Desktop lade.

Aus irgendeinem Grund können die iPads den Hostnamen erst auflösen, wenn der Hostname zuerst auf dem Mac aufgelöst wurde. Das ist seltsam, weil es keine Verbindung zwischen den iPads und dem Mac gibt, außer der Tatsache, dass sie mit dem verbunden sind gleicher Zugangspunkt (der DreamPlug).

Um es noch einmal zu verdeutlichen: Safari auf dem iPad bleibt beim Zugriff hängen (bis es meldet, dass das Surfen fehlgeschlagen ist), es http://plug.localsei denn, ich greife http://plug.localauf den Mac zu, führe aus ping plug.local, tue ssh root@plug.localoder tue im Grunde genommen etwas anderes, das den Hostnamen auflöst Hostname und es beginnt ordnungsgemäß zu funktionieren.

Wenn ich das richtig verstehe, senden die iPads beim Verbinden eine Auflösungsanforderung für plug.local. Aus irgendeinem Grund wird diese Anforderung vom DreamPlug ignoriert (oder sie wird nie empfangen). Der Mac schafft es jedoch, seine Anfrage zu senden. Es sendet eine Auflösungsanforderung und das DreamPlug-Brodcast sendet das Ergebnis zurück plug.local-> 192.168.1.1. Die iPads erhalten dann dieses Ergebnis (das eigentlich für den Mac bestimmt war) und können es dann erfolgreich auflösen.

Gerne avahi-daemon.confstelle ich meine oder andere Konfigurationsdateien auf Anfrage zur Verfügung.

Update: Ich habe es jetzt geschafft, Wireshark zu verwenden und festgestellt, dass die iPads tatsächlich eine Anfrage an das Netzwerk senden.

Ich habe sowohl ein Paket erfasst, das DID zu einer Antwort von Avahi geführt hat, als auch ein Paket, das NICHT beantwortet wurde.

Sie scheinen beide völlig identisch zu sein, der einzige Unterschied ist, dass derjenige, der versagt hat, eine zusätzliche RR vom Typ spezifiziert hat OPT... Ich habe keine Ahnung, was ein OPTDatensatz ist. Könnte es sein, dass Avahi DNS-Abfragen mit OPTangehängten RRs aus irgendeinem Grund nicht mag ?

Hier sind zwei Screenshots von Wireshark. Die erste zeigt eine "gute" mDNS-Anfrage, die vom Desktop-Computer gesendet wird (in diesem Fall wird das Gerät aufgerufen runway.local). Diese Abfrage funktioniert einwandfrei und der Server (at 192.168.1.1) antwortet sofort:

Eine mDNS-Abfrage, die funktioniert

Hier ist ein Beispiel für die Antwort, die zurückgegeben wird runway.local:

Bildbeschreibung hier eingeben

In der Zwischenzeit ist hier eine zweite DNS-Abfrage, die vom iPad für denselben Hostnamen gesendet wurde runway.local. In diesem Fall scheint die Anforderung einfach ignoriert zu werden (auf keinen Fall wird jemals eine Antwort auf diese DNS-Abfrage empfangen):

Bildbeschreibung hier eingeben

Beim Versuch, herauszufinden, was in der iPad-Anfrage enthalten ist, die das Problem verursacht, scheinen die beiden Pakete fast identisch zu sein. Der einzige Unterschied zwischen mDNS-Abfragen, die vom Desktop (unter OS X) und dem iPad gesendet werden, besteht darin, dass das iPad angehängt wird einen OPTRessourceneintrag am Ende der DNS-Anfrage.

Die Frage ist: Welche Bedeutung hat der Ressourcendatensatz - und ist es dieser - oder ist es etwas anderes - der dafür verantwortlich ist, dass diese DNS-Anfrage von Avahi ignoriert wird?

UPDATE Dies könnte der Durchbruch sein, nach dem ich gesucht habe:

Ich habe einen Avahi-Daemon mit dem Flag --debug ausgeführt und eine Menge "Ungültiges Abfragepaket" festgestellt. Mitteilungen. Dies führte mich zu dieser Seite: http://avahi.org/ticket/284, die anscheinend ein bekanntes Problem ist (obwohl eines, das gelöst werden soll).

Speziell:

Ein tcpdump lässt mich vermuten, dass dies auf Mac OS 10.6 zurückzuführen ist, das RFC2671 verwendet, um Informationen im Abschnitt "Zusätzliche Daten" von DNS-Abfragen hinzuzufügen. Insbesondere liefert es die 'UDP Payload Size' (in meinem Fall 1440) als Hinweis für die maximale Größe der Antwortpakete. [...] Avahi betrachtet Abfragen mit nicht leeren zusätzlichen Datenabschnitten als ungültig, wobei überprüft wird, ob AVAHI_DNS_FIELD_ARCOUNT! = 0 ist, bevor die Meldung Ungültiges Abfragepaket generiert wird.


Ich sollte hinzufügen, dass, wenn ich mich plugüber SSH bei DreamPlug aka anmelde und den Befehl ausführe, der ping 224.0.0.251die mDNS-Multicast-Adresse ist, ich das Ergebnis erhalte connect: Network is unreachable- nicht sicher, ob dies geschehen soll, aber für jeden nützlich sein kann, der helfen kann.
jon

Update: Ich habe einen Avahi-Daemon mit dem Flag --debug ausgeführt und eine Menge "Ungültiges Abfragepaket" festgestellt. Mitteilungen. Dies führte mich zu dieser Seite: avahi.org/ticket/284, bei der es sich anscheinend um ein bekanntes Problem handelt (wenngleich eines, das gelöst werden soll). Insbesondere: Ein tcpdump lässt mich glauben, dass dies auf Mac OS 10.6 zurückzuführen ist, das RFC2671 verwendet, um Informationen in den Abschnitt "Zusätzliche Daten" von DNS-Abfragen einzufügen. Insbesondere liefert es die 'UDP Payload Size' (in meinem Fall 1440) als Hinweis für die maximale Größe der Antwortpakete.
jon

Anscheinend haben Sie dort eine Antwort. Können Sie Ihr Avahi auf dem DreamPlug aufrüsten?
Bill Weiss

3
Was ist mit einem echten DNS-Server außer Avahi? So etwas wie bind / named. Haben Sie versucht, dies zu tun?
jap1968

2
Fantastische Frage mit viel Detail! Wenn Sie es herausfinden, schreiben Sie Ihre eigene Antwort und markieren Sie sie mit einem Häkchen - dies hilft anderen und kann Ihnen sogar Wiederholungspunkte geben.
Mei

Antworten:


1

Ich bin nicht so häufig in der SF, aber ich kann sehen, dass diese Frage einiges an Aufmerksamkeit auf sich gezogen hat. Lassen Sie mich daher meine Ergebnisse hier zusammenfassen und hoffentlich denjenigen eine Lösung anbieten, die das gleiche Problem haben:

Es scheint, dass dies ein Fehler in der Version von Avahi ist, die mit Ubuntu Jaunty ( http://avahi.org/ticket/284 ) geliefert wird, um die UDP-Nutzlastgröße bereitzustellen, was wahrscheinlich zu einer kürzeren Änderung der führt mDNS spec (obwohl ich es selbst nicht gelesen habe). Wie ich in den Kommentaren zur ursprünglichen Frage erklärt habe, habe ich versucht, meine Avahi-Version zu aktualisieren, aber meine Linux-Kenntnisse sind nicht so, wie sie sein sollten, und ich habe es nicht geschafft, sie zum Laufen zu bringen. (Auf jeden Fall ist es nicht empfehlenswert, ein 3 Jahre altes, nicht unterstütztes Betriebssystem zu verwenden ...)

Am Ende habe ich den Sprung gewagt, die SD-Karte des DreamPlug gelöscht und Debian Squeeze darauf installiert, was gut funktionierte (allerdings nur mit iOS 5.0+). Eine Diskussion darüber, wie das DreamPlug-Betriebssystem geändert werden kann, steht außer Frage. Letztendlich handelt es sich jedoch um eine veraltete Version von Avahi. Verwenden Sie eine neuere Version und es sollte Ihnen gut gehen!

Viel Glück!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.