New user sign up using AWS Builder ID
New user sign up using AWS Builder ID is currently unavailable on re:Post. To sign up, please use the AWS Management Console instead.
Wie weise ich einer Amazon EC2-Instance einen statischen DNS-Server zu, der beim Neustart bestehen bleibt?
Ich möchte eine Amazon Elastic Compute Cloud (Amazon EC2)-Instance konfigurieren, die über einen statischen DNS-Server verfügt, der auch nach einem Neustart bestehen bleibt.
Kurzbeschreibung
Standardmäßig fordern Amazon EC2-Instances, die mit einer Amazon Virtual Private Cloud (Amazon VPC) verknüpft sind, beim Start eine DNS-Server-Adresse an. Das Dynamic Host Configuration Protocol (DHCP) sendet die Anfrage. Die DHCP-Antwort gibt DNS-Server-Adressen zurück, die in die lokale Datei /etc/resolv.conf geschrieben wurden.
Wenn du die Instance neu startest, gehen die manuellen Änderungen an der Datei resolv.conf verloren, die benutzerdefinierte DNS-Server-Adressen enthält. Um deinen statischen DNS-Server beim Neustart deiner Instance beizubehalten, führe je nach Linux-Distribution eines der folgenden Verfahren aus.
Behebung
Wichtig: Bevor du deine Instance änderst, verwende ein Amazon Machine Image (AMI), um ein Backup zu erstellen. Oder verwende einen Amazon Elastic Block Store (Amazon EBS) -Snapshot, um ein Backup zu erstellen. Wenn du die Netzwerkkonfigurationen für eine Instance änderst, ist die Instance möglicherweise nicht mehr erreichbar.
Amazon Linux 2023
Amazon Linux 2023 verwendet systemd-resolved. Weitere Informationen findest du unter systemd-resolved auf der Archlinux-Website.
Resolver konfigurieren
Bearbeite die Datei /etc/systemd/resolved.conf und ändere die Optionen für DNS und Domäne.
Beispiel für eine Konfigurationsdatei:
# /etc/systemd/resolved.conf [Resolve] DNS=8.8.8.8 Domains=~.
Oder erstelle ein Drop-in. Verwende beispielsweise die Datei /etc/systemd/resolved.conf.d/dns_servers.conf.
Beispiel für eine Konfigurationsdatei:
#/etc/systemd/resolved.conf.d/dns_servers.conf [Resolve] DNS=8.8.8.8 8.8.4.4 Domains=~.
Hinweis: Wenn du die Domains=~.-Option nicht setzt, dann verwendet systemd-resolved möglicherweise die linkspezifische Konfiguration der linkspezifischen DNS-Server. Die Domains=~.-Option wirkt sich nicht auf Abfragen von Domainnamen aus, die den spezifischeren Suchdomänen entsprechen, die in linkspezifischen Konfigurationen angegeben sind. Wenn Domainnamen aufgelöst werden, verwenden sie ihre jeweiligen linkspezifischen DNS-Server.
Ändere den Speicherort der /etc/resolv.conf-Punkte
Standardmäßig verweist /etc/resolv.conf auf den Localhost-Stub-Resolver. Um den Resolver zu ändern, erstelle die Datei mit einem anderen Inhalt neu oder zeige auf eine andere Stelle als den Localhost-Stub-Resolver. Du kannst beispielsweise auf /run/systemd/resolve/resolv.conf verweisen, das eine vereinfachte Liste von Servern enthält, die systemd-resolved verwendet.
Um deine Konfiguration zu testen, führe den Befehl resolvectl status aus und verwende resolvectl query amazonaws.com. Überprüfe dann die Ausgabe.
Amazon Linux oder Amazon Linux 2
Verwende eine der folgenden Optionen, um deine Instance zu konfigurieren. Wenn du beide Optionen anwendest, haben die DNS-Server, die in der Datei ifcfg-eth0 angegeben sind, Vorrang.
Damit eine der beiden Optionen funktioniert, musst du den PEERDNS-Parameterwert in der Datei ifcfg-eth0 auf yes setzen. Wenn du den PEERDNS-Parameter auf no setzt, werden die DNS-Server, die in ifcfg-*-Dateien angegeben sind oder von DHCP bereitgestellt werden, ignoriert.
Option 1
Führe die folgenden Schritte aus:
- Bearbeite oder erstelle die Datei /etc/dhcp/dhclient.conf.
Hinweis: Du musst über Root-Benutzerrechte verfügen, um diese Datei bearbeiten zu können. Benutze entweder sudo -i, um der Root zu werden, oder verwende sudo, um alle Befehle zu implementieren. - Füge der Datei den Befehl supersede hinzu, um die domain-name-servers zu überschreiben. Ersetze im folgenden Beispielbefehl xxx.xxx.xxx.xxx durch die IP-Adresse des DNS-Servers oder der DNS-Server, die die Instance verwenden soll:
Nach der vorherigen Änderung wird die Datei resolv.conf beim Neustart der Instance aktualisiert und enthält nur die DNS-Server, die du in der dhclient-Datei angegeben hast.supersede domain-name-servers xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx;
- Setze den PEERDNS-Parameter auf yes in deiner schnittstellenspezifischen-Konfigurationsdatei, /etc/sysconfig/network-scripts/ifcfg-*.
- Starte die EC2-Instance neu.
Option 2
Führe die folgenden Schritte aus:
-
Um die DNS-Serverwerte in der Datei /etc/dhcp/dhclient.conf zu überschreiben, gib die benutzerdefinierten DNS-Server in den schnittstellenspezifischen Konfigurationsdateien an.
Die folgende Datei zeigt beispielsweise die Datei /etc/sysconfig/network-scripts/ifcfg-eth0 von einer Amazon Linux-Instance, die so geändert wurde, dass sie zwei benutzerdefinierte DNS-Server enthält:DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes TYPE=Ethernet USERCTL=yes PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=yes RES_OPTIONS="timeout:2 attempts:5" DHCP_ARP_CHECK=no MTU="9001" DNS1=8.8.8.8 DNS2=8.8.4.4
-
Setze den PEERDNS-Parameter auf yes in deiner schnittstellenspezifischen-Konfigurationsdatei, /etc/sysconfig/network-scripts/ifcfg-*.
Ubuntu 16.04
Führe die folgenden Schritte aus:
- Bearbeite oder erstelle die Datei /etc/dhcp/dhclient.conf.
Hinweis: Du musst über Root-Benutzerrechte verfügen, um diese Datei bearbeiten zu können. Benutze entweder sudo -i, um der Root zu werden, oder verwende sudo, um alle Befehle zu implementieren. - Füge der Datei den Befehl supersede hinzu, um die domain-name-servers zu überschreiben. Ersetze im folgenden Beispielbefehl xxx.xxx.xxx.xxx durch die IP-Adresse des DNS-Servers oder der DNS-Server, die die Instance verwenden soll:
Nach der Änderung wird die Datei resolv.conf beim Neustart der Instance aktualisiert und enthält nur die DNS-Server, die du in der dhclient-Datei angegeben hast.supersede domain-name-servers xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx;
- Starte die Instance neu.
Ubuntu 18.04
Unter Ubuntu 18.04 verwaltet das netplan.io-Paket die Konfiguration der Netzwerkschnittstelle, und der Dienst systemd-resolved verwendet einen Stub-Resolver, um DNS-Abfragen zu verwalten. Die IP-Adresse des Stub-Resolvers befindet sich in /etc/resolv.conf.
Die Datei /etc/resolv.conf ist ein Symlink zur Datei /run/systemd/resolve/stub-resolv.conf. Wenn eine der folgenden Bedingungen für die Datei /etc/resolv.conf zutrifft, funktioniert die Anweisung supersede in /etc/dhcp/dhclient.conf möglicherweise nicht wie erwartet:
- Die Datei ist kein Symlink auf deiner Instance.
- Die Datei ist ein Symlink, der auf eine andere Datei verweist. Die Datei zeigt beispielsweise auf /run/systemd/resolve/resolv.conf.
Gehe wie folgt vor, um die DNS-Serverwerte zu überschreiben:
- Netplan speichert Konfigurationsdateien im Verzeichnis /etc/netplan. Erstelle eine Datei mit dem Namen /etc/netplan/99-custom-dns.yaml und gib dann die folgenden Zeilen in die Datei ein. Ersetze die Beispiel-DNS-Server-IP-Adressen durch deine IP-Adressen:
Hinweis: Im vorherigen Beispielcode ist die Schnittstelle als ens5 angegeben. Stelle sicher, dass der Schnittstellenname mit der Schnittstelle deines Setups übereinstimmt. Um deinen Schnittstellennamen zu sehen, führe den Befehl ip a aus.cat << 'EOF' | sudo tee /etc/netplan/99-custom-dns.yaml network: version: 2 ethernets: ens5: nameservers: addresses: [1.1 .1 .1, 1.0 .0 .1] dhcp4-overrides: use-dns: false use-domains: false EOF
- Um die Netplan-YAML-Datei in Konfigurationsdateien zu konvertieren, führe den folgenden netplan-Befehl aus:
Du findest jetzt die IP-Adresse des Stub-Resolvers in /etc/resolv.conf. Das wird erwartet. Die Stub-Resolver-IP-Adresse ist lokal für dein Betriebssystem. Im Hintergrund verwendet der Stub-Resolver die DNS-Server, die du in der Datei 99-custom-dns.yaml angegeben hast.netplan generate
- Starte die Instance neu.
- Um zu bestätigen, dass das System die vorgesehenen DNS-Server-IP-Adressen korrekt abruft, führe den Befehl systemd-resolve aus:
systemd-resolve --status
RHEL 7.5
Standardmäßig verwaltet der NetworkManager-Service die Datei resolv.conf. Der Dienst füllt die Datei dann mit DNS-Servern auf, die DHCP bereitstellt. Erlaube NetworkManager nicht, die resolv.conf-Datei so zu verwalten, dass die resolv.conf-Datei die DNS-Server ignoriert, die DHCP bereitstellt.
Option 1
Führe die folgenden Schritte aus:
- Bearbeite oder erstelle die Datei /etc/dhcp/dhclient.conf.
Hinweis: Du musst über Root-Benutzerrechte verfügen, um diese Datei bearbeiten zu können. Benutze entweder sudo -i, um der Root zu werden, oder verwende sudo, um alle Befehle zu implementieren. - Füge der Datei den Befehl supersede hinzu, um die domain-name-servers zu überschreiben. Ersetze im folgenden Beispielbefehl xxx.xxx.xxx.xxx durch die IP-Adresse des DNS-Servers:
Du kannst auch deine bevorzugten Server eingeben, die die Instance verwenden soll.supersede domain-name-servers xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx;
Nach der Änderung wird die Datei resolv.conf beim Neustart der Instance aktualisiert und enthält nur die DNS-Server, die du in der dhclient-Datei angegeben hast. - Setze den PEERDNS-Parameter auf yes in deiner schnittstellenspezifischen-Konfigurationsdatei, /etc/sysconfig/network-scripts/ifcfg-*.
- Starte die Instance neu.
Option 2
Führe die folgenden Schritte aus:
-
Erstelle die Datei /etc/NetworkManager/conf.d/90-dns-none.conf mit dem folgenden Inhalt:
[main] dns=none
-
Starte die Instance neu und erstelle dann manuell die Datei /etc/resolv.conf.
Ähnliche Informationen
DHCP-Optionssätze in Amazon VPC
2.1 Netzwerkdateien auf der Archlinux-Website
resolved.conf(5) auf der Archlinux-Webseite
dhclient.conf(5) auf der Archlinux-Webseite
networkmanager.conf(5) auf der Archlinux-Webseite
Ähnliche Videos


Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 8 Monaten
- AWS OFFICIALAktualisiert vor einem Jahr