Servidor de nombres incorrecto establecido por resolvconf y NetworkManager

34

Mi servidor DNS es 192.168.1.152.

Este DNS es proporcionado a los clientes por DHCP. Los clientes de Windows en mi LAN resuelven los nombres correctamente usando ese DNS, pero mi Ubuntu VM no lo hace.

La VM está configurada con redes de puente y se proporciona correctamente el servidor DNS, pero mis nombres de host locales no se resuelven con nslookup o navegadores.

Aquí está nslookupuno de mis dominios locales:

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

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

Esto es lo que debe resolver usando mi 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 tiene un servidor de nombres incorrecto:

# 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

Ejecuté ese comando. En Servidores DNS, confusamente, especifica el servidor correcto (y mi puerta de enlace predeterminada).

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

No quiero "codificar" la IP del servidor DNS en un archivo de configuración porque no podré resolverlo cuando cambie las redes.

¿Cómo puedo obtener resolvconf y NetworkManager para configurar automáticamente la IP del servidor DHCP /etc/resolv.conf?

FireSpore
fuente

Respuestas:

37

Intente editar /etc/systemd/resolved.conf, agregando su servidor DNS deseado:

cambia esto:

[Resolve]
#DNS=

para esto (pero use el que desee, este es un ejemplo):

[Resolve]
DNS=192.168.1.152

después de eso, reinicie el servicio:

service systemd-resolved restart

Y cuando verificas el estado deberías 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
Leandro Noskoski
fuente
Aquí está systemd-resolve --status después de cambiar /etc/systemd/resolved.conf pastebin.com/AeUFQkyB Los navegadores aún no resuelven los nombres.
FireSpore
12
systemd está muy roto. DHCP le dice al host qué DNS debería ser (y un montón de otras configuraciones de red) no debería tener que cambiar ningún archivo en el host para que esto funcione.
teknopaul
44
No parece óptimo, tendrá que hacer esto cada vez que cambie la red / servidor DNS
Victor
1
Debería volver a configurar cada vez que cambie la IP del DNS (por ejemplo, en diferentes redes).
Victor
34

Conocido systemd fallo .

Solución temporal sin necesidad de reconfigurar si cambia la IP del DNS:

sudo rm -f /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
reboot
teknopaul
fuente
2
Esta solución funcionó un poco, los comandos host y nslookup resuelven los nombres correctamente, pero wget y los navegadores no lo son
FireSpore
1
esto es correcto ... el error actual es que el enlace al que /etc/resolv.confproviene /run/systemd/resolve/stub-resolv.confes bollox, debe tenerse en /run/systemd/resolve/resolv.conf cuenta que /etc/resolv.confrealmente no existe en ninguno de los casos
Sr. Heelis
@ FireSpore: ¿ pingfunciona entonces? hosty nslookupresuelva los nombres de host de forma diferente a pingo wget. Es posible que deba buscar /etc/nsswitch.confuna solución.
HongboZhu
9

Finalmente obtuve una solución para este problema para ubuntu 17.10. Por defecto, esta versión de Ubuntu usa systemd-resolved, que espero sea estable para las próximas versiones.

Para utilizar dns personalizados en lugar de la memoria caché local resuelta por systemd, haga lo siguiente:

  1. agregar nuevos servidores de nombres. Edite el archivo /etc/systemd/resolved.confcomo sudoer. Aquí he comentado la entrada DNS y coloqué mi dns [Resolve] DNS=10.96.0.10 8.8.8.8 8.8.4.4

  2. cancelar el enlace simbólico real a /etc/resolv.conf

  3. crear un nuevo enlace simbólico sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
  4. reiniciar el servicio sudo service systemd-resolved restart
  5. reiniciar el administrador de red sudo systemctl restart networking

Y ahora, si busca un nombre proporcionado por su dns adicional, debería ver resuelto el registro dig nexus.default.svc.cluster.mydomain

El último paso es actualizar el orden de resolución /etc/nsswitch.conf, colocando el dns antes del mdns4_minimal

hosts           files dns mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] myhostname
Fabio Fumarola
fuente
1
Debería volver a configurar cada vez que cambie la IP del DNS (por ejemplo, en diferentes redes).
Victor
Victor, ¿tienes la mejor solución? esto es lo mismo si usa la configuración de red estática
Fabio Fumarola
Esta respuesta funciona tanto para configuraciones estáticas como dinámicas: askubuntu.com/a/974482/343617
Victor
gracias, la solución que he señalado es estática. Estoy de acuerdo
Fabio Fumarola
Esto me funcionó en una nueva instalación de 18.04
JamesCW
1

Creé un script que soluciona el problema de que Netplan no admite actualmente la capacidad de reemplazar los servidores DNS y el orden de búsqueda de dominio proporcionados por DHCP. Crea el archivo Netplan yaml y configura systemd-resolve para que funcione como se espera.

################## 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
Acechador salvaje
fuente
1

La solución que funcionó para mí está publicada aquí en mi blog

