Resolvendo o nome '.local' (somente mDNS)

4

Eu tenho uma rede doméstica configurada usando o mDNS, contendo sistemas variados (incluindo um Raspberry Pi sempre ativo). Minhas máquinas estão executando daemons avahi, então a situação atual é:

  • todos na rede podem resolver host.local nomes.

O que eu quero além disso:

  • as máquinas que eu administro também podem resolver host para o mesmo endereço que host.local .

Eu poderia pensar em três maneiras de fazer isso:

  1. Coloque search local em /etc/resolv.conf : isso não é aceito pelo mDNS , já que estava supostamente "causando problemas". Eu poderia recompilar com as opções --enable-search-domains em todas as minhas máquinas.

  2. Escreva arquivos /etc/hosts estáticos em todas as máquinas da rede. Isso é o que eu faço atualmente. No entanto, ele torna a configuração distribuída, o que eu quero evitar (esses arquivos do acabam saindo de sincronia).

  3. Configure um servidor DNS na rede. No entanto, o roteador fornecido com o acesso à Internet não faz DNS (isso é quase um bom motivo para mudar para outra empresa), então eu precisaria configurá-lo no Raspberry. Isso também representa o problema de uma configuração distribuída: as informações de DNS estáticas no Raspberry acabariam por ficar fora de sincronia com as informações do mDNS, de modo que host e host.local poderiam apontar confusamente para dois endereços IP diferentes ...

Então, minha pergunta é:

  • quais são os "problemas" apresentados pela opção --enable-search-domains ? (O único que vejo é que ele permite que qualquer pessoa na LAN configure um nome de host não qualificado, mas 1. Não uso nomes de host não qualificados além daqueles que eu já controlei, e 2. O acesso à LAN já está restrito a confiáveis peers de qualquer maneira).

  • senti falta de outra quarta opção? (por exemplo, configurar um servidor DNS + um crontab alimentando-o periodicamente com alguma saída de um comando avahi-browse ?)

por Circonflexe 13.10.2016 / 12:28

2 respostas

2

Eu suspeito que a opção é 'não recomendada' porque é quase inútil na prática: quase todas as outras implementações do mDNS usam o .local domain somente , tentando fazer pesquisas para qualquer domínio que você tenha obter do DHCP só introduziria atrasos adicionais na maior parte do tempo. Também há questões de segurança mencionadas nas especificações reais do mDNS.

Em vez disso, o nss-mdns poderia ser corrigido para especificamente acrescentar .local a nomes sem ponto antes de tentar procurá-los, em vez de usar os domínios resolv.conf.

    
por 13.10.2016 / 14:55
0

O motivo pelo qual o mdns não anexa domínios .local ou de pesquisa é porque não há NXDOMAIN ou conceito similar em mdns.

Portanto, se o mdns não conseguir encontrar uma resolução em nenhum cache, ele deverá enviar uma consulta multicast e esperar para ver se alguma coisa responde. Esse tempo limite é longo o suficiente para "causar problemas".

O seguinte não responde à pergunta, mas é especulativo de possíveis implementações para resolver alguns dos problemas.

O que eu desejaria é anexar explicitamente .local a nomes de host sem nenhum ponto no final da cadeia nss. E.G.

hosts: arquivos mdns4_minimal [NOTFOUND = return] dns mdns_append

Talvez também seja possível especificar uma resolução de mdns "somente cache". Talvez com um nsswitch como este

hosts: arquivos mdns4_minimal [NOTFOUND = return] mdns_append_cacheonly dns mdns_append

Eu imagino o mdns_append tentando ambos com e sem .local acrescentado.

    
por 19.02.2018 / 21:52

Tags