Después del paso 2, puede estar sin un sistema de resolución de trabajo hasta que se complete el paso 3. Es posible que deba reiniciar el subsistema de red (o simplemente reiniciar) para dnsmasqfuncionar con las configuraciones predeterminadas. En mis pruebas, agregar un servidor DNS conocido /etc/dnsmasq.confy reiniciar dnsmasqfue suficiente para que funcione en un entorno liveCD.
¡Gran respuesta, y aparentemente la única solución cuando deshabilitar NetworkManager no es aceptable!
bogl
3
Para mí, esta fue una gran respuesta, pero también requirió los pasos adicionales de la respuesta de @ blabla, agregando dns=dnsmasqconfiguración a/etc/NetworkManager/NetworkManager.conf
Roberto Tyley
Igual que aquí. Después de luchar con el cambio resuelto y desvinculado de systemd a dnsmasq hizo el truco en ubuntu 17.10. Sin embargo, tuve que usar las adiciones de Blabla.
Alberto L. Bonfiglio
17
Además de la respuesta de @quixotic:
Asegúrese de tener en /etc/NetworkManager/NetworkManager.conf:
[main]
dns=dnsmasq
si necesita agregarlo, reinicie NetworkManager de esta manera:
sudo systemctl restart NetworkManager
y /etc/resolv.confnecesita ser un enlace simbólico para /var/run/NetworkManager/resolv.conf. podría hacerse así
En realidad, lo configuré como dns=defaulty funciona bien porque tengo los servidores de nombres definidos por NetworkManager en lugar de estar definidos en dnsmasq; esto funciona para mí: NM obtiene los servidores de nombres de la configuración realizada en la configuración NM de KDE a través de la bandeja del sistema. Utilizo IP fija en mi red doméstica FWIW.
pbhj
1
Este paso fue una adición necesaria a la respuesta de @ quixotic para mí (ubuntu 17.04, instalación completa, no LiveCD).
Roberto Tyley
0
De acuerdo con el manual de systemd-resolve , systemd-resolve proporciona servicios de resolución de nombres a través de tres interfaces diferentes:
"Exposiciones resueltas API systemd con todas las funciones en el bus"
"un oyente de código auxiliar DNS local en la dirección IP 127.0.0.53 en la interfaz de bucle invertido local"
La API glibc getaddrinfo (3) según lo definido por RFC3493 y sus funciones de resolución relacionadas, incluido gethostbyname (3). Esta API es ampliamente compatible, incluso más allá de la plataforma Linux. Sin embargo, en su forma actual, no expone la información del estado de validación de DNSSEC y solo es síncrono. Esta API está respaldada por el conmutador de servicio de nombres glibc (nss (5)). Se requiere el uso del módulo glibc NSS nss-resolve (8) para permitir que las funciones de resolución NSS de glibc resuelvan los nombres de host mediante systemd-resolve.
Parece que las dos primeras interfaces no interferirán en la resolución DNS normal y para mí el problema probablemente resida en la tercera.
Para activar el módulo NSS, agregue "resolver" a la línea que comienza con "hosts:" en /etc/nsswitch.conf. Específicamente, se recomienda colocar "resolver" temprano en la línea "hosts:" de /etc/nsswitch.conf (pero después de las entradas "archivos" o "mymachines"), justo antes de la entrada "dns" si existe, seguido de "[! UNAVAIL = return]", para garantizar que las consultas DNS siempre se enruten a través de systemd-resolve (8) si se está ejecutando, pero se enrutan a nss-dns si este servicio no está disponible
Entonces, lo que se necesita es hacer que "dns" preceda a "resolver" en "host:" línea de /etc/nsswitch.conf . Y luego getaddrinfosimplemente debe adherirse a /etc/resolv.conf .
Esta solución solo evita que systemd-resolve maneje todas las solicitudes de resolución DNS y no está restringida a un administrador de red específico. Y también se asegura de que el servicio LLMNR y mDNS estén funcionando normalmente.
(No estoy bastante familiarizado con cómo funciona la resolución de nombres en Linux y tampoco estoy seguro de lo que entendí de estos manuales. Por favor, señale si tengo algo mal. Thx :))
(alternativamente deshabilítelo por completo $ sudo systemctl disable systemd-resolved.service)
Elimine /etc/resolv.conf y vuelva a crear. Esto es importante, porque resolv.conf es un enlace simbólico a /run/systemd/resolve/stub-resolv.conf de forma predeterminada. Si no va a eliminar el enlace simbólico, systemd sobrescribirá el archivo al reiniciarlo (¡aunque desactivemos systemd-resolve!). También NetworkManager (NM) verifica si se trata de un enlace simbólico para detectar la configuración resuelta por el sistema.
Deshabilite la sobrescritura de /etc/resolv.conf por parte de NM (también hay una opción rc-manager, pero no funciona, a pesar de que se describe en un manual):
Respuestas:
dnsmasq
Los paquetes todavía están disponibles en 16.10 y 17.04.Instalar
dnsmasq
y dependencias (o al menos descargar sus paquetes) antes de deshabilitarsystemd-resolved
:Deshabilitar
systemd-resolved
y verificar sednsmasq
está ejecutando:Sazone
dnsmasq
al gusto. Después de aplicar su configuración, reiniciednsmasq
:Después del paso 2, puede estar sin un sistema de resolución de trabajo hasta que se complete el paso 3. Es posible que deba reiniciar el subsistema de red (o simplemente reiniciar) para
dnsmasq
funcionar con las configuraciones predeterminadas. En mis pruebas, agregar un servidor DNS conocido/etc/dnsmasq.conf
y reiniciardnsmasq
fue suficiente para que funcione en un entorno liveCD.fuente
dns=dnsmasq
configuración a/etc/NetworkManager/NetworkManager.conf
Además de la respuesta de @quixotic:
Asegúrese de tener en /etc/NetworkManager/NetworkManager.conf:
si necesita agregarlo, reinicie NetworkManager de esta manera:
y
/etc/resolv.conf
necesita ser un enlace simbólico para/var/run/NetworkManager/resolv.conf
. podría hacerse asífuente
dns=default
y funciona bien porque tengo los servidores de nombres definidos por NetworkManager en lugar de estar definidos en dnsmasq; esto funciona para mí: NM obtiene los servidores de nombres de la configuración realizada en la configuración NM de KDE a través de la bandeja del sistema. Utilizo IP fija en mi red doméstica FWIW.De acuerdo con el manual de systemd-resolve , systemd-resolve proporciona servicios de resolución de nombres a través de tres interfaces diferentes:
Parece que las dos primeras interfaces no interferirán en la resolución DNS normal y para mí el problema probablemente resida en la tercera.
En el manual de nss-resolve :
Entonces, lo que se necesita es hacer que "dns" preceda a "resolver" en "host:" línea de /etc/nsswitch.conf . Y luego
getaddrinfo
simplemente debe adherirse a /etc/resolv.conf .Esta solución solo evita que systemd-resolve maneje todas las solicitudes de resolución DNS y no está restringida a un administrador de red específico. Y también se asegura de que el servicio LLMNR y mDNS estén funcionando normalmente.
(No estoy bastante familiarizado con cómo funciona la resolución de nombres en Linux y tampoco estoy seguro de lo que entendí de estos manuales. Por favor, señale si tengo algo mal. Thx :))
fuente
Para (X) Ubuntu 18.04 (vea mi respuesta en stackexchange ).
Aquí hay una copia (¿debo hacer una copia?)
Aquí hay una solución para (X) Ubuntu 18.04 Bionic.
Instalar dnsmasq
sudo apt install dnsmasq
Deshabilite el escucha resuelto systemd en el puerto 53 (no toque /etc/systemd/resolved.conf, porque puede sobrescribirse en la actualización):
y reiniciarlo
(alternativamente deshabilítelo por completo
$ sudo systemctl disable systemd-resolved.service
)Elimine /etc/resolv.conf y vuelva a crear. Esto es importante, porque resolv.conf es un enlace simbólico a /run/systemd/resolve/stub-resolv.conf de forma predeterminada. Si no va a eliminar el enlace simbólico, systemd sobrescribirá el archivo al reiniciarlo (¡aunque desactivemos systemd-resolve!). También NetworkManager (NM) verifica si se trata de un enlace simbólico para detectar la configuración resuelta por el sistema.
Deshabilite la sobrescritura de /etc/resolv.conf por parte de NM (también hay una opción rc-manager, pero no funciona, a pesar de que se describe en un manual):
y reiniciarlo:
Dígale a dnsmasq que use resolv.conf de NM:
y reiniciarlo:
Use dnsmasq para resolver:
fuente