Usando o Avahi no DreamPlug Ubuntu com iPads

17

Eu tenho o seguinte problema muito peculiar ao usar o Avahi no DreamPlug (que é um computador com o Ubuntu Jaunty).

Depois de passar dias nisso, acho que consegui diminuir o problema.

O DreamPlug atua como o ponto de acesso Wi-Fi, e tem o nome de host pluge endereço IP 192.168.1.1(que é definido em ambos /etc/hostse /etc/hostname) e corre lighttpd.

Agora, meu Mac trabalha imediatamente acessando o http://plug.localChrome; no entanto, se eu tentar carregar http://plug.localno iPad, ele não funciona. Ou seja, ele não funciona até carregar a página na área de trabalho.

Por alguma razão, os iPads nunca conseguem resolver o nome do host, até que o nome do host seja resolvido pela primeira vez no Mac ... o que é estranho, porque não há conexão entre os iPads e o Mac além do fato de estarem conectados ao mesmo ponto de acesso (o DreamPlug).

Portanto, para esclarecer novamente: o Safari no iPad travará (até relatar que a navegação falhou) ao acessar, a http://plug.localmenos que eu acesse http://plug.localno Mac, execute ping plug.local, faça ssh [email protected]ou basicamente faça qualquer outra coisa que resolva o nome do host, quando o iPad resolve instantaneamente o nome do host e ele começa a funcionar corretamente.

Se meu entendimento estiver correto, quando os iPads se conectam, eles transmitem uma solicitação de resolução plug.local. Por qualquer motivo, essa solicitação é ignorada pelo DreamPlug (ou nunca é recebida). No entanto, o Mac faz conseguem transmitir o seu pedido. Ele transmite uma solicitação de resolução e o DreamPlug fornece o resultado plug.local-> 192.168.1.1. Os iPads recebem esse resultado (realmente destinado ao Mac) e podem resolver com êxito.

Ficaria feliz em fornecer meus avahi-daemon.confou outros arquivos de configuração, mediante solicitação.

Atualização: agora eu consegui usar o Wireshark e descobri que os iPads realmente transmitem uma solicitação para a rede.

Eu capturei um pacote que resultou em uma resposta de Avahi e um que NÃO.

Os dois parecem completamente idênticos, a única diferença é que o que falhou especificou um RR adicional do tipo OPT... Não faço ideia do que é um OPTregistro. Será que o Avahi não gosta de consultas DNS com OPTRRs anexados por algum motivo?

Aqui estão duas capturas de tela tiradas do Wireshark. O primeiro mostra uma solicitação mDNS "boa" que é enviada do computador de mesa (nesse caso, o dispositivo é chamado runway.local). Esta consulta funciona bem e o servidor (at 192.168.1.1) responde imediatamente:

Uma consulta mDNS que funciona

Aqui está um exemplo da resposta retornada de runway.local:

insira a descrição da imagem aqui

Enquanto isso, aqui está uma segunda consulta DNS que foi enviada do iPad para o mesmo nome de host runway.local,. Nesse caso, a solicitação parece ser simplesmente ignorada (em qualquer caso, nenhuma resposta é recebida para esta consulta DNS):

insira a descrição da imagem aqui

Tentando rastrear o que há na solicitação do iPad que causa o problema, parece que os dois pacotes são quase idênticos, a única diferença entre as consultas mDNS enviadas da área de trabalho (executando o OS X) e o iPad é que o iPad anexa um OPTregistro de recurso na parte inferior da solicitação de DNS.

A questão é: qual é o significado do registro de recurso - e é isso - ou é outra coisa - responsável por essa solicitação de DNS ser ignorada pela Avahi.

ATUALIZAÇÃO Esta poderia ser a inovação que eu estava procurando:

Estou executando o avahi-daemon com o sinalizador --debug e notei muitos "Pacotes de consulta inválidos". mensagens. Isso me levou a esta página: http://avahi.org/ticket/284, que parece ser um problema conhecido (embora deva ser resolvido).

Especificamente:

Um tcpdump me faz acreditar que isso ocorre devido ao Mac OS 10.6 usar o RFC2671 para adicionar informações na seção de dados adicionais das consultas DNS. Especificamente, ele está fornecendo o 'tamanho da carga útil do UDP' (no meu caso, 1440) como dica para o tamanho máximo dos pacotes de resposta. [...] A Avahi considera as consultas com seções de dados adicionais não vazias inválidas, onde verifica se AVAHI_DNS_FIELD_ARCOUNT! = 0 imediatamente antes de gerar a mensagem de pacote de consulta inválida.

Jon
fonte
Devo acrescentar que, se eu fizer login no DreamPlug, também conhecido como plugSSH, e executar o comando ping 224.0.0.251que é o endereço multicast mDNS, recebo o resultado connect: Network is unreachable- não tenho certeza se isso deveria estar acontecendo, mas pode ser útil para qualquer pessoa que possa ajudar.
jon
Atualização: Estou executando o avahi-daemon com o sinalizador --debug e notei muitos "Pacotes de consulta inválidos". mensagens. Isso me levou a esta página: avahi.org/ticket/284, que parece ser um problema conhecido (embora deva ser resolvido). Especificamente: Um tcpdump me faz acreditar que isso ocorre devido ao Mac OS 10.6 usar o RFC2671 para adicionar informações na seção de dados adicionais das consultas DNS. Especificamente, ele está fornecendo o 'tamanho da carga útil do UDP' (no meu caso, 1440) como dica para o tamanho máximo dos pacotes de resposta.
jon
Parece que você tem uma resposta lá. Você pode atualizar seu Avahi no DreamPlug?
Bill Weiss
3
Que tal usar um servidor DNS real além do Avahi? Algo como bind / nomeado. Você já tentou fazer isso?
precisa
2
Pergunta fantástica com muitos detalhes! Se você descobrir, escreva sua própria resposta e marque-a com uma marca de seleção - isso ajuda outras pessoas e pode até lhe dar pontos de repetição.
Mei

Respostas:

1

Eu não frequento o SF com tanta frequência, mas percebo que essa pergunta atraiu bastante atenção; deixe-me resumir minhas descobertas aqui e, esperançosamente, fornecer uma solução para aqueles que enfrentam o mesmo problema:

Parece que esse é um erro da versão do Avahi que acompanha o Ubuntu Jaunty ( http://avahi.org/ticket/284 ) relacionado ao fornecimento do tamanho da carga útil do UDP, provavelmente como resultado de uma mudança mais recente no especificação mDNS (embora eu não tenha lido). Como expliquei nos comentários da pergunta original, tentei atualizar minha versão do Avahi, mas minhas habilidades em Linux não são o que deveriam ser e não consegui fazê-la funcionar. (De qualquer forma, a execução de um sistema operacional não compatível com 3 anos de idade não é realmente recomendada ...)

No final, eu mergulhei, limpei o cartão SD do DreamPlug e instalei o Debian Squeeze nele, que funcionou bem (embora apenas com o iOS 5.0 ou superior). Uma discussão sobre como alterar o sistema operacional DreamPlug está fora do escopo desta questão, mas no final das contas tudo se resume a uma versão desatualizada do Avahi. Use uma versão mais recente e você deve ficar bem!

Boa sorte!

Jon
fonte