systemd-resolved não consulta o servidor DNS para o domínio local

12

Desde a atualização para 17.04, não consigo mais resolver endereços na minha rede local (silvesternet.local). Eu recebo a seguinte resposta:

$ systemd-resolve edgerouter
edgerouter: resolve call failed: No appropriate name servers or networks for name found

No diário, existem apenas relatórios de tempos limite para transações relacionadas a essa pesquisa.

Usei o Wireshark para detectar o tráfego da rede e parece que ele nem tenta procurar o nome. Não há tráfego de DNS qualquer. Procurar outro domínio externo funciona bem.

Muitos problemas relacionados ao mesmo tópico mencionam a alteração do nsswitch.conf, mas isso não parece resolver nada. Minhas configurações atuais são:

hosts:          files mdns4_minimal dns [NOTFOUND=return] resolve [!UNAVAIL=return] mdns4
Rob van der Most
fonte
1
Você correu sudo apt update && sudo apt full-upgrade? Erros na imagem liberação ficou fixo ...
Zanna
se você estiver usando systemd-networkdpara configurar interfaces, talvez seja necessário adicionar UseDomains=truena [DHCP]seção de seus .networkarquivos: wiki.archlinux.org/index.php/systemd-networkd#.5BDHCP.5D
quixotic
De fato, feche com o domínio. Na verdade, era um bug no firmware do edgerouter que não definia o domínio na resposta dhcp.
Rob van der Most

Respostas:

10

Eu acredito que isso é por design.

O Ubuntu 17.04 mudou para systemd-resolved para resolução de nomes e usa apenas LLMNR (pesquisa de nome multicast) para resolução de nomes de rótulo único. Consulte este link para obter detalhes: https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html

Para o raciocínio por trás dessa decisão, verifique a resposta do poettering neste relatório de bug: https://github.com/systemd/systemd/issues/2514

UPD: Esse problema pode ser contornado usando um domínio para a rede local. Se a interface de rede estiver configurada (manualmente ou por DHCP) para usar um domínio de pesquisa, o systemd-resolved adicionará esse domínio aos nomes de rótulo único e os procurará pelo DNS unicast.

Obviamente, o servidor DNS local deve ser reconfigurado para reconhecer esses domínios. No caso do dnsmasq que lê pares host-IP locais em / etc / hosts, isso pode ser feito adicionando as seguintes instruções ao dnsmasq.conf:

domain=mydomain.net
local=/mydomain.net/
expand-hosts

UPD2: Ou você pode simplesmente reverter para o dnsmasq conforme descrito aqui /ubuntu//a/911432/692094

ish-oeste
fonte
E mais uma página de erro com algumas explicações: github.com/systemd/systemd/issues/4821
ish-west
O nome do domínio foi o problema aqui. Na verdade, também foi causado por um bug no firmware do edgerouter. A opção de nome de domínio da configuração não foi armazenada corretamente na configuração dhcp. Portanto, os clientes não obtiveram um domínio para pesquisar.
Rob van der Most
8

Eu tive o mesmo problema no Ubuntu 18.04, que também usa o systemd-resolved para DNS. Sua configuração padrão não resolve nomes de host de rótulo único ou nomes de host de domínio .local pelo DNS, mas pelo LLMNR ou mDNS, respectivamente.

Para tornar nomes de host de rótulo único local ou nomes de host de domínio .local resolvidos pelo DNS, ativei o terceiro dos "Quatro modos de tratamento do /etc/resolv.conf" descritos na página de manual do systemd-resolved.service :

sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

Uma resposta semelhante foi dada aqui . E, novamente, para o raciocínio por trás do padrão, consulte a resposta do poettering neste relatório de bug .

Mats Lindén
fonte
2

O que funcionou para mim após a atualização para o 18.04 foi configurar o arquivo /etc/systemd/resolved.conf alterando o parâmetro Domains para o domínio (local ou, no meu caso, mydomain.local). Também mudei o parâmetro DNS, mas parecia que não era relevante, mas mencionei apenas no caso de isso não ser verdade. Para obter mais informações, acesse https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html .

Além disso, mudei a configuração do avahi (/etc/avahi/avahi-daemon.conf) para alterar o parâmetro domain dentro da seção do servidor de local (o padrão) para outra coisa, como algumas pessoas apontaram neste fórum.

Com as alterações mencionadas, posso acessar as máquinas usando nomes sem pontos, por exemplo, executando ping no meu computador, a máquina é contatada com êxito. No entanto, se eu efetuar ping no mycomputer.mydomain.local, ele não funcionará, o FQDN não será resolvido conforme o esperado.

Esperar que isso ajude em alguns casos ou leve a uma solução mais geral.

George
fonte
0

Eu enfrentei esse problema por causa de uma configuração incorreta nsswitch.conf. Desde a 12.04sequência seguinte funcionou como esperado. Nomes de host sem domínio são resolvidos com êxito.

Mas a nova 17.04versão (assim como a versão 16.10) do ubuntu com modelo antigo para configurar o sistema nss não funciona como antes.

Versão mal configurada das hostsversões antigas do ubuntu: hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4

Versão de trabalho bem-sucedida de hosts, por exemplo, a partir de 17.04: hosts: files mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns

vskubriev
fonte