Como fazer o mDNS funcionar no Chrome no Android?

34

Existe uma maneira de conectar-se ao http: //mylaptop.local/ usando o Chrome no Android ou existe outro navegador que funcione?

Viajo de rede em rede com meu laptop e meu telefone e muitas vezes tenho que conectar meu telefone a um site no meu laptop. Com o Safari em um iPhone, posso simplesmente usar o http: //mylaptop.local/ (geralmente pressionando o recarregamento em uma janela aberta do navegador), mas com o meu dispositivo Android, eu sempre tenho que descobrir o IP atual do meu laptop e perfurá-lo manualmente e conectar-se a ele (não controlo muitas das redes em que estou e elas parecem nunca ter o DNS integrado ao DHCP).

Procurei uma resposta e parece que a maioria das pessoas simplesmente resolve os problemas usando DNS estático ou controla o DHCP e o DNS, nenhum dos quais se aplica à minha situação. Também vejo bibliotecas de códigos para oferecer suporte a mDNS (e outras coisas do zeroconf) em um aplicativo Android específico, então talvez haja um complemento do Chrome por aí ou algum outro navegador que o suporte?

Além disso, existe alguma palavra oficial no amplo suporte de dispositivos para mDNS e o domínio .local no Android? Eu tive problemas para encontrar isso também.

eldarerathis
fonte

Respostas:

17

Acho que não.

O resolvedor de DNS do sistema nas plataformas da Apple tem suporte embutido para mDNS, de modo que praticamente qualquer aplicativo acaba usando a getaddrinfofunção principal e dando suporte a mDNS em URLs e nomes de host e outros enfeites.

No Android e em outras plataformas, mesmo se houver um daemon DNS Multicast em execução e bibliotecas disponíveis para usá-lo, as pesquisas DNS "típicas" não o fazem . Portanto, embora as versões recentes do Android ofereçam aos desenvolvedores alguns recursos de mDNS como parte da plataforma, a maioria não sai do seu caminho (como seria necessário) para usá-los.

É uma chatice, mas AFAIK não é nada menos do que lançar sua própria versão personalizada do Android (ou convencer o Google a alterá-la) que realmente poderia resolver isso.

natevw
fonte
4
Isso é tão idiota! Demorou 15 anos para o linux falar corretamente com windows e mac, agora vemos a mesma história novamente. mDNS não suportado no Android. AirPrint não suportado no Android. Vamos lá, a interoperabilidade deve se tornar a regra!
Philipp
7
Eu registrei um bug no projeto Chromium. Com uma estrela (evite marcar com +1), se você topar com esse problema e desejar corrigi-lo. crbug.com/405925
pwnall
1

Isso não é culpa do navegador, mas da maneira como o Android lida com o DHCP: ele simplesmente ignora o servidor DNS oferecido e adere ao DNS do Google pré-configurado - o que, obviamente, não conhece os nomes de host locais. Então, aqui está como contornar isso:

  1. Abrir configurações
  2. Navegue para WiFi
  3. Navegue até a entrada da sua rede WiFi.
  4. Toque longamente na entrada, optou por editar.
  5. Ativar configurações avançadas
  6. Alterne de DHCP para estático e substitua o primeiro servidor DNS (geralmente 8.8.8.8) pelo seu próprio
  7. Salve 

(opcionalmente, você pode tentar voltar ao DHCP depois de alterar o servidor DNS e verificar se o último é mantido)

Agora, o Android deve usar seu servidor DNS primeiro e alternar para o secundário apenas se o seu não puder ser resolvido. O que significa que seu "mylaptop.local" deve ser encontrado agora - no Chrome ou em qualquer outro navegador e também em qualquer outro aplicativo.

Antes de perguntar: Essa configuração (conforme descrita acima) se aplicaria apenas ao AP WiFi modificado. Portanto, não se preocupe, você pode afetar qualquer outro. Se algo der errado, você pode, a qualquer momento, simplesmente excluir o AP e recriá-lo.

Izzy
fonte
15
Só para esclarecer; a pergunta original não era realmente sobre o uso do servidor DNS local, mas usando o mDNS (também conhecido como Bonjour) junto com o nome de domínio ".local" especial que em alguns sistemas é configurado para emitir consultas mDNS em vez de DNS.
Jules
Quando defino um endereço IP estático, inexplicavelmente recebo "a rede está inacessível" em todos os dispositivos na sub-rede local.
Michael