Как заставить 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? У меня тоже были проблемы с поиском.

eldarerathis
источник

Ответы:

17

Я так не думаю.

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

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

Это облом, но AFAIK нет ничего, кроме как накатить свою собственную сборку Android (или убедить Google изменить ее), которая действительно может решить эту проблему.

natevw
источник
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 или любого другого браузера, а также из любого другого приложения.

Прежде чем спросить: этот параметр (как описано выше) будет применяться только к модифицированной точке доступа WiFi. Так что не беспокойтесь, вы можете повлиять на любой другой. Если что-то выходит из строя, вы в любое время можете просто удалить точку доступа и заново создать ее.

Иззи
источник
15
Просто для ясности; Первоначально вопрос был не об использовании локального DNS-сервера, а об использовании mDNS (он же Bonjour) вместе со специальным доменным именем «.local», которое в некоторых системах настроено для выдачи запросов mDNS, а не DNS.
Жюль
Когда я устанавливаю статический IP-адрес, я необъяснимым образом получаю сообщение «сеть недоступна» на всех устройствах в локальной подсети.
Майкл