resolv.conf y systemd-resolved: consultar el siguiente servidor en el dominio no encontrado respuestas

resolv.conf y systemd-resolved: consultar el siguiente servidor en el dominio no encontrado respuestas

Estoy intentando crear un algoritmo de resolución DNS en cascada simple para mi computadora portátil:

  • Consultar los servidores proporcionados por DHCP
  • ¿No encontrado/fallado? Consulta 8.8.8.8 y sus amigos
  • ¿No encontrado/fallado? Consulta dnsmasq local en 127.ABC

Actualmente parece que el siguiente servidor sólo se solicita si el anterior ha fallado de una forma u otra, pero si ha respondido con una respuesta vacía, el proceso de resolución se detiene.

¿Es posible forzar a una máquina con Linux a hacerlo de la forma en cascada descrita anteriormente, ya sea mediante mecanismos del kernel o resueltos por systemd? Seguramente es posible enrutando las solicitudes a través de dnsmasq (configurando systemd-resolved en la primera server=directiva para reenviar la consulta a los servidores proporcionados por DHCP), pero preferiría hacerlo de una manera menos complicada que mantuviera la mayor parte de mi distribución intacta como sea posible.

Respuesta1

Desafortunadamente, así no es como funciona el DNS. El único momento en que se consultarán otros servidores es cuando el servidor definido anteriormente no responde. CUALQUIER respuesta, incluso si esa respuesta es NXDOMAIN, es una respuesta. Incluso una respuesta de Consulta denegada es una respuesta...

Respuesta2

Al final resultó que, algo bastante similar que satisfaga mis necesidades se puede hacer al revés (solo porque los dominios no se superponen). La funcionalidad necesaria está en el propio dnsmasq y puedo lograr lo que quiero de la siguiente manera:

  1. Inicie systemd-resuelto en 127.0.0.53

  2. Agregue las reglas necesarias a dnsmasq.conf

    address = /banana.services/127.0.0.1
    address = /mango.services/127.0.0.1
    
  3. Finalice dnsmasq.conf con servidores alternativos de dns global y resuelto por systemd

    server = 127.0.0.53
    server = 8.8.8.8
    server = 8.8.4.4
    server = 1.1.1.1
    
  4. Voila - ahora* el dnsmasq primero realizará anulaciones locales, luego buscará en el DNS local y, finalmente, si también regresa con las manos vacías, consultará la lista de servidores DNS conocidos.

* Es posible que nsswitch.conf también requiera cambiar el orden de resolución.

información relacionada