Use nano editor para editar estos 2 archivos

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

Agregue los servidores DNS que desea usar

nameserver 9.9.9.9
nameserver 127.0.0.1

Luego reinicie el servicio

service systemd-resolved restart

Revision final:

cat /etc/resolv.conf

Hacer nslookup

nslookup google.com 

Acabo de usar esto y solucionó el problema en mi computadora portátil en casa, pero en algún momento en el futuro cuando esté fuera de mi red doméstica puedo ver que causará problemas, porque el servidor DNS primario y secundario seguirá siendo mi hogar servidores con sus direcciones lan.

ookangzheng
fuente
2
Debería volver a configurar cada vez que cambie la IP del DNS (por ejemplo, en diferentes redes).
Victor
no es elegante, pero a veces no funciona bien.
Rodrigo Ferrari
La edición /etc/resolv.confno funciona ya que el archivo se sobrescribirá durante el systemd-resolvedreinicio. Solo edita /etc/systemd/resolved.conf. Vea mi respuesta aquí: askubuntu.com/questions/977243/ubuntu-17-10-disable-netplan/…
EnzoR
1

Tu /etc/resolv.confno es el problema. systemd-resolvedsolo está predeterminado en no configurado, por lo que falla en todas las búsquedas. Siéntase libre de despotricar sobre Unconfigured vs A Razonable Default.

Agregar manualmente servidores de nombres a systemd-resolved. (edición según el comentario de Olorin a continuación para agregar mkdir, ruta correcta /etcno /lib, para sobrevivir a las actualizaciones del sistema)

sudo mkdir -p /etc/systemd/resolved.conf.d
sudo nano /etc/systemd/resolved.conf.d/00-my-dns-server-is.conf

Añadir:

[Resolved]
Cache=yes
DNS=192.168.1.152

Luego...

sudo systemctl daemon-reload

systemd-resolvedes inteligente, pero no está configurado como es, por parte de los mantenedores de paquetes, simplemente se ve estúpido porque los mantenedores de paquetes no creen en un incumplimiento razonable. Podemos poner 13 servidores raíz de Internet allí también conocidos como "djb way", o 10 servidores opennic: https://pastebin.com/JBfYVVtG o los tres servidores opennic más rápidos, medidos por namebench. Más servidores de nombres ISP, claro. Además de Google, claro. systemd-resolvedNo es el problema. Yo soy el problema

BobDodds
fuente
Aunque probablemente no desee editar un archivo /usr/lib, es probable que se sobrescriban en la actualización del paquete. Creo que un archivo correspondiente en algún lugar /etc/systemdes el camino a seguir (ya debería estar /etc/systemd/resolved.conflisto para ser editado por los administradores).
Olorin el
1
man resolve.conf.d, con la d, sí /etc/systemd/resolved.d es el lugar. Me doy cuenta de que a menudo tenemos que mkdir /etc/[pathfont>.d. bob @ laptop l /etc/systemd/resolved.conf.d ls: no se puede acceder a '/etc/systemd/resolved.conf.d': No
existe
0

En mi sistema encontré un mal enlace simbólico: /etc/resolv.confera un enlace simbólico que apunta a/run/systemd/resolve/stub-resolv.conf

Este archivo contiene solo una línea:

nameserver 127.0.0.53#53

Como resultado, a menudo faltaba la búsqueda de DNS de la red local.

Entonces, en cambio, cambié /etc/reolv.confpara señalar/run/systemd/resolve/resolv.conf

y ahora funciona correctamente

Bánó Gábor
fuente
0

Es extraño, pero la única solución que funcionó para mí en Ubuntu 18.04 fue la que encontré aquí :

Primero, cambie /etc/resolv.confconfigurando el servidor de nombres deseado :

# nano /etc/resolv.conf

Establecer, por ejemplo,

nameserver 8.8.8.8

Y luego hacer

# chattr +i /etc/resolv.conf

Esto protege el /etc/resolv.confarchivo para que nadie pueda modificarlo, incluido el usuario root.

Artem S
fuente
-3

Tengo el mismo problema. Cada reinicio, nada se resolverá. Ya desinstalé todo y lo reinstalé unas 50 veces. Simplemente está roto.

así que la solución es ... "solo aplique algunas configuraciones cada vez que inicie su PC, lo que permite que se resuelva el 90% de los nombres de host, pero las actualizaciones y actualizaciones de wget y apt-get fallarán aleatoriamente sin ninguna razón"

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

Cuando use Ubuntu 17.10 Desktop, debe editar el archivo que dice NO EDITE ESTE ARCHIVO BLAH BLAH BLAH

bueno, esa es la ÚNICA forma en 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

Por lo tanto, elimine la IP 127.0.0.53 como servidor de nombres e ingrese otra, por ejemplo, google. Parece que mi dirección IP DNS real tampoco resuelve los nombres de host (a pesar de que funciona en otras 10 máquinas y dispositivos en la casa), pero Google funciona bien.

ravery
fuente