Stellen Sie sicher, dass systemd-resolved einen DNS-Server ignoriert und nur den von mir angegebenen verwendet.

Stellen Sie sicher, dass systemd-resolved einen DNS-Server ignoriert und nur den von mir angegebenen verwendet.

Ich habe ein Problem mit DNS. Um das Problem einzugrenzen, wurde ich gebeten, die DNS-Einstellungen meines Computers manuell zu konfigurieren und dabei nur einen DNS-Server anstelle der beiden anzugeben, die über DHCP zurückgegeben werden. So können die Serveradministratoren herausfinden, ob mein Problem nur bei einem DNS-Server oder bei beiden auftritt.

Ich konnte systemd-resolved jedoch nicht so konfigurieren, dass es meine DNS-Konfiguration manuell akzeptiert.

Ich habe Folgendes versucht, und bei allen wurden weiterhin zufällig DNS-Anfragen zwischen beiden Servern gesendet, selbst nachdem beide neu gestartet wurden, systemd-networkdund systemd-resolved:

  • Angabe DNS=1.2.3.4im [Resolve]Abschnitt/etc/systemd/resolved.conf
  • Angabe DNS=1.2.3.4im [Network]Abschnitt /etc/systemd/network/eth0.conf(die einzige Datei in diesem Ordner)
  • Einen der Server bearbeiten /etc/resolv.confund auskommentieren

Nichts davon änderte etwas, resolvectlbeide DNS-Server wurden weiterhin als verfügbar aufgelistet und als ich meine Tests durchführte, wurden die DNS-Abfragen zwischen den beiden Servern aufgeteilt, anstatt nur den einen Server zu verwenden, den ich angegeben hatte.

Wie kann ich systemd anweisen, nur einen einzigen von mir angegebenen DNS-Server zu verwenden und nicht auch die über DHCP zurückgegebenen Server zu verwenden?

Antwort1

Ich habe das nicht ausprobiert, aber inzwischen herausgefunden, dass es eine Option gibt, DNS-Server aus der DHCP-Antwort zu ignorieren. .networkFügen Sie in der systemd-Datei einen DHCP-Abschnitt hinzu, falls dieser noch nicht vorhanden ist, und verwenden Sie die UseDNSOption:

[Network]
DNS=8.8.8.8  # Specify your DNS server manually

[DHCPv4]
UseDNS=no  # Don't use DNS servers from DHCP

Antwort2

Ich habe nicht genug Ruf, um etwas dazu zu sagenMalvinisch's Antwort. Obwohl seine Antwort richtig ist, müssen nspawn-Container die Datei benennen, 80-container-host0.networkum die Systemstandards des Hosts zu überschreiben.

Von demsystemd-nspawnDokumente:

Beachten Sie, dass systemd-networkd.service(8) standardmäßig eine Netzwerkdatei enthält, die zu /usr/lib/systemd/network/80-container-ve.networkden auf diese Weise erstellten Host-seitigen Schnittstellen passt und Einstellungen zur Aktivierung der automatischen Adressbereitstellung auf dem erstellten virtuellen Link über DHCP sowie zur automatischen IP-Weiterleitung auf die externen Netzwerkschnittstellen des Hosts enthält. Es enthält außerdem eine /usr/lib/systemd/network/80-container-host0.networkentsprechende Datei zur auf diese Weise erstellten Container-seitigen Schnittstelle, die Einstellungen zur Aktivierung der clientseitigen Adresszuweisung über DHCP enthält. Falls systemd-networkd sowohl auf dem Host als auch innerhalb des Containers ausgeführt wird, ist somit eine automatische IP-Kommunikation vom Container zum Host mit weiterer Konnektivität zum externen Netzwerk möglich.

/etc/systemd/network/80-container-host0.network:

# https://www.freedesktop.org/software/systemd/man/systemd.network.html#UseDNS=
#
# Disable adding the DNS from DHCP
#
[Match]
Virtualization=container
Name=host0

[Network]
DHCP=ipv4
DNS=

[DHCPv4]
UseDNS=false

Antwort3

Wenn Sie eine statische IP festlegen können, können Sie den DNS-Server angeben. Fragen Sie die Netzwerkadministratoren nach einer statischen IP, die Sie verwenden können, und probieren Sie diese aus. Verwenden Sie dafür nicht einfach irgendeine IP, da es leicht zu einem Duplikat kommen kann.

verwandte Informationen