DNS-Namensauflösungsoptionen für virtuelle Linux-Computer in Azure

Achtung

Dieser Artikel bezieht sich auf CentOS, eine Linux-Distribution, die sich dem End-of-Life-Status (EOL) nähert. Sie sollten Ihre Nutzung entsprechend planen. Weitere Informationen finden Sie im CentOS-Leitfaden für das Lebensende.

Gilt für: ✔️ Linux-VMs ✔️ Flexible Skalierungsgruppen

Azure stellt die DNS-Namensauflösung standardmäßig für alle in einem einzelnen virtuellen Netzwerk enthaltenen virtuellen Computer bereit. Sie können Ihre eigene Lösung für die DNS-Namensauflösung implementieren, indem Sie auf Ihren in Azure gehosteten virtuellen Computern Ihre eigenen DNS-Dienste konfigurieren. Die folgenden Szenarien sollten Ihnen dabei helfen, situationsabhängig die jeweils am besten geeignete Lösung zu wählen.

Welche Art der Namensauflösung Sie verwenden, hängt davon ab, wie die virtuellen Computer und Rolleninstanzen miteinander kommunizieren sollen.

In der folgenden Tabelle sind die Szenarien und entsprechenden Lösungen für die Namensauflösung aufgeführt:

Szenario Lösung Suffix
Namensauflösung zwischen Rolleninstanzen oder virtuellen Computern im gleichen virtuellen Netzwerk Von Azure bereitgestellte Namensauflösung Hostname oder vollqualifizierter Domänenname (FQDN)
Namensauflösung zwischen Rolleninstanzen oder virtuellen Computern in unterschiedlichen virtuellen Netzwerken Vom Kunden verwaltete DNS-Server, die Abfragen zwischen virtuellen Netzwerken zur Auflösung durch Azure weiterleiten (DNS-Proxy). Siehe Namensauflösung mithilfe eines eigenen DNS-Servers. Nur FQDN
Auflösung lokaler Computer- und Dienstnamen von Rolleninstanzen oder virtuellen Computern in Azure Vom Kunden verwaltete DNS-Server (z.B. lokale Domänencontroller, lokale schreibgeschützte Domänencontroller oder ein sekundärer DNS-Server, der mithilfe von Zonenübertragungen synchronisiert wird). Siehe Namensauflösung mithilfe eines eigenen DNS-Servers. Nur FQDN
Auflösung von Azure-Hostnamen von lokalen Computern Weiterleiten von Abfragen an einen vom Kunden verwalteten DNS-Proxyserver im zugehörigen virtuellen Netzwerk. Der Proxyserver leitet Abfragen zur Auflösung an Azure weiter. Siehe Namensauflösung mithilfe eines eigenen DNS-Servers. Nur FQDN
Reverse-DNS für interne IPs Namensauflösung mithilfe eines eigenen DNS-Servers

Von Azure bereitgestellte Namensauflösung

Zusammen mit der Auflösung der öffentlichen DNS-Namen bietet Azure die Auflösung interner Namen für virtuelle Computer und Rolleninstanzen, die sich innerhalb des gleichen virtuellen Netzwerks befinden. In virtuellen Netzwerken, die auf Azure Resource Manager basieren, ist das DNS-Suffix im gesamten virtuellen Netzwerk gleich. Der FQDN ist nicht erforderlich. DNS-Namen können Netzwerkkarten sowie virtuellen Computern zugewiesen werden. Obwohl für die von Azure bereitgestellte Namensauflösung keine Konfiguration erforderlich ist, ist sie nicht für alle Bereitstellungsszenarien die beste Lösung (siehe die vorherige Tabelle).

Features und Überlegungen

Funktionen:

  • Zur Verwendung der von Azure bereitgestellten Namensauflösung ist keine Konfiguration erforderlich.
  • Der von Azure bereitgestellte Dienst zur Namensauflösung ist hoch verfügbar. Sie müssen Cluster Ihrer eigenen DNS-Server weder erstellen noch verwalten.
  • Der von Azure bereitgestellte Dienst zur Namensauflösung kann in Verbindung mit Ihren eigenen DNS-Servern zum Auflösen von lokalen und Azure-Hostnamen verwendet werden.
  • Die Namensauflösung wird zwischen virtuellen Computern in virtuellen Netzwerken bereitgestellt, ohne dass der FQDN erforderlich ist.
  • Sie können Hostnamen verwenden, die Ihre Bereitstellungen am besten beschreiben, und müssen nicht mit automatisch generierten Namen arbeiten.

