DNS definido como 127.0.0.53 do systemd - como alterar permanentemente?

38

Atualizei recentemente para 17.10. Quando tento navegar para um site ou executar ping em um domínio, ele falha ao dizer que o site não pode ser resolvido.

network-adminmostra o conteúdo de /etc/resolv.confsernameserver: 127.0.0.53

Se eu mudar isso para 8.8.8.8 ou 208.67.222.222, tudo funcionará. Até eu reiniciar.

Após a reinicialização ou a retomada, o servidor de nomes é redefinido para 127.0.0.53.

Como definir permanentemente o servidor de nomes para algo que funcione?


Para os fãs do systemd, se eu executar systemd-resolve --status, recebo

Link 3 (wlo1)
      Current Scopes: LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

Se eu seguir os conselhos desta pergunta - o DNS continua sendo redefinido após a reinicialização. Ubuntu 17.10 - O DNS ainda não conseguiu resolver.

Terence Eden
fonte
systemctl stop systemd-resolvede systemctl mask systemd-resolveddeve fazer o truque :)
Shayan

Respostas:

28

Você pode instalar um pacote resolvconf, que modificará a maneira como /etc/resolv.confé construído na inicialização do sistema.

sudo apt install resolvconf

Você pode criar ou modificar um arquivo /etc/resolvconf/resolv.conf.d/tail. Se você colocar neste arquivo uma linha nameserver 8.8.8.8, essa linha será adicionada no final da /run/resolvconf/resolv.confinicialização. /etc/resolv.confagora será um link simbólico para este arquivo.

oscar1919
fonte
4
Isso funciona - obrigado! Você sabe se existe alguma maneira de obter 127.0.0.53 para funcionar por si só?
Terence Eden
1
Eu sou bastante novo neste assunto. Apenas tentei me livrar dos problemas de DNS ao ativar / desativar o vpn nas últimas semanas. Você poderia tentar sudo dpkg-reconfigure resolvconf. Eu tentei isso ultimamente, limpei o arquivo da cauda e, a princípio, isso parece funcionar.
oscar1919
@TerenceEden Se você está procurando fazer com que 127.0.0.53 funcione por si só (como deveria), dê uma olhada na minha resposta: askubuntu.com/a/1083843/281191
intelfx
9

A solução correta seria consertar o sistema resolvido em vez de tentar curar a enxaqueca com uma guilhotina.

É uma boa ferramenta, realmente, se usada corretamente.

A julgar pela sua systemd-resolve --statussaída ...

Link 3 (wlo1)
      Current Scopes: LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

... sua ferramenta de gerenciamento de rede não passa a configuração de DNS por interface para resolvido pelo sistema.

Versões recentes do NetworkManager, por exemplo, fazem isso automaticamente se /etc/resolv.confhouver um link simbólico apontando para dentro /run/systemd/resolveou para /usr/lib/systemd/resolv.conf. Como alternativa, versões recentes do systemd-resolved tentam ser compatíveis com a interface histórica resolvconf instalando um resolvconfbinário que fala com systemd-resolved.

Embora seja preferível usar qualquer uma dessas duas soluções, se você estiver procurando uma solução rápida e suja, basta configurar o systemd-resolved para usar seus servidores DNS globalmente:

$ cat /etc/systemd/resolved.conf
<...>
[Resolve]
DNS=8.8.8.8 8.8.4.4
<...>

Em seguida, reinicie systemd-resolved.serviceou reinicie.

intelfx
fonte
Pelo menos para mim, essa resposta não funciona, usando o ubuntu 18.04, depois de alterar a entrada "DNS", ela permanece no 127.0.0.53
André M. Faria
1
@ AndréM.Faria saiba como o resolvido funciona. 127.0.0.53é o endereço do resolvedor de stub de cache local. Encaminha solicitações de DNS para quaisquer servidores DNS upstream que você especificar.
intelfx 31/01
Às vezes você sabe alguma coisa e simplesmente a ignora, sim, você está certo.
André M. Faria
1
Também é bom notar aqui que, por padrão, systemd-resolvedarmazena em cache as respostas DNS. Embora isso às vezes seja útil, pode causar problemas em algumas situações. Descomente a cache=yeslinha no arquivo de configuração na resposta e defina-a como no.
Quentin Skousen
o que realmente faz com que /etc/resolve.conf(ou realmente, o /run/resolvconf/resolv.confque o primeiro aponta) seja atualizado? seria bom saber para o teste, sem a necessidade de uma reinicialização presumida. Tudo o que posso dizer é que reiniciar systemd-resolved.serviceparece não ter funcionado
bbarker 04/03
8

Eu uso o Lubuntu & Kubuntu 18.04. Consegui superar o problema do DNS em duas etapas:

Primeiro passo: instale unbounde configure-o para substituir, systemd-resolvedcomo mostra o Grégoire C aqui .

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
sudo systemctl enable unbound-resolvconf
sudo systemctl enable unbound

reiniciar

Abrir como root o arquivo /etc/NetworkManager/NetworkManager.conf

( sudo leafpad /etc/NetworkManager/NetworkManager.confno Lubuntu 18.04 ou no Kubuntu 18.04 SUDO_EDITOR=kate sudoedit /etc/NetworkManager/NetworkManager.conf)

e abaixo [main]coloque esta linha:

dns=unbound

reinicie novamente

Segundo passo: se após a reinicialização o problema ainda não estiver resolvido, como no meu caso, inicie o gerenciador de arquivos como root, vá para /etc, exclua resolv.confe crie um novo resolv.conf. Deixe em branco e reinicie o sistema operacional. No meu caso, após esta reinicialização, o problema desapareceu.

No Kubuntu 18.04, você não pode iniciar o Dolphin como root, então você pode primeiro ir para /etc e abrir o terminal a partir daí, em seguida, digite sudo sue pressione Enter para usá-lo como root e exclua resolv.confcom o comando rm resolv.conf. Em seguida, você pode criar um novo arquivo vazio na área de trabalho, nomeá-lo resolv.confe abrir um terminal a partir daí. Use o sudo sucomando para entrar no modo de raiz para o terminal e, em seguida, copie o novo resolv.confdo seu desktop para /etccom o comando cp resolv.conf /etc.

Eu tenho que adicionar que não tentei executar o segundo passo antes da instalação unbound, portanto, da próxima vez, apenas para ver se será suficiente ou não.

Калоян Грънчаров
fonte
Por que não editá-lo como root e excluir o conteúdo?
Ballie
@ Ballie Eu tentei isso no começo, mas não ajudou. Também o original resolv.confde /etcfoi mostrado como uma espécie de atalho, o que não é normal, eu acho. Por isso, decidi excluí-lo e recriá-lo, criando um novo arquivo vazio e nomeando-o resolv.conf. E funcionou. Por esse motivo, escrevi acima que na próxima vez que tiver que reinstalar o sistema operacional, tentarei fazer isso primeiro, sem fazer o "primeiro passo" - para ver se seria suficiente. Mas o original resolv.confem /etcque precisa ser removida e recriada de qualquer maneira - sobre isso eu tenho certeza.
Калоян Грънчаров
Acabei de desativar o systemd-resolved.service e removi o link resolv.conf e criei um manualmente, e funcionou!
André M. Faria
8

trabalhando dentro do systemdparadigma, adicione um DNS a um link / dispositivo

usando o ubuntu 17.10+ adicione um *.networkarquivo:

sudo nano /lib/systemd/network/100-somecustom.network:

100-somecustom.network (100 pode ser qualquer número de prioridade e requer a .networkextensão do arquivo):

[Match]
Name=wlo1 # the device name here

[Network] # add multiple DNS 
DNS=8.8.8.8
DNS=208.67.222.222

Então reinicie:

sudo service systemd-networkd restart

Veja também:

netplan apply

Depois verifique:

systemd-resolve --status wlo1

Da página de informações info systemd.network :

Além disso /etc/systemd/network, os diretórios ".d" drop-in podem ser colocados nos diretórios / lib / systemd / network ou / run / systemd / network . Arquivos drop-in em / etc têm precedência sobre aqueles em / run, que por sua vez têm precedência sobre aqueles em / lib. Os arquivos drop-in em qualquer um desses diretórios têm precedência sobre o arquivo netdev principal, onde quer que estejam. (Obviamente, como / run é temporário e / usr / lib é para fornecedores, é improvável que sejam usados ​​drop-ins em qualquer um desses locais.)

Outra abordagem desabilita o DNSStubListeneruso com dnsmasq:

sudo nano /etc/systemd/resolved.conf:

#
DNSStubListener=false

relacionados:

jmunsch
fonte
Estranho é que você declarou que o DNSStubListener = false, mas a configuração comentada real é DNSStubListener = yes, geralmente o inverso do valor "yes" é "no" e não "false", que no caso de "false" costumava ser " verdade".
André M. Faria
Sua resposta para criar um arquivo com extensão .network não funcionou.
André M. Faria
2

É assim que altero meu registro DNS na configuração da interface.

$ vi /etc/netplan/50-cloud-init.yaml

Altere os endereços do servidor de nomes, anteriormente era .4, depois mudei para .3:

...
            nameservers:
                addresses:
                - 192.168.1.3
...

Salve a configuração e aplique a configuração:

$ sudo netplan apply

Depois disso, reinicie o serviço resolvectl.

$ sudo systemctl restart systemd-resolved.service

Para anotações: reinicializei o servidor e as alterações que fiz ainda estavam intactas. Eu uso o resolvctl dnscomando para verificar o registro DNS.

Kapten
fonte
Esta é realmente a resposta correta. Estou surpreso que não seja o aceito.
Toumal 9/04
0

Teve alguns problemas com o NordVPN, então decidimos adicionar isso.

Constatações: O
NordVPN define /run/systemd/resolve/resolv.confas configurações de DNS ao se conectar.
O NordVPN remove todas as configurações de DNS /run/systemd/resolve/resolv.confao desconectar.
Isso faz com que o servidor DNS não funcione mais (já que não há um conjunto).

O sistema precisa de uma reinicialização para restaurar tudo. Uma reinicialização padrão do serviço (sudo systemctl restart systemd-resolved.service ) não funciona.

A solução para contornar isso:

sudo apt install resolvconf

Vá para /etc/resolvconf/resolv.conf.d/

cd /etc/resolvconf/resolv.conf.d/
sudo nano tail

Adicionar servidores de nomes

nameserver 1.1.1.1
nameserver 1.0.0.1

Verifique os seguintes locais para servidores de nomes que poderiam ter sido configurados:

/run/resolvconf/interface/original.resolvconf
/run/resolvconf/interface/systemd-resolved
/etc/resolvconf/resolv.conf.d/tail
/etc/resolvconf/resolv.conf.d/head
/etc/systemd/resolved.conf
/run/systemd/resolve/resolv.conf
/run/systemd/resolve/stub-resolv.conf

Teste com quais servidores DNS estão sendo usados:

nslookup google.com

Server:         1.1.1.1
Address:        1.1.1.1#53
Eirik Rimehaug
fonte
0

Talvez um pouco tarde, mas encontrei este problema. Eu tenho que admitir que tenho configurado manualmente minhas configurações de rede via CLI antes e não através do gerenciador de rede embutido. Eu corro o ubuntu 18.04.

Então, depois que desabilitei e reativei o systemd.resolved.service, esse comportamento errático de perder aleatoriamente minha configuração de DNS foi resolvido para mim.

systemctl disable systemd.resolved.service
reboot

após a reinicialização:

systemctl enable systemd.resolved.service
reboot

Como sou um usuário Linux relativamente novo, deve haver alguém que possa explicar os comos e por que motivo isso teria funcionado para mim, mas parecia valer a pena mencionar se pode ajudar os outros.

Sjoerd
fonte
Sry desapontar, mas deve haver algo que você fez no meio que realmente resolveu o problema. As operações que você está sugerindo aqui só podem deixar o sistema como estava.
tishma 7/09
-1

Ao usar a resolução de nomes dhcp, funciona como esperado no Ubuntu. Os problemas começam quando você quer ficar estático. cat /etc/resolv.confmostrará que seu yns dns é 127.0.0.53 e não os que você possui no /etc/netplan/.yamlarquivo. Para corrigir isso, você precisa remover o /etc/resolve.conflink e criar um novo apontando para/run/resolve/resolve.conf

Mikael Ljung
fonte
Por favor, editar a sua resposta e corrigir alguma formatação ...
Yufenyuy Veyeh Dider
-2

Isso exigia algumas brincadeiras. Depois de atualizar a configuração, reiniciei. Usar:

ln -s /run/resolvconf/resolv.conf /etc/resolv.conf

/etc/systemd/resolved.conf
DNS=8.8.8.8
Cache=no

System resolved failed
systemctl stop systemd-resolved
systemctl disable systemd-resolved

Quando comentar o "pedido" para

# domain-name, domain-name-servers, domain-search, host-name,

Adicione esta linha ao seu /etc/dhcp/dhclient.conf:

 supersede domain-name "cwillenterprise.com";

Edite o arquivo de configuração e adicione a entrada. Adicional não será substituído.

Adicionar entradas a /etc/resolvconf/resolv.conf.d/tail

nameserver 8.8.8.8
search "cwillenterprise.com"

Executar para implementar alterações

resolvconf -u
ogkiller
fonte
1
Bem-vindo ao Ask Ubuntu ! Por favor edite sua resposta ao uso de código de formatação para o código que deve ser inserido em arquivos ou terminal. Não adicione #"comentários" ao código - significa cabeçalho no Markdown. Verifique sempre a pré-visualização da sua postagem antes de enviá-la.
Melebius