Como desativar o systemd-resolved no Ubuntu?

88

Como posso desativar o systemd-resolved no Ubuntu 17.04?

Desativando-o com systemctl disablenão funcionou, o serviço parece ser reiniciado (pelo Networkmanager?)

Bastian Voigt
fonte
10
systemd-resolved não é apenas grande, mas também quebra a maneira como a resolução de DNS funciona, nem sempre tentando resolver na ordem em que os servidores DNS são especificados na configuração do cliente. Quando um servidor não resolve um domínio, o próximo na lista é movido para o topo (Poettering chama essa 'memória'). Veja esta discussão para obter detalhes.
LifeBoy
7
também ignora as regras do iptables, o que é uma péssima idéia.
Spongman

Respostas:

152

Este método funciona nas versões 17.04 (Zesty), 17.10 (Artful), 18.04 (Bionic), 18.10 (Cosmic) e 19.04 (Disco) do Ubuntu:

Desative e pare o serviço resolvido pelo systemd:

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved

Em seguida, coloque a seguinte linha na [main]seção /etc/NetworkManager/NetworkManager.conf:

dns=default

Excluir o link simbólico /etc/resolv.conf

rm /etc/resolv.conf

Reinicie o NetworkManager

sudo systemctl restart NetworkManager

Também esteja ciente de que desativar o systemd-resolvd pode interromper a resolução de nomes na VPN para alguns usuários. Veja este bug na barra de ativação (Obrigado, Vincent).

Bastian Voigt
fonte
4
isso parece não funcionar no Ubuntu 17.04. Além disso, o arquivo de configuração é /etc/NetworkManager/NetworkManager.conf. A resolução de nomes quebra quando eu faço o acima. systemd-resolved é péssimo, agora a resolução do DNS da VPN não funciona corretamente para mim. Progresso bug pode ser encontrada aqui: bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624317
Vincent Gerris
5
Eu acho que você deve adicionar à resposta acima que "apt-get install dnsmasq" deve ser feito depois que o systemd-resolved for desativado.
LifeBoy
5
@LifeBoy Eu não uso o dnsmasq. Eu simplesmente não uso nenhum servidor de nomes local, não vejo o valor disso.
Bastian Voigt
9
Para o Ubuntu 18.04, basta executar os comandos sudo systemctl disable systemd-resolved.service e sudo service systemd-resolved stop. Isso funcionou para mim.
18119 Daniel Águia
12
Obrigado. O SystemD está arruinando o Linux, passando de algo confiável e compreensível para algo que funciona via mágica.
Forbesmyester
18

Atualizei recentemente para o (k) Ubuntu 17.04 e também me deparei com a mudança para o systemd.

Acho que minha configuração é bastante típica, pois tenho um provedor de DNS no meu HUB de banda larga e essa é minha principal fonte de informações para todos os dispositivos da minha rede (dos quais tenho alguns).

Há alguma beleza no systemd, nem tudo é ruim, mas o que é realmente ruim é a documentação, a falta de comunicação da equipe do Ubuntu e o entusiasmo "vamos mudar isso apesar de quebrar a mentalidade de todos".

A solução para mim, depois de arrancar alguns cabelos, foi editar o arquivo /etc/systemd/resolved.conf:

[Resolve]
DNS=192.168.1.254   # <-- change to your router address
#FallbackDNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844
Domains=lan         # <-- change to your localdomain name (maybe .local)
#LLMNR=yes  <-- I dabbled with this for a while but it doesn't matter
#DNSSEC=no
#Cache=yes
#DNSStubListener=udp

Depois de não entender por que isso não funcionava, eu descobri que o que também era necessário era alternar o /etc/resolv.conf para o fornecido pelo systemd. Este não é o caso de uma instalação pronta para uso (por motivos desconhecidos para mim).

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

O servidor DNS local não é usado e todas as solicitações de DNS são enviadas para o meu HUB.

Penso que esta é uma solução muito melhor do que recortar e colocar outra solução, já que o systemd-resolv agora é o padrão.

Um problema relacionado é que o /etc/nsswitch.conf é neutralizado.

Deve ler-se:

hosts: arquivos mdns4_minimal dns [NOTFOUND = return] resolve [! UNAVAIL = return] dns

Essa é uma configuração confusa, pois [NOTFOUND = return] significa que o processamento termina aí. As entradas depois nunca serão usadas.

user2427436
fonte
1
E então eu tenho que mudar o endereço do roteador na configuração toda vez que eu conectar a um novo WIFI? Você está falando sério? -1
Bastian Voigt
Eu não sabia que você estava vagando com isso. Se estiver, deixe os itens de configuração comentados. Você deve obter um /etc/resolv.conf que diz: nameserver 8.8.8.8 nameserver 8.8.4.4
user2427436
1
Não acho que seja necessário editar o resolved.conf se você configurar o netplan corretamente. ou seja, o netplan grava os valores corretos no arquivo com link simbólico ... PS SYSTEMD SUGA!
g33kz0r 7/01
3

Se você estiver tendo problemas de vazamento com a sua VPN e não conseguir descobrir como configurar o systemd (como eu), poderá removê-lo da maneira descrita na primeira resposta, mas não adicione a dns=defaultlinha, pois ativará o servidor de nomes 127.0 .0.1 Para definir o roteador como dns, crie o arquivo "tail" na sua /etc/resolvconf/resolv.conf.d/ pasta adicionando a linhanameserser 192.168.1.1

faça ln -sf /var/run/resolved/resolv.conf /etc/resolv.confse você tivesse estragado esse arquivo.

Yvain
fonte
1
Realmente? Para mim, funciona exatamente como descrito na minha resposta. Definitivamente não usando o servidor de nomes 127.0.0.1. Também acho que não é muito útil codificar o IP do seu servidor de nomes em um arquivo de configuração. Pelo menos eu mudar de rede wi-fi, muitas vezes e cada wi-fi tem um servidor de nomes diferente
Bastian Voigt
yes 'default' permite 127.0.0.1 como dns
Yvain 8/17