GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie konfiguriere ich systemd-resolved und systemd-networkd, um den lokalen DNS-Server zum Auflösen lokaler Domänen und den Remote-DNS-Server für Remote-Domänen zu verwenden?

In der Konfigurationsdatei für die lokale Netzwerkschnittstelle (eine Datei mit dem Namensmuster /etc/systemd/network/*.network ) müssen wir entweder angeben, dass wir die lokale DNS-Serveradresse vom DHCP-Server mit DHCP= erhalten möchten Möglichkeit:

[Network]
DHCP=yes

oder geben Sie seine Adresse explizit mit DNS= an Möglichkeit:

[Network]
DNS=10.0.0.1

Außerdem müssen wir (im selben Abschnitt) lokale Domänen mit Domains= angeben Möglichkeit

Domains=domainA.example domainB.example ~example

Wir geben lokale Domänen domainA.example domainB.example an um das folgende Verhalten zu erhalten (von systemd-resolved.service, systemd-resolved Manpage):

Suchen nach einem Hostnamen, der mit einer der Schnittstellendomänen endet, werden ausschließlich an die übereinstimmenden Schnittstellen weitergeleitet.

Hier entlang hostX.domainA.example ausschließlich gelöst von unserem lokalen DNS-Server.

Wir spezifizieren mit ~example dass alle Domains auf example enden sind als Nur-Routing-Domains zu behandeln, um das folgende Verhalten zu erhalten (aus der Beschreibung dieses Commits):

DNS-Server mit Nur-Routing-Domänen sollten nur für die angegebenen Domänen verwendet werden.

Hier entlang hostY.on.the.internet ausschließlich gelöst von unserem globalen Remote-DNS-Server.

Hinweis

Idealerweise sollten bei Verwendung des DHCP-Protokolls lokale Domänennamen vom DHCP-Server bezogen werden, anstatt explizit in der Konfigurationsdatei der Netzwerkschnittstelle oben angegeben zu werden. Siehe UseDomains= Möglichkeit. Es gibt jedoch noch offene Probleme mit dieser Funktion – siehe systemd-networkd Problem mit der DHCP-Suchdomänenoption.

Wir müssen den Remote-DNS-Server als unseren globalen, systemweiten DNS-Server angeben. Wir können dies in /etc/systemd/resolved.conf tun Datei:

[Resolve]
DNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844

Vergessen Sie nicht, die Konfiguration neu zu laden und die Dienste neu zu starten:

$ sudo systemctl daemon-reload
$ sudo systemctl restart systemd-networkd
$ sudo systemctl restart systemd-resolved

Achtung!

Obige Garantien gelten nur, wenn Namen von systemd-resolved aufgelöst werden – siehe Manpage für nss-resolve, libnss_resolve.so.2 und Manpage für systemd-resolved.service, systemd-resolved.

Siehe auch:

  • Die Beschreibung von Routing-Suchanfragen in systemd-bezogenen Manpages ist unklar
  • Wie behebe ich DNS-Probleme mit systemd-resolved?

Referenzen:

  • Manpage für systemd-resolved.service, systemd-resolved
  • Manpage für resolve.conf, resolve.conf.d
  • Manpage für systemd-network

Um die ausgezeichnete Antwort von @piotrDobrogost zu erweitern, vergessen Sie nicht, /etc/nsswitch.conf zu konfigurieren um systemd-resolved zu verwenden als DNS-Auflösungsquelle. Ihr hosts Direktive sollte für Ihren speziellen Anwendungsfall wie folgt aussehen:

/etc/nsswitch.conf

hosts:  files resolve dns

Wenn Sie also die Auflösung nur auf die in Domains angegebenen Domains beschränken Direktive in /etc/systemd/resolved.conf wie oben von Piotr ausgeführt, sollte DNS als nächstes in der Reihenfolge der Namensauflösungsquellen konsultiert werden, die /etc/nsswitch.conf angegeben sind wenn Domains NICHT sind gefunden in Domains Direktive:

Der folgende Link verweist auf die Anforderung, resolve anzugeben in /etc/nsswitch.conf also systemd-resolved wird während der Namensauflösung herangezogen:

https://github.com/systemd/systemd/issues/940

SystemD-Dokumentation fand ich schrecklich. Ich musste ein Verständnis aus mehreren Links zusammensetzen, einschließlich Piotrs Antwort oben;-)


Linux
  1. Wie ich Ansible und Anacron für die Automatisierung verwende

  2. Wie aktiviere ich die Protokollierung des BIND-DNS-Servers, um Abfragen zu überwachen und Fehler zu beheben?

  3. Wie installiere und konfiguriere ich Bind, um deinen DNS-Server einzurichten?

  4. Wie kann man den Softwarenamen und die Version des Remote-DNS-Servers identifizieren?

  5. So installieren und verwenden Sie Telnet unter Debian 11

So installieren und verwenden Sie den Xrdp-Server (Remote Desktop) auf einem Linux-System

So konfigurieren Sie DNS in Windows Server 2012

So installieren und konfigurieren Sie Parse Server unter Ubuntu 20.04

So installieren und konfigurieren Sie Sandstorm Server unter CentOS 8

So installieren und konfigurieren Sie die CSF-Firewall für Linux

So installieren und konfigurieren Sie den DNS-Server unter Linux