resolv.conf & systemd-resolved: Abfrage des nächsten Servers in der Domäne, keine Antworten gefunden

resolv.conf & systemd-resolved: Abfrage des nächsten Servers in der Domäne, keine Antworten gefunden

Ich versuche, einen einfachen kaskadierenden DNS-Auflösungsalgorithmus für meinen Laptop zu erstellen:

  • Abfragen der von DHCP bereitgestellten Server
  • Nicht gefunden / fehlgeschlagen? Abfrage 8.8.8.8 und seine Freunde
  • Nicht gefunden / fehlgeschlagen? Lokales DNSMASQ unter 127.ABC abfragen

Derzeit scheint es so, dass der nächste Server nur angefordert wird, wenn der vorherige auf die eine oder andere Weise ausgefallen ist. Wenn er jedoch mit einer leeren Antwort geantwortet hat, wird der Auflösungsprozess gestoppt.

Ist es möglich, Linux-Maschinen zu zwingen, dies auf die oben beschriebene kaskadierte Weise zu tun, entweder über Kernelmechanismen oder systemd-resolved? Es ist sicherlich möglich, indem Anfragen über dnsmasq weitergeleitet werden (indem systemd-resolved in der ersten server=Anweisung so eingestellt wird, dass die Anfrage an DHCP-bereitgestellte Server weitergeleitet wird), aber ich würde einen weniger chaotischen Weg bevorzugen, bei dem so viel wie möglich von meiner Distribution intakt bleibt.

Antwort1

Leider funktioniert DNS nicht so. Andere Server werden nur dann abgefragt, wenn der zuvor definierte Server nicht antwortet. JEDE Antwort, selbst wenn sie NXDOMAIN lautet, ist eine Antwort. Sogar eine Antwort wie „Abfrage verweigert“ ist eine Antwort ...

Antwort2

Wie sich herausstellte, kann man etwas ganz Ähnliches, das meinen Anforderungen entspricht, auch andersherum machen (einfach weil sich die Domänen nicht überschneiden). Die notwendige Funktionalität befindet sich im dnsmasq selbst und ich kann das, was ich will, folgendermaßen erreichen:

  1. Starten Sie systemd-resolved auf 127.0.0.53

  2. Fügen Sie dnsmasq.conf die erforderlichen Regeln hinzu

    address = /banana.services/127.0.0.1
    address = /mango.services/127.0.0.1
    
  3. Finalisieren Sie dnsmasq.conf mit Fallback-Servern von systemd-aufgelösten und globalen DNS

    server = 127.0.0.53
    server = 8.8.8.8
    server = 8.8.4.4
    server = 1.1.1.1
    
  4. Voila - jetzt* wird dnsmasq zuerst lokale Overrides ausführen, dann den lokalen DNS untersuchen und schließlich, wenn auch er mit leeren Händen zurückkommt, die Liste der bekannten DNS-Server abfragen

* nsswitch.conf erfordert möglicherweise auch eine Änderung der Auflösungsreihenfolge.

verwandte Informationen