Як заставити mDNS працювати для Chrome на Android?


35

Чи є спосіб підключитися до http: //mylaptop.local/ за допомогою Chrome на Android, чи є інший браузер, який працює?

Я подорожую від мережі до мережі зі своїм ноутбуком і телефоном, і мені часто доводиться підключати телефон до веб-сайту на своєму ноутбуці. З Safari на iPhone я можу просто використовувати http: //mylaptop.local/ (як правило, натискаючи перезавантажити у відкритому вікні браузера), але за допомогою свого пристрою Android я завжди повинен з'ясувати поточний IP свого ноутбука, щоб зафіксувати його вручну і підключитися до нього (я не контролюю багато мереж, в яких я ввімкнувся, і, здається, ніколи не було інтегровано DNS з DHCP).

Я шукав відповідь, і, здається, більшість людей просто ламають проблеми, використовуючи статичний DNS, або вони контролюють DHCP і DNS, жодна з яких не застосовується для моєї ситуації. Також я бачу бібліотеки кодів для підтримки mDNS (та інших матеріалів zeroconf) у певній програмі Android, тож, можливо, там додано додаток Chrome чи якийсь інший браузер, який його підтримує?

Крім того, чи є офіційне слово на широкій підтримці пристрою для mDNS та домену .local на Android? Я також мав проблеми з цим знайти.

Відповіді:


17

Я не думаю, що так.

Системний DNS-рішальник на платформах Apple має вбудовану підтримку mDNS, так що майже будь-яка програма в кінцевому підсумку закінчується використанням основної getaddrinfoфункції та підтримкою mDNS в URL-адресах та іменах хостів та що-небудь ще.

На Android та інших платформах, навіть якщо є демон DNS Multicast, і бібліотеки для його використання доступні, "типових" пошукових запитів DNS не роблять . Тож, хоча останні випуски Android надають розробникам деякі функції mDNS як частини платформи, більшість не виходять зі шляху (як це потрібно було б) для їх використання.

Це непросто, але AFAIK не має нічого іншого, як прокрутити власну власну Android-версію (або переконати Google змінити її), що реально може вирішити це.


4
Це так кульгаво! Пройшло як 15 років для Linux, щоб правильно розмовляти з Windows та Mac, тепер ми знову бачимо ту саму історію. mDNS не підтримується на Android. AirPrint не підтримується на Android. Давай, сумісність повинна стати правилом!
Філіп

7
Я подав помилку на проект Chromium. Будь ласка, позначте його зірком (утримайтеся від коментарів +1), якщо ви натрапите на цю проблему і хочете її вирішити. crbug.com/405925
pwnall

1

Це не вина веб-переглядача, а в тому, як Android обробляє DHCP: він просто ігнорує запропонований DNS-сервер і дотримується попередньо налаштованого Google DNS - що, звичайно, не знає ваших локальних імен хостів. Отже, ось як обійти це:

  1. Відкрийте Налаштування
  2. Перейдіть до WiFi
  3. Перейдіть до входу у вашу мережу WiFi.
  4. Довго торкніться пункту та вибрав редагування.
  5. Активуйте розширені настройки
  6. Перейдіть з DHCP на статичний і замініть перший DNS-сервер (як правило 8.8.8.8) своїм
  7. Зберегти

(необов'язково, ви можете спробувати повернутися до DHCP після зміни сервера DNS і побачити, чи зберігається останній)

Тепер Android спочатку повинен використовувати ваш DNS-сервер і переходити на вторинний, лише якщо ваш не може вирішити. Це означає, що ваш "mylaptop.local" слід знайти зараз - із Chrome чи будь-якого іншого браузера, а також будь-якого іншого додатка.

Перш ніж запитати: Цей параметр (як описано вище) застосовуватиметься лише до модифікованої AP WiFi. Тож ніяких хвилювань ви не могли б вплинути на будь-якого іншого. Якщо щось скажеться, ви в будь-який час можете просто видалити AP і знову створити його.


15
Просто для уточнення; оригінальне запитання було насправді не у використанні локального сервера DNS, а у використанні mDNS (він же Bonjour), а також спеціального доменного імені ".local", яке в деяких системах налаштовано для видачі mDNS-запитів, а не DNS-запитів.
Жуль

Коли я встановлюю статичну IP-адресу, я незрозуміло отримую "мережа недосяжна" на всіх пристроях локальної підмережі.
Майкл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.