Usando o Avahi no DreamPlug Ubuntu com iPads

17

Eu tenho o seguinte problema muito peculiar com o uso do Avahi no DreamPlug (que é um plug computer rodando o Ubuntu Jaunty).

Depois de passar dias nisso, acho que consegui restringir o assunto.

O DreamPlug atua como o ponto de acesso Wi-Fi e tem o nome do host plug e o endereço IP 192.168.1.1 (que é definido em /etc/hosts e /etc/hostname ) e executa o lighttpd.

Agora, meu Mac funciona imediatamente acessando http://plug.local no Chrome, mas se eu tentar e carregar http://plug.local no iPad, não funcionará. Ou seja, não funciona até que eu carregue a página na área de trabalho.

Por algum motivo, os iPads nunca são capazes de resolver o nome do host, até que o nome do host seja resolvido primeiro no Mac ... o que é estranho porque não há conexão entre os iPads e o Mac além do fato de que eles são conectado ao mesmo ponto de acesso (o DreamPlug).

Então, só para esclarecer novamente: o Safari no iPad irá travar (até que relate que a navegação falhou) ao acessar http://plug.local a menos que eu acesse http://plug.local no Mac, execute ping plug.local , do ssh [email protected] ou basicamente faz qualquer outra outra que resolva o nome do host, ponto em que o iPad instantaneamente resolve o nome do host e ele começa a funcionar corretamente.

Se meu entendimento estiver correto, quando os iPads se conectarem, eles transmitirão uma solicitação de resolução para plug.local . Por qualquer motivo, este pedido é ignorado pelo DreamPlug (ou nunca é recebido). No entanto, o Mac faz gerenciar para transmitir sua solicitação. Ele transmite uma solicitação de resolução e o DreamPlug envia o resultado plug.local - > %código%. Os iPads recebem então o resultado (que foi realmente destinado ao Mac) e são capazes de resolver com sucesso.

Eu ficaria feliz em fornecer meu 192.168.1.1 ou outros arquivos de configuração a pedido.

Atualização: Agora consegui usar o Wireshark e descobri que os iPads de fato transmitem uma solicitação para a rede.

Capturei um pacote que DID resultou em uma resposta do Avahi, bem como um que NÃO fez.

Ambos parecem completamente idênticos, a única diferença é que o que falhou especificou um RR adicional do tipo avahi-daemon.conf ... Não tenho ideia do que é um OPT record. Será que o Avahi não gosta de consultas DNS com OPT RRs anexadas por algum motivo?

Aqui estão dois screenshots tirados do Wireshark. O primeiro mostra uma "boa" solicitação mDNS que é enviada do computador desktop (nesse caso, o dispositivo é chamado OPT ). Esta consulta funciona bem e o servidor (em runway.local ) responde imediatamente:

Aquiestáumexemplodarespostaretornadade192.168.1.1:

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 essa consulta DNS):

TentandorastrearoqueénasolicitaçãodoiPadquecausaoproblema,parecequeosdoispacotessãoquaseidênticos,aúnicadiferençaentreasconsultasmDNSenviadasdaáreadetrabalho(executandooOSX)eoiPadéqueoiPadanexaumregistroderecursorunway.localàparteinferiordasolicitaçãodeDNS.

Aquestãoé:qualéosignificadodoregistroderecurso-eéisso-ouéoutracoisa-queéresponsávelporessasolicitaçãodeDNSserignoradapelaAvahi.

UPDATEEssepodeserograndeavançoqueeutenhoprocurado:

Eutenhoexecutadooavahi-daemoncomosinalizador--debugenoteimuitos"pacotes de consulta inválidos". mensagens. Isso me levou a esta página: link que parece ser um problema conhecido (apesar de ser um problema resolvido).

Especificamente:

A tcpdump makes me believe that this is due to Mac OS 10.6 using RFC2671 to add information in the additional data section of DNS queries. Specifically, it is supplying the 'UDP payload size' (in my case, 1440) as hint for the max size of response packets. [...] Avahi considers queries with non-empty additional data sections invalid, where it checks that AVAHI_DNS_FIELD_ARCOUNT != 0 just before generating the Invalid query packet message.

    
por jon 10.11.2011 / 17:49

1 resposta

1

Eu não frequento SF tão frequentemente, mas percebo que essa questão atraiu muita atenção, portanto, deixe-me resumir minhas descobertas aqui e esperamos que ofereça uma solução para aqueles que enfrentam o mesmo problema: -

Parece que este é um bug com a versão do Avahi que vem com o Ubuntu Jaunty ( link ) para fornecer o Tamanho do payload UDP, provavelmente como resultado de uma mudança mais recen- te para as especificações do mDNS (embora eu mesmo não tenha lido). Como expliquei nos comentários à pergunta original, tentei atualizar minha versão do Avahi, mas minhas habilidades com o Linux não são o que deveriam ser e eu não consegui fazê-lo funcionar. (De qualquer maneira, executar um sistema operacional não suportado de 3 anos de idade não é recomendado mesmo assim ...)

No final, eu tomei a iniciativa, limpei o cartão SD do DreamPlug e instalei o Debian Squeeze nele, o que funcionou bem (embora apenas com o iOS 5.0+). Uma discussão sobre como alterar o DreamPlug OS está fora do escopo desta questão, mas o que tudo se resume ao final do dia é uma versão desatualizada do Avahi. Use uma versão mais recente e você deve estar bem!

Boa sorte!

    
por 11.05.2012 / 11:35