Überlegungen:

  • Das von Azure erstellte DNS-Suffix kann nicht geändert werden.
  • Sie können keine eigenen Einträge manuell registrieren.
  • WINS und NetBIOS werden nicht unterstützt.
  • Hostnamen müssen DNS-kompatibel sein. Für die Namen dürfen nur die Zeichen 0–9, a–z und „-“ verwendet werden, zudem dürfen sie nicht mit „-“ beginnen. Siehe RFC 3696 Abschnitt 2.
  • Der DNS-Abfragedatenverkehr wird für den jeweiligen virtuellen Computer gedrosselt. Die Drosselung sollte auf die meisten Anwendungen keine Auswirkungen haben. Wenn eine Drosselung der Anforderungen festgestellt wird, stellen Sie sicher, dass clientseitiges Zwischenspeichern aktiviert ist. Weitere Informationen finden Sie unter Optimale Nutzung der von Azure bereitgestellten Namensauflösung.

Optimale Nutzung der von Azure bereitgestellten Namensauflösung

Clientseitiges Zwischenspeichern:

Einige DNS-Abfragen werden nicht über das Netzwerk gesendet. Clientseitiges Zwischenspeichern kann die Latenz verringern und die Flexibilität bei Netzwerkinkonsistenzen verbessern, indem sich wiederholende DNS-Abfragen aus einem lokalen Cache aufgelöst werden. DNS-Einträge enthalten ein Time-To-Live (TTL), damit der Cache den Datensatz so lange wie möglich speichern kann, ohne die Aktualität der Datensätze zu beeinträchtigen. Daher ist das clientseitige Zwischenspeichern in den meisten Situationen geeignet.

Einige Linux-Distributionen bieten standardmäßig kein Zwischenspeichern. Es wird empfohlen, jedem virtuellen Linux-Computer einen Cache hinzuzufügen, nachdem Sie sich vergewissert haben, dass noch kein lokaler Cache vorhanden ist.

Verschiedene DNS-Cachingpakete, z.B. dnsmasq, stehen zur Verfügung. Es folgen die Schritte zur Installation von dnsmasq auf den gängigsten Distributionen:

  1. Installieren Sie das dnsmasq-Paket:
sudo apt-get install dnsmasq
  1. Aktivieren Sie den dnsmasq-Dienst:
sudo systemctl enable dnsmasq.service
  1. Starten Sie den dnsmasq-Dienst:
sudo systemctl start dnsmasq.service

Clientseitige Wiederholungsversuche

DNS ist in erster Linie ein UDP-Protokoll. Da das UDP-Protokoll keine Nachrichtenübermittlung garantiert, wird die Wiederholungslogik vom DNS-Protokoll selbst verarbeitet. Jeder DNS-Client (Betriebssystem) kann je nach Bevorzugung des Erstellers eine unterschiedliche Wiederholungslogik aufweisen:

  • Windows-Betriebssysteme starten nach einer Sekunde einen Wiederholungsversuch und dann erneut nach weiteren zwei, vier und weiteren vier Sekunden.
  • Das standardmäßige Linux-Setup führt nach fünf Sekunden einen Wiederholungsversuch aus. Sie sollten dies so ändern, dass fünfmal im Abstand von einer Sekunde ein Wiederholungsversuch gestartet wird.

Wechseln Sie zum Überprüfen der aktuellen Einstellungen auf einem virtuellen Linux-Computer „cat /etc/resolv.conf“ ein, und sehen Sie sich die Zeile „options“ an, z.B.:

sudo cat /etc/resolv.conf
options timeout:1 attempts:5

Die Datei /etc/resolv.conf wird automatisch generiert und darf nicht bearbeitet werden. Die entsprechenden Schritte zum Hinzufügen der Zeile „options“ variieren je nach Distribution:

Ubuntu (verwendet resolvconf)

  1. Fügen Sie die Optionszeile der Datei /etc/resolvconf/resolv.conf.d/head hinzu.
  2. Führen Sie sudo resolvconf -u zum Aktualisieren aus.

SUSE (verwendet netconf)

  1. Fügen Sie dem NETCONFIG_DNS_RESOLVER_OPTIONS=""-Parameter in /etc/sysconfig/network/config die Zeichenfolge timeout:1 attempts:5 hinzu.
  2. Führen Sie sudo netconfig update zum Aktualisieren aus.

CentOS von Rogue Wave Software (früher OpenLogic) (verwendet NetworkManager)

  1. RES_OPTIONS="timeout:1 attempts:5" wurde /etc/sysconfig/network hinzugefügt.
  2. Führen Sie systemctl restart NetworkManager zum Aktualisieren aus.

Namensauflösung mithilfe eines eigenen DNS-Servers

Ihre Namensauflösungsanforderungen gehen möglicherweise über die von Azure bereitgestellten Features hinaus. Dies ist beispielsweise der Fall, wenn Sie eine DNS-Auflösung zwischen virtuellen Netzwerken benötigen. Für dieses Szenario können Sie Ihre eigenen DNS-Server verwenden.

DNS-Server innerhalb eines virtuellen Netzwerks können DNS-Abfragen an die rekursiven Resolver von Azure weiterleiten, um Hostnamen im gleichen virtuellen Netzwerk aufzulösen. Beispielsweise kann ein in Azure ausgeführter DNS-Server auf DNS-Abfragen für die eigenen DNS-Zonendateien antworten und alle anderen Abfragen an Azure weiterleiten. Aufgrund dieser Funktionalität sind sowohl Ihre Einträge in Ihren Zonendateien als auch die von Azure bereitgestellten Hostnamen (über die Weiterleitung) für die virtuellen Computer sichtbar. Der Zugriff auf die rekursiven Resolver von Azure wird über die virtuelle IP 168.63.129.16 bereitgestellt.

Durch die DNS-Weiterleitung wird außerdem eine DNS-Auflösung zwischen virtuellen Netzwerken ermöglicht, und die lokalen Computer können die von Azure bereitgestellten Hostnamen auflösen. Um einen Hostnamen eines virtuellen Computers aufzulösen, muss sich die DNS-Server-VM im selben virtuellen Netzwerk befinden und zur Weiterleitung von Abfragen für Hostnamen an Azure konfiguriert sein. Da jedes virtuelle Netzwerk ein eigenes DNS-Suffix verwendet, können Sie mithilfe von Regeln für die bedingte Weiterleitung DNS-Abfragen zur Auflösung an das richtige virtuelle Netzwerk senden. In der folgenden Abbildung sind zwei virtuelle Netzwerke und ein lokales Netzwerk dargestellt, in dem eine DNS-Auflösung zwischen virtuellen Netzwerken mithilfe dieser Methode durchgeführt wird.

DNS-Auflösung zwischen virtuellen Netzwerken

Bei Verwendung der von Azure bereitgestellten Namensauflösung wird jedem virtuellen Computer über DHCP das interne DNS-Suffix bereitgestellt. Wenn Sie eine eigene Lösung für die Namensauflösung verwenden, wird dieses Suffix nicht für die virtuellen Computer bereitgestellt, weil es Konflikte mit anderen DNS-Architekturen verursacht. Um per FQDN auf Computer zu verweisen oder das Suffix auf Ihren virtuellen Computern zu konfigurieren, können Sie das Suffix mithilfe von PowerShell oder der API ermitteln:

  • Für von Azure Resource Manager verwaltete virtuelle Netzwerke ist das Suffix über die Ressource Netzwerkkarte verfügbar. Zudem können Sie den Befehl azure network public-ip show <resource group> <pip name> ausführen, um die Details der öffentlichen IP-Adresse, einschließlich des FQDN der Netzwerkkarte, anzuzeigen.

Wenn eine Abfrageweiterleitung an Azure nicht Ihren Anforderungen entspricht, müssen Sie eine eigene DNS-Lösung bereitstellen. Die DNS-Lösung muss Folgendes leisten:

  • Bereitstellung einer geeigneten Hostnamensauflösung, z.B. über DDNS. Bei Verwendung von DDNS müssen Sie möglicherweise die DNS-Eintragsbereinigung deaktivieren. Die DHCP-Leases von Azure sind sehr lange gültig, und die DNS-Einträge werden durch eine Bereinigung möglicherweise zu früh entfernt.
  • Bereitstellung einer geeigneten rekursiven Lösung, um eine Auflösung externer Domänennamen zu ermöglichen.
  • Möglichkeit zum Zugriff (TCP und UDP auf Port 53) von den Clients, die Dienste beziehen, und für den Internetzugriff.
  • Schutz vor einem Zugriff aus dem Internet, um mögliche Bedrohungen durch externe Agents zu minimieren.

Hinweis

Für eine optimale Leistung bei Verwendung von virtuellen Azure-Computern als DNS-Server sollte IPv6 deaktiviert und eine öffentliche IP auf Instanzebene jedem virtuellen DNS-Servercomputer zugewiesen werden.