Jak sprawić, by mDNS działał w Chrome na Androidzie?

35

Czy istnieje sposób na połączenie się z http: //mylaptop.local/ za pomocą Chrome na Androida, czy też działa inna przeglądarka?

Podróżuję z sieci do sieci z laptopem i telefonem i często muszę podłączyć telefon do strony internetowej na moim laptopie. W przeglądarce Safari na iPhonie mogę po prostu użyć http: //mylaptop.local/ (zwykle naciskając przeładowanie w otwartym oknie przeglądarki), ale na moim urządzeniu z Androidem zawsze muszę dowiedzieć się, jaki jest obecny adres IP mojego laptopa ręcznie i łączę się z nim (nie kontroluję wielu sieci, w których pracuję i wydaje się, że DNS nigdy nie są zintegrowane z DHCP).

Szukałem odpowiedzi i wydaje się, że większość ludzi po prostu hackuje problemy przy użyciu statycznego DNS lub kontroluje DHCP i DNS, z których żaden nie dotyczy mojej sytuacji. Widzę też biblioteki kodów do obsługi mDNS (i innych zeroconf) w konkretnej aplikacji na Androida, więc może jest tam dodatek do Chrome lub inna przeglądarka, która go obsługuje?

Ponadto, czy jest jakieś oficjalne słowo na temat obsługi mDNS i domeny .local na całym urządzeniu w systemie Android? Miałem też problem ze znalezieniem tego.

eldarerathis
źródło

Odpowiedzi:

17

Nie wydaje mi się

Systemowy mechanizm rozpoznawania nazw DNS na platformach Apple ma wbudowaną obsługę mDNS, dzięki czemu prawie każda aplikacja ostatecznie kończy działanie przy użyciu podstawowej getaddrinfofunkcji i obsługi mDNS w adresach URL i nazwach hostów i tak dalej.

Na Androidzie i innych platformach, nawet jeśli działa demon Multicast DNS i dostępne biblioteki do jego używania, „typowe” wyszukiwania DNS nie . Podczas gdy ostatnie wydania Androida udostępniają programistom niektóre funkcje mDNS w ramach platformy, większość z nich nie rezygnuje (tak jak musieliby to zrobić) z nich korzystać.

To bułka z masłem, ale AFAIK nie pozostawia nic poza tym, by stworzyć własną niestandardową wersję Androida (lub przekonać Google do zmiany), która naprawdę mogłaby to rozwiązać.

natevw
źródło
4
To takie kiepskie! Linux potrzebował około 15 lat, aby poprawnie rozmawiać z Windows i Mac, teraz znów widzimy tę samą historię. mDNS nie jest obsługiwane w systemie Android. AirPrint nie jest obsługiwany w systemie Android. Chodź, interoperacyjność musi stać się regułą!
Philipp
7
Złożyłem błąd w projekcie Chromium. Oznacz go gwiazdką (powstrzymaj się od komentarzy +1), jeśli natrafisz na ten problem i chciałbyś go naprawić. crbug.com/405925
pwnall
1

To nie jest wina przeglądarki, ale sposób, w jaki Android obsługuje DHCP: po prostu ignoruje oferowany serwer DNS i trzyma się wstępnie skonfigurowanego Google DNS - który oczywiście nie zna twoich lokalnych nazw hostów. Oto jak obejść ten problem:

  1. Otwórz ustawienia
  2. Przejdź do Wi-Fi
  3. Przejdź do wpisu sieci Wi-Fi.
  4. Naciśnij i przytrzymaj wpis, wybierz opcję edycji.
  5. Aktywuj ustawienia zaawansowane
  6. Przełącz się z DHCP na statyczny i zastąp pierwszy serwer DNS (zwykle 8.8.8.8) własnym
  7. Zapisać

(opcjonalnie możesz spróbować przełączyć się z powrotem na DHCP po zmianie serwera DNS i sprawdzić, czy ten ostatni jest zachowany)

Teraz Android powinien najpierw użyć serwera DNS i przejść na serwer pomocniczy tylko wtedy, gdy Twój nie może rozwiązać problemu. Co oznacza, że ​​Twój „mylaptop.local” powinien być teraz znaleziony - z Chrome lub dowolnej innej przeglądarki, a także dowolnej innej aplikacji.

Zanim zapytasz: to ustawienie (jak opisano powyżej) dotyczy tylko zmodyfikowanego punktu dostępowego WiFi. Więc nie martw się, że możesz wpłynąć na inne osoby. Jeśli coś stanie się dzikie, w każdej chwili możesz po prostu usunąć AP i ponownie go utworzyć.

Izzy
źródło
15
Aby wyjaśnic; pierwotne pytanie nie dotyczyło w rzeczywistości korzystania z lokalnego serwera DNS, ale używania mDNS (alias Bonjour) wraz ze specjalną nazwą domeny „.local”, która w niektórych systemach jest skonfigurowana do wysyłania zapytań mDNS zamiast zapytań DNS.
Jules
Po ustawieniu statycznego adresu IP w niewytłumaczalny sposób otrzymuję komunikat „sieć jest nieosiągalna” na wszystkich urządzeniach w lokalnej podsieci.
Michael