Conjunto incorreto do nameserver pelo resolvconf e NetworkManager

11

Meu servidor DNS é 192.168.1.152 .

Este DNS é fornecido aos clientes pelo DHCP. Os clientes do Windows na minha LAN resolvem os nomes corretamente usando esse DNS, mas minha VM do Ubuntu não faz isso.

A VM é configurada com rede de ponte e está sendo fornecida adequadamente ao servidor DNS, mas meus nomes de host locais não estão sendo resolvidos pelo nslookup ou navegadores.

Aqui está um nslookup de um dos meus domínios locais:

# nslookup unraid.local
Server:     127.0.0.53
Address:    127.0.0.53#53

** server can't find unraid.local: SERVFAIL

Aqui está o que deve ser resolvido usando meu servidor DNS:

# nslookup unraid.local 192.168.1.152
Server:     192.168.1.152
Address:    192.168.1.152#53

Name:   unraid.local
Address: 192.168.1.152

/etc/resolv.conf tem um servidor de nomes errado:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.

nameserver 127.0.0.53

Eu corri o comando. Sob Servidores DNS, confusamente, especifica o servidor correto (e meu gateway padrão).

root@ubuntu:~# systemd-resolve --status
Global
          DNSSEC NTA: 10.in-addr.arpa
                      16.172.in-addr.arpa
                      168.192.in-addr.arpa
                      17.172.in-addr.arpa
                      18.172.in-addr.arpa
                      19.172.in-addr.arpa
                      20.172.in-addr.arpa
                      21.172.in-addr.arpa
                      22.172.in-addr.arpa
                      23.172.in-addr.arpa
                      24.172.in-addr.arpa
                      25.172.in-addr.arpa
                      26.172.in-addr.arpa
                      27.172.in-addr.arpa
                      28.172.in-addr.arpa
                      29.172.in-addr.arpa
                      30.172.in-addr.arpa
                      31.172.in-addr.arpa
                      corp
                      d.f.ip6.arpa
                      home
                      internal
                      intranet
                      lan
                      local
                      private
                      test

Link 2 (ens33)
      Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 192.168.1.152
                      192.168.1.1

Eu não quero "codificar" o IP do servidor DNS em um arquivo de configuração porque não serei capaz de resolver quando eu mudar de rede.

Como posso fazer com que o resolvconf e o NetworkManager automaticamente definam o IP do servidor DHCP em /etc/resolv.conf ?

    
por FireSpore 04.11.2017 / 22:22

6 respostas

15

Bug conhecido systemd .

Solução temporária sem necessidade de reconfigurar se os IPs de DNS mudanças:

sudo rm -f /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
reboot
    
por teknopaul 08.11.2017 / 23:53
11

Tente editar /etc/systemd/resolved.conf , adicionando o servidor DNS desejado:

altere isso:

[Resolve]
#DNS=

para isso (mas use o que você quiser - este é um exemplo):

[Resolve]
DNS=192.168.1.152

depois disso, reinicie o serviço:

service systemd-resolved restart

E quando você verificar o status, verá

$ systemd-resolve --status
Global
         DNS Servers: 192.168.1.152

      DNSSEC NTA: 10.in-addr.arpa
                  16.172.in-addr.arpa
                  168.192.in-addr.arpa
                  17.172.in-addr.arpa
                  18.172.in-addr.arpa
                  19.172.in-addr.arpa
    
por Leandro Noskoski 04.11.2017 / 23:02
1

Eu montei um script que funciona em torno da questão do Netplan não suportando atualmente a capacidade de substituir servidores DNS fornecidos pelo DHCP e ordem de busca de domínio. Ele cria o arquivo yaml do Netplan e configura o systemd-resolved para funcionar como esperado.

################## Start Netplan config (renderer: NetworkManager)
#  Some useful commands for customisation
# NetConn=$(nmcli device show|grep GENERAL.CONNECTION|head -n1|awk '{print $2}')
# IP=$(nmcli device show|grep IP4.ADDRESS|head -n1|awk '{print $2}')
# GATEWAY=$(nmcli device show|grep IP4.GATEWAY|head -n1|awk '{print $2}')
# sed -i 's/renderer: networkd/renderer: NetworkManager/' //etc/netplan/01-netcfg.yaml
######################################
systemctl start NetworkManager
NIC=$(nmcli device show|grep GENERAL.DEVICE|head -n1|awk '{print $2}')

#####   create Netplan yaml config file
cat >/etc/netplan/01-netcfg.yaml <<EOF 
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
  network:
   version: 2
   renderer: NetworkManager
   ethernets:
EOF
echo "    ${NIC}:" >> /etc/netplan/01-netcfg.yaml
cat >>/etc/netplan/01-netcfg.yaml <<EOF
      dhcp4: yes
      nameservers:
        search: [abc.domain.edu, def.domain.edu]
        addresses: [10.10.11.22, 10.10.11.23]

EOF

#work around DNS resolv bug
systemctl stop systemd-resolved
sed -i 's/#DNS=/DNS=10.10.11.22 10.10.11.23/' /etc/systemd/resolved.conf
sed -i 's/#Domains=/Domains=abc.domain.edu def.domain.edu' /etc/systemd/resolved.conf
systemctl start systemd-resolved
systemctl restart NetworkManager
netplan apply
reboot
############### End Netplan Config
    
por Wildstalker 09.05.2018 / 19:19
1

A solução que funcionou para mim é postada aqui no meu blog

Use o editor nano para editar esses 2 arquivos

nano /etc/resolv.conf
nano /etc/resolvconf/resolv.conf.d/head

Adicione servidores DNS que você deseja usar

nameserver 9.9.9.9
nameserver 127.0.0.1

Em seguida, reinicie o serviço

service systemd-resolved restart

Verificação final:

cat /etc/resolv.conf

Faça nslookup

nslookup google.com 

eu apenas usei isso e consertei o problema no meu laptop em casa, mas em algum momento no futuro, quando estou fora da minha rede doméstica, vejo que ele causará problemas, porque o servidor de dns primário e secundário ainda ser meus servidores domésticos com seus endereços de lan.

    
por ookangzheng 07.12.2017 / 16:07
-1

Eu tenho o mesmo problema. Cada reinicialização, nada será resolvido. Eu desinstalei tudo e reinstalei cerca de 50 vezes. Está simplesmente quebrado.

então a correção é .... "apenas aplique algumas configurações cada vez que você inicializar seu pc, o que permite que 90% dos nomes de host sejam resolvidos, mas wget e apt-get atualizações e upgrades falharão aleatoriamente sem motivo"

cat /etc/systemd/resolved.conf

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See resolved.conf(5) for details

[Resolve]
#DNS=
#FallbackDNS=
#Domains=
#LLMNR=yes
#MulticastDNS=yes
#DNSSEC=no
#Cache=yes
#DNSStubListener=udp

Ao usar o Ubuntu 17.10 Desktop, você precisa editar o arquivo que diz NÃO EDITAR ESTE ARQUIVO BLAH BLAH

bem, essa é a única maneira que funciona ~!

root@nas:~# cat /etc/resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver 8.8.8.8

Então remova o IP 127.0.0.53 como o servidor de nomes e digite outro, google por exemplo. Parece que meu endereço IP de DNS real também não resolve nomes de host (embora ele funcione em outras 10 máquinas e dispositivos da casa), mas o Google funciona bem.

    
por user776499 29.12.2017 / 07:42
-1

Eu finalmente consegui uma solução para esse problema para o Ubuntu 17.10. Por padrão, esta versão do Ubuntu usa systemd-resolved , o que espero que seja estável para as próximas versões.

Para usar o dns personalizado em vez do cache resolvido pelo systemd local, faça o seguinte:

  1. adicione novos servidores de nomes. Edite o arquivo em /etc/systemd/resolved.conf como sudoer. Aqui eu comentei a entrada DNS e coloquei meu dns [Resolve] DNS=10.96.0.10 8.8.8.8 8.8.4.4

  2. cancele o symlink real para /etc/resolv.conf

  3. crie um novo link simbólico sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
  4. reinicie o serviço sudo service systemd-resolved restart
  5. reinicie o gerenciador de rede sudo systemctl restart networking

E agora, se você pesquisar um nome fornecido pelo seu add dns, deverá ver o registro resolvido dig nexus.default.svc.cluster.mydomain

O último passo é atualizar a ordem de resolução em /etc/nsswitch.conf , colocando o dns antes do mdns4_minimal

hosts           files dns mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] myhostname
    
por Fabio Fumarola 30.01.2018 / 10:50