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

Alles, was Sie über Ubuntu-DNS-Server wissen müssen

DNS oder Domain Name System ist einer der wichtigsten Bestandteile des Internets. Jeder, der das Internet nutzt, nutzt den DNS-Dienst täglich. Es wird jedoch im Vergleich zu anderen Internet-Rasereien auch massiv übersehen. Kurz gesagt, der DNS-Dienst wandelt URLs in IP-Adressen um. Wie Sie inzwischen wissen sollten, ist eine IP-Adresse eine eindeutige Nummer, die alles identifiziert, was mit einem Netzwerk verbunden ist. Wenn Sie eine Karriere in der Linux-Administration anstreben, müssen Sie ein starkes Verständnis dafür haben, wie DNS funktioniert. Dieser Leitfaden gibt einen funktionierenden Überblick über grundlegende DNS-Konzepte und praktische Beispiele für einen Ubuntu-DNS-Server.

Tauchen Sie tief in das Domain Name System (DNS) ein

Da DNS aus mehreren Diensten und komplizierten Interaktionen zwischen ihnen besteht, müssen sich Benutzer mit den Kernterminologien vertraut machen, um zu verstehen, was hinter den Kulissen passiert. Aus diesem Grund haben wir den gesamten Leitfaden in mehrere Abschnitte unterteilt. Die erste bietet eine kurze Einführung in Begriffe und Konzepte, während andere sich mit Arbeitsabläufen und Konfigurationen befassen.

Übersicht über die Kern-DNS-Begriffe und -Konzepte

Bei der Arbeit mit DNS werden Sie mit verschiedenen Begriffen und Terminologien wie Hosts, Zonen, TLDs und Resolvern konfrontiert. Der folgende Abschnitt bietet eine kurze Einführung in einige dieser Konzepte.

DNS

DNS oder Domain Name System ist der Mechanismus, der einen Fully Qualified Domain Name (FQDN) interpretiert an eine bestimmte IP-Adresse. Dies ist die Adresse, die unsere Systeme zum Senden und Abrufen von Webressourcen verwenden. DNS besteht aus mehreren Systemen und führt eine multidirektionale Kommunikation durch, um die mit einer URL verknüpfte IP-Adresse abzurufen.

Domänenname

Domänennamen sind für Menschen lesbare Adressen, die Webressourcen zugeordnet sind. Sie beseitigen die Zweideutigkeit, sich an eine große Anzahl von IP-Adressen zu erinnern. Beispielsweise ist google.com der Domänenname für die Google-Suchmaschine. Wenn Sie dies in die Adressleiste Ihres Browsers eingeben, verwendet dieser das DNS-System, um die tatsächliche IP-Adresse zu finden.

IP-Adresse

Eine IP-Adresse ist eine eindeutige Nummer, die allen Geräten zugewiesen wird, die an einem bestimmten Punkt mit dem Internet verbunden sind. IP-Adressen haben mehrere Klassen und zwei Hauptversionen. Die meisten Leute verwenden ab sofort die IP-Version 4. IPv4-Adressen bestehen aus vier Oktetts, die jeweils durch einen Punkt „.“ getrennt sind. Symbol.

TLD

TLD s oder Top Level Domains befindet sich auf der höchsten Ebene in der Hierarchie der Domainnamen. Dies sind die allgemeinsten Teile eines Domainnamens und befinden sich ganz rechts. Beispiel:„com ”-Teil ist die TLD der URL www.example.com . Einige beliebte Top-Level-Domains sind „com“, „org“, „gov“, „net“ und „edu“.

Hosts

Eigentümer einer Domain können mehrere verschiedene Hosts innerhalb dieser Domain definieren. Diese können verwendet werden, um auf separate Dienste oder Computer zuzugreifen. Auf die meisten Webserver kann über die bloße Domain wie example.com oder über die Host-Deklaration wie www.example.com zugegriffen werden. Der „www“-Teil ist hier der Host. Eine weitere häufige Verwendung eines Hosts ist die Bereitstellung von API-Zugriffen wie api.example.com.

Sub-Domain

- -

Subdomains sind einfach eine Teilmenge einer Domain. Dadurch können Websitebesitzer mehrere Subdomains unter einer übergeordneten Domain haben. Beispielsweise kann eine Domain namens university.edu mehrere Subdomains für jede ihrer Abteilungen haben, wie z. B. www.cs.university.edu oder www.phy.university.edu. Der Unterschied zwischen Hosts und Subdomains besteht darin, dass Erstere verschiedene Computer oder Dienste spezifiziert, während Letztere die übergeordnete Domain in verschiedene Gruppen unterteilt.

Vollqualifizierter Domänenname

Ein vollständig qualifizierter Domänenname oder FQDN ist die absolute Domain einer Website. Es stellt die Wurzel der betreffenden Domäne dar. Eine Domain enthält normalerweise mehrere Unterrouten oder Pfade wie www.example.com/new/example. Hier ist der Abschnitt www.example.com der FQDN. Außerdem endet der FQDN immer mit einem Punkt „.“ Symbol wie "www.example.com.". Benutzer müssen diesen abschließenden Punkt jedoch nicht eingeben, da sich das Client-Programm darum kümmert.

Nameserver

In DNS ist ein Nameserver ein Computersystem, das mit der Übersetzung von Domänennamen in adressierbare IPs beauftragt wurde. Sie erledigen den größten Teil der eigentlichen Arbeit innerhalb einer Ubuntu-DNS-Infrastruktur. Da Nameserver Tausende von Anfragen pro Sekunde bewältigen müssen, leiten sie zusätzliche Anfragen häufig an neue Server weiter. Darüber hinaus können Nameserver auch als autoritative Server fungieren. In diesem Szenario beantworten sie Abfragen, die unter ihrer Kontrolle stehen, und liefern ansonsten zwischengespeicherte Antworten von anderen Servern.

Zonendateien

Zonendateien sind eigentliche Textdateien, die die Beziehungen zwischen Domänennamen und zugehörigen IP-Adressen speichern. Ein DNS-System ruft die IP-Informationen eines FQDN aus diesem Dokument ab. Sie werden auf dem Nameserver gespeichert und geben an, welche Ressourcen für eine bestimmte Domain zugänglich sind. Wenn die Informationen für die Zonendatei nicht verfügbar sind, verweisen sie auf den Speicherort, der diese Daten enthält.

Root-Server

Wie bereits erwähnt, ist DNS ein hierarchisches System, das aus mehrstufigen Komponenten besteht. Der Root-Server befindet sich an der Spitze dieser Hierarchie. Dies sind extrem leistungsstarke Server, die von mehreren Organisationen verwaltet und von der ICANN (Internet Corporation for Assigned Names and Numbers) kontrolliert werden . Derzeit gibt es weltweit 13 primäre Root-Server, und jeder von ihnen wird zur Erhöhung der Verfügbarkeit gespiegelt.

Wenn jemand nach einem Root-Server fragt, wird die Anfrage an den nächstgelegenen Mirror weitergeleitet. Root-Server verarbeiten Abfragen bezüglich Top-Level-Domains. Wann immer es etwas gibt, das ein untergeordneter Nameserver nicht lösen kann, wird der Rootserver mit dieser Frage konfrontiert. Root-Server haben jedoch keine IP-Informationen. Sie verweisen stattdessen auf die Nameserver, die diese spezifische TLD verwalten.

TLD-Server

TLD-Server befinden sich in der DNS-Hierarchie unterhalb von Root-Servern. Root-Server leiten DNS-Anforderungseinheiten an den TLD-Server dieser Anforderung weiter. Der TLD-Server leitet dann die anfragende Entität an den Nameserver weiter, der die spezifischen IP-Informationen für die betreffende Domain hat.

Nameserver auf Domänenebene

TLD-Server leiten die anfragende Entität an den Domain-Level-Nameserver weiter. Dies ist der Server, dessen Zonendatei die IP-Zuordnungen für die Domäne enthält. Das ist also der Nameserver, der die spezifische IP-Adressierung für den angeforderten Domainnamen hat.

Resolver

Ein Resolver ist die Anforderungseinheit, die für das Abrufen der IP-Informationen einer Domäne aus dem DNS verantwortlich ist. Normalerweise wird es im Clientsystem wie im Browser oder über eine benutzerdefinierte Ubuntu-DNS-Einstellung konfiguriert. Die meisten Leute verwenden den von ihren ISPs bereitgestellten DNS-Resolver. Ein Resolver ist im Grunde eine Abstraktion, die es dem Endbenutzer ermöglicht, nicht zu wissen, was unter der Haube passiert. Es kann rekursiv arbeiten, bis es die IP-Adresse einer bestimmten Domain abruft.

Aufzeichnungen

Wir haben bereits besprochen, dass der Nameserver Domain-zu-IP-Mappings in der Zonendatei speichert. Die Informationen in den Zonendateien werden als Datensätze gespeichert. Es gibt viele Arten von Datensätzen in einer Zonendatei. Wir berühren hier einige der wichtigsten.

SOA-Einträge

SOA steht für Start of Authority und ist ein obligatorischer Datensatz für alle Zonendateien. Der erste tatsächliche Datensatz in einer Zonendatei muss vom Typ SOA sein. Es kann einige Zeit dauern, bis Sie SOA-Aufzeichnungen vollständig verstehen. Denken Sie bis dahin an die folgenden Imbissbuden. Zunächst einmal sieht ein SOA-Record ähnlich aus wie im folgenden Snippet.

example.com. IN SOA ns1.example.com. admin.example.com. (
12083        ; serial number 
3h           ; refresh interval 
30m          ; retry interval 
3w           ; expiry period 
1h           ; negative TTL )

Die wesentlichen Teile sind die folgenden.

  • beispiel.com – Dies ist der Stamm der Zone und gibt an, dass die Datei für „example.com“ bestimmt ist. Domäne.
  • IN SOA – Das „IN“ steht für das Internet und SOA steht dafür, dass es sich um einen SOA-Record handelt.
  • ns1.example.com. – Es ist der primäre Nameserver für „example.com“. Domain. Wenn Sie außerdem ein dynamisches Ubuntu-DNS konfiguriert haben, dann kommt Ihr primärer Nameserver hierher.
  • admin.example.com. – Es ist die E-Mail-Adresse des Administrators, der für diese bestimmte Zone verantwortlich ist. Das „@“-Symbol wird durch einen Punkt „.“ ersetzt. Symbol für die E-Mail-Adresse.
  • 12083 – Dies ist die Seriennummer für diese Zone, und Sie müssen diese Seriennummer jedes Mal erhöhen, wenn Sie die Zonendatei aktualisieren. So stellen sekundäre Server fest, dass in dieser Zone eine Änderung stattgefunden hat.
  • 3 Stunden – Das Aktualisierungsintervall für die Zone gibt an, wie lange sekundäre Server warten sollen, bevor sie nach Änderungen in der Zonendatei des primären Servers suchen.
  • 30m – Das Wiederholungsintervall einer Zone gibt an, wie lange sekundäre Server warten sollen, bevor sie erneut versuchen, den primären Server abzufragen.
  • 3w – Es ist die Ablaufzeit und definiert, wie lange sekundäre Server versuchen sollen, eine erfolgreiche Kommunikation aufzubauen. Wenn innerhalb dieses Zeitraums keine Verbindung hergestellt werden kann, reagieren die sekundären Server nicht mehr als autorisierend für diese Zone.
  • 1 Stunde – Wenn der Nameserver den angeforderten Namen in dieser Zonendatei nicht finden kann, wird er für diese Zeit einen Namensfehler zwischenspeichern.

A- und AAAA-Aufzeichnungen

Der A- und der AAAA-Eintrag ordnen einen Host einer tatsächlichen IP-Adresse zu. Der „A“-Eintrag ordnet einen Host einer funktionierenden IPv4-Adresse zu, und der „AAAA“-Eintrag ordnet Hosts IPv6-Adressen zu. Nachfolgend finden Sie das allgemeine Format für diese Datensatztypen.

hostname   IN  A     IPv4Address
hostname   IN  AAAA  IPv6Address

Unten ist ein geeignetes Beispiel, das den im SOA-Eintrag definierten ns1-Nameserver verwendet.

ns1.example.com.  IN  A  111.112.221.222

Der nächste „A“-Eintrag definiert den Webserver als „www“.

www  IN  A  111.112.211.212

CNAME-Einträge

CNAME-Einträge stellen einen Alias ​​für den Nameserver dar, der durch einen A- oder AAAA-Eintrag definiert ist. Das folgende Snippet deklariert beispielsweise einen Host namens „server“ mit einem A-Eintrag und erstellt dann einen „www“-Alias ​​für diesen Host.

server IN  A      111.111.111.111
www    IN  CNAME  server

Das Erstellen von Aliassen kann jedoch zu Leistungseinbußen führen, da sie eine zusätzliche Abfrage an den Server erfordern. CNAME-Einträge werden normalerweise verwendet, um einer externen Ressource einen kanonischen Namen zu geben.

MX-Einträge

MX-Einträge werden verwendet, um den Mail-Austausch für einen Domänennamen anzugeben und dabei zu helfen, E-Mail-Kommunikationen zu empfangen, die auf Ihrem Linux-Mail-Server ankommen. Im Gegensatz zu den meisten Datensatztypen ordnen sie Hosts keinen IPs zu, da sie für die gesamte Zone gelten. Unten sehen Sie ein einfaches Beispiel für einen MX-Eintrag.

IN  MX  10  mail.example.com.

Beachten Sie, dass in diesem Datensatz kein Host definiert ist und er auch eine neue Nummer „10“ hat. Dies wird verwendet, um eine Präferenz anzuzeigen. Wenn mehrere MX-Einträge vorhanden sind, werden E-Mails an den Server mit der niedrigsten Präferenznummer weitergeleitet.

NS-Aufzeichnungen

NS-Einträge geben die Nameserver an, die für eine Zone verwendet werden. Obwohl es irrelevant erscheinen mag, da die Zonendatei bereits auf dem Nameserver vorhanden ist, wird sie aus bestimmten Gründen verwendet. Wie so oft kann die von einem DNS-Server bereitgestellte Zonendatei tatsächlich eine zwischengespeicherte Kopie eines anderen Servers sein.

IN  NS  ns1.example.com.
IN  NS  ns2.example.com.

Wie MX-Einträge werden auch NS-Einträge für eine ganze Zone definiert und erfordern keine Hostnamen. Darüber hinaus dienen viele Ubuntu-DNS dazu, Zonendateien als ungültig zu betrachten, wenn sie nicht mehrere ns-Einträge enthalten. Daher definieren die meisten Zonendateien mehr als einen Nameserver.

PTR-Einträge

PTR-Datensätze geben einen Namen an, der einer funktionierenden IP-Adresse zugeordnet ist, und sind einfach eine Umkehrung des A- oder AAAA-Datensatzes. Sie müssen an der .arpa-Root beginnen und werden an den Besitzer der IP vergeben. Die Delegierung von IPs an Organisationen und Dienstanbieter wird von den Regional Internet Registries (RIRs) abgewickelt .

222.111.222.111.in-addr.arpa.  33692  IN  PTR  host.example.com.

Das obige Snippet ist ein einfaches Beispiel für einen PTR-Eintrag. Es ordnet die IP 222.111.222.111 „host.example.com.“ zu.

CAA-Aufzeichnungen

CAA-Einträge definieren, welche Zertifizierungsstellen (CA) dürfen SSL/TLS-Zertifikate für einen bestimmten Domainnamen ausstellen. Wenn für eine Domäne kein CAA-Eintrag definiert ist, kann jede CA ein Zertifikat ausstellen. Wenn jedoch eine Zertifizierungsstelle explizit definiert wird, kann nur diese bestimmte Stelle das Zertifikat ausstellen.

example.com.  IN  CAA  0  issue  "letsencrypt.org"

Ein CAA-Eintrag sieht wie das obige Snippet aus. Die Felder host, IN und CAA sind DNS-spezifisch, während Flags (0), Tags (issue) und Werte („letsencrypt.org“) CAA-spezifisch sind. Die CA ignoriert den Eintrag, wenn das Flag auf „0“ gesetzt ist, aber sie darf kein Zertifikat ausstellen, wenn es auf „1“ gesetzt ist.

Wie DNS tatsächlich funktioniert?

Nachdem wir nun alle wichtigen Begriffe und zugehörigen Konzepte kennengelernt haben, können wir herausfinden, wie eine tatsächliche DNS-Anfrage funktioniert. Wir bieten eine einfache reale Veranschaulichung und analysieren den Pfad der Abfrage sorgfältig.

Angenommen, wir versuchen, eine Verbindung von meinem Ubuntu-betriebenen Laptop zur Website „www.example.com. herzustellen “. Ich öffne einen Internetbrowser, tippe die URL in die Adressleiste ein und drücke die Eingabetaste. Zunächst prüft der Client bzw. in diesem Fall mein Browser, ob die IP von „www.example.com.“ existiert bereits in seinem Cache. Wenn es das findet, werden alle späteren Schritte übersprungen.

Wenn der Client die IP im Browser-Cache nicht findet, leitet er die Anfrage an den Resolver oder in meinem Fall an den Nameserver des ISP weiter. Der Resolver versucht zu sehen, ob andere Benutzer kürzlich auf dieser Website waren, und findet dann die IP aus seinem Cache. Andernfalls leitet der Resolver die Anfrage an einen der Root-Nameserver weiter.

Der Root-Server gibt die Adresse des TLD-Nameservers für diese Domain zurück, bei der es sich um „.com handelt ” Nameserver in diesem Beispiel. Jetzt sendet der Resolver eine Anfrage an den TLD-Server, um zu sehen, ob er das erwartete Ergebnis hat. Der TLD-Server hat die Informationen aber auch nicht, weiß aber, welcher Nameserver sie hat. Es gibt die Adresse dieses Nameservers zurück, der die Domain zu IP-Zuordnungen für unsere URL hat.

Sobald der Resolver den Nameserver nach unserer Domain fragt, gibt er die entsprechende IP zurück. Der Resolver sendet dann einfach die eigentliche IP-Adresse an das Client-Programm, das nun die notwendige Kommunikation aufbauen kann.

Wie Sie sehen können, besteht der Pfad einer gesamten Ubuntu-DNS-Anfrage aus vielen rekursiven sowie iterativen Abfragen. Darüber hinaus werden diesem Mechanismus mehrere Cache-Ebenen hinzugefügt, um die Dinge einfacher und schneller zu machen. Aus diesem Grund muss Ihr Browser die meiste Zeit nicht auf eine vollständige DNS-Abfrage warten. Wenn Sie beispielsweise eine beliebte Website wie YouTube besuchen, ist die Wahrscheinlichkeit groß, dass der Cache Ihres ISP bereits die IP dieser Domain enthält.

Darüber hinaus können Ubuntu-DNS-Konfigurationen je nach Anwendung und Rolle des Servers stark variieren. Wenn er als Caching-Nameserver konfiguriert ist, findet der DNS-Server die Antwort auf die Client-Anfragen und merkt sich die Antwort für zukünftige Anfragen. Wenn Sie Ihr DNS stattdessen als primären Server festlegen, liest es die Daten für eine Zone aus der Zonendatei und ist nur für diese Zone autorisierend. Wenn er als sekundärer Server konfiguriert ist, ruft er die Daten aus der Zonendatei eines anderen Nameservers ab.

Installieren und Konfigurieren eines Ubuntu-DNS-Servers

Nachdem wir nun die Funktionsweise von DNS und die meisten Schlüsselkonzepte besprochen haben, können wir damit beginnen, unseren eigenen DNS-Server zu erstellen. Für diesen Teil des Tutorials verwenden wir BIND (Berkley Internet Naming Daemon) Programm, das die beliebteste DNS-Implementierung ist und auch unter hoher Last eine äußerst solide Leistung bietet.

Verwenden Sie den folgenden einfachen Befehl, um BIND auf Ihrem Ubuntu-Computer zu installieren. Wir empfehlen Benutzern außerdem, dnsutils herunterzuladen , ein robustes Paket zum Testen und Beheben von Problemen mit Ihrem DNS-Server.

$ sudo apt install bind9
$ sudo apt install dnsutils

Die Konfigurationsdateien für BIND befinden sich im Verzeichnis /etc/bind Verzeichnis Ihres Linux-Dateisystems. Die wichtigsten Konfigurationsdaten werden in der /etc/bind/named.conf gespeichert Datei. Die /etc/bind/named.conf.options Datei wird zum Setzen globaler Optionen verwendet, die /etc/bind/named.conf.local zum Konfigurieren der Zonen und die /etc/bind/named.conf.default-zones Datei zur Verwaltung der Standardzonen.

Früher verwendete Ubuntu die /etc/bind/db.root Datei zur Beschreibung der Root-Nameserver. Jetzt verwendet es die Datei /usr/share/dns/root.hints stattdessen. Diese Datei wird somit innerhalb der /etc/bind/named.conf.default-zones referenziert Datei.

Darüber hinaus ist es durchaus möglich, denselben Ubuntu-DNS-Server als primären, sekundären und Caching-Server zu konfigurieren. Die Rollen ändern sich basierend auf den Zonen, die der Server bedient. Beispielsweise können Sie Ihren Server als Start of Authority (SOA) konfigurieren für eine Zone, während sie gleichzeitig sekundäre Dienste für eine andere Zone anbieten. In der Zwischenzeit kann es Caching-Dienste für Hosts anbieten, die sich in Ihrem lokalen LAN befinden.

Primärer Server

In diesem Abschnitt zeigen wir, wie Sie Ubuntu-DNS-Konfigurationen für einen primären Nameserver erstellen. Dieser Server verarbeitet Abfragen für den FQDN „example.com “. Ersetzen Sie diesen Domainnamen einfach durch Ihre eigene URL, um dieselben Konfigurationen zu implementieren.

Zuerst müssen wir die Forward-Zonendatei konfigurieren. Öffnen Sie die /etc/bind/named.conf.local Datei mit Ihrem bevorzugten Linux-Texteditor und fügen Sie die folgenden Snippets hinzu.

$ sudo nano /etc/bind/named.conf.local
zone "example.com" {
type master;
file "/etc/bind/db.example.com";
};

Sie können Ihren BIND-DNS-Server so konfigurieren, dass er automatisch aktualisiert wird, wenn Sie die Konfigurationsdateien ändern. Verwenden Sie dazu die Datei /var/lib/bind/db.example.com sowohl im obigen Ausschnitt als auch im folgenden Befehl.

$ sudo cp /etc/bind/db.local /etc/bind/db.example.com

Der obige Befehl kopiert eine bereits vorhandene Zonendatei, die wir als Vorlage für unsere nächsten Schritte verwenden werden. Jetzt bearbeiten wir unsere Zonendatei (/etc/bind/db.example.com ) und nehmen Sie einige erforderliche Änderungen vor.

$ sudo nano /etc/bind/db.example.com

Zunächst ersetzen wir „localhost“. an den FQDN unseres Servers, der „example.com.“ lautet. Vergessen Sie nicht, das nachgestellte "." im FQDN. Ändern Sie nun „127.0.0.1“ in die tatsächliche IP Ihres Nameservers und „root.localhost“. an eine aktive E-Mail-Adresse. Denken Sie daran, ein „.“ zu verwenden. anstelle des „@“-Zeichens in Ihrer E-Mail-Adresse. Wir empfehlen außerdem, einen Kommentar hinzuzufügen, der den FQDN für diese Zonendatei dokumentiert. Unsere Datei sieht jetzt wie folgt aus.

;
; BIND data file for example.com
;
$TTL 604800
@  IN SOA example.com. root.example.com. (
2         ; Serial
604800    ; Refresh
86400     ; Retry
2419200   ; Expire
604800 )  ; Negative Cache TTL

------------------------------------------------------------------
------------------------------------------------------------------

Wir haben bisher nur den SOA-Record geändert. Es ist an der Zeit, Änderungen am NS-Eintrag sowie an den A-Einträgen unserer Zonendatei vorzunehmen. Ändern Sie den „localhost“. Teil des NS-Eintrags, der Ihrem Nameserver entspricht, also „ns.example.com“. für unseren Demo-FQDN. Ersetzen Sie den Teil „127.0.0.1“ des ersten A-Eintrags durch die IP Ihres Nameservers. Wir haben „192.168.1.10“ verwendet. Erstellen Sie abschließend einen A-Record für unseren Nameserver „ns.example.com“, indem Sie die letzte Zeile im folgenden Snippet hinzufügen.

;
; BIND data file for example.com
;
$TTL       604800
@          IN    SOA   example.com. root.example.com. (
                       3           ; Serial
                       604800      ; Refresh
                       86400       ; Retry
                       2419200     ; Expire
                       604800 )    ; Negative Cache TTL

@         IN    NS     ns.example.com.
@         IN    A      192.168.1.10
@         IN    AAAA   ::1
ns        IN    A      192.168.1.10

So sieht die endgültige Konfiguration für die Weiterleitungszone unseres primären Servers aus.

Denken Sie daran, die Seriennummer zu erhöhen, sonst bemerkt BIND die Änderungen an seinen Konfigurationen nicht. Wenn Sie mehrere Chancen hinzufügen, müssen Sie die Seriennummer nicht jedes Mal ändern. Wenn Sie zusätzliche Ubuntu-DNS-Einträge hinzufügen möchten, fügen Sie sie einfach unter den obigen Optionen hinzu. Sobald alles konfiguriert ist, starten Sie BIND mit dem folgenden Befehl neu.

$ sudo systemctl restart bind9.service

Nachdem unsere Forward-Zonendatei nun richtig konfiguriert ist, ändern wir die Reverse-Zonendatei. Dadurch kann der Ubuntu-DNS-Server eine IP in einen FQDN auflösen. Bearbeiten Sie einfach die /etc/bind/named.conf.local Datei und fügen Sie die folgenden Snippets hinzu.

$ sudo nano /etc/bind/named.conf.local
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192";
};

Sie müssen „1.168.192“ durch die ersten drei Oktette Ihres eigenen Netzwerks ersetzen. Außerdem sollte die Zonendatei entsprechend benannt werden. Ersetzen Sie die „192“ Teil der Zonendatei „/etc/bind/db.192“ um mit dem ersten Oktett Ihres Netzwerks übereinzustimmen. Wenn Sie sich beispielsweise im Netzwerk 10.1.1.1/24; befinden Ihre Zonendatei ist „/etc/bind/db.10 “ und den Eintrag „1.168.192.in-addr.arpa “ wird „10.1.1.in-addr.arpa sein “.

$ sudo cp /etc/bind/db.127 /etc/bind/db.192

Wir haben die Datei /etc/bind/db.192 erstellt Datei, indem Sie eine vorhandene Vorlagendatei kopieren. Lassen Sie uns nun diese Datei bearbeiten und dieselben Änderungen vornehmen, die an /etc/bind/db.example.com vorgenommen wurden Datei.

$ sudo nano /etc/bind/db.192
;
; BIND reverse data file for local 192.168.1.XXX net
;
$TTL    604800
@       IN   SOA  ns.example.com. root.example.com. (
                  2               ; Serial
                  604800          ; Refresh
                  86400           ; Retry
                  2419200         ; Expire
                  604800 )        ; Negative Cache TTL
;
@      IN   NS    ns.
10     IN   PTR   ns.example.com.

Denken Sie daran, die Seriennummer bei jeder nachfolgenden Änderung der Reverse-Zonendatei zu erhöhen. Außerdem für jeden in /etc/bind/db.example.com konfigurierten A-Eintrag , müssen Sie immer einen PTR-Eintrag in der Datei /etc/bind/db.192 hinzufügen .

Sobald dies alles erledigt ist, starten Sie einfach den BIND-Dienst neu.

$ sudo systemctl restart bind9.service

Sekundärserver

Wie wir bereits gesagt haben, ist das Erstellen von sekundären Servern aus mehreren Gründen eine hervorragende Idee, von denen einer die erhöhte Verfügbarkeit ist. Dies macht Ihre Ubuntu-DNS-Server widerstandsfähiger und hilft dabei, mehr Clients zu bedienen. Sehen Sie sich also den folgenden Abschnitt an, wenn Sie einen sekundären Nameserver erstellen möchten.

Zunächst müssen Sie die Zonenübertragung auf Ihrem primären Server zulassen. Bearbeiten Sie einfach die Forward- und Reverse-Zonenkonfigurationen und fügen Sie die Datei „allow-transfer ” Option zu den Zonen.

$ sudo nano /etc/bind/named.conf.local
zone "example.com" {
type master;
file "/etc/bind/db.example.com";
allow-transfer { 192.168.1.11; };
};

zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192";
allow-transfer { 192.168.1.11; };
};

Ersetzen Sie jetzt einfach „192.168.1.11 ” durch die IP-Adresse Ihres sekundären Servers.

Starten Sie dann BIND auf Ihrem primären Server neu, indem Sie den folgenden Befehl ausführen.

$ sudo systemctl restart bind9.service

Jetzt müssen Sie BIND auf dem sekundären Server installieren. Fahren Sie dann mit der Bearbeitung von /etc/bind/named.conf.local fort Datei und fügen Sie Folgendes für die Vorwärts- und Rückwärtszone hinzu.

zone "example.com" {
type slave;
file "db.example.com";
masters { 192.168.1.10; };
}; 

zone "1.168.192.in-addr.arpa" {
type slave;
file "db.192";
masters { 192.168.1.10; };
};

Ersetzen Sie einfach „192.168.1.10 “ mit der IP Ihres primären Nameservers. Starten Sie BIND noch einmal neu und Sie können loslegen.

$ sudo systemctl restart bind9.service

Beachten Sie, dass eine Ubuntu-DNS-Zone nur übertragbar ist, wenn die Seriennummer auf dem primären Server größer ist als die auf dem sekundären Server. Sie können dies jedoch umgehen, indem Sie die Option „also-notify { ipaddress; }; ” in die /etc/bind/named.conf.local Datei auf Ihrem primären Server. Danach sollte die Datei wie folgt aussehen.

$ sudo nano /etc/bind/named.conf.local
zone "example.com" {
type master;
file "/etc/bind/db.example.com";
allow-transfer { 192.168.1.11; };
also-notify { 192.168.1.11; }; 
};

zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192";
allow-transfer { 192.168.1.11; };
also-notify { 192.168.1.11; }; 
};

Caching-Server

Sie müssen nicht viel tun, um einen Caching-Nameserver zu erstellen, da die Standardkonfigurationen bereits als Caching-Server fungieren. Bearbeiten Sie einfach die /etc/bind/named.conf.options file und kommentieren Sie den Abschnitt forwarders aus. Geben Sie die IP des DNS-Servers Ihres ISP ein, wie unten gezeigt.

$ sudo nano /etc/bind/named.conf.options
forwarders {
1.2.3.4;
5.6.7.8;
};

Vergessen Sie nicht, die IPs entsprechend durch tatsächliche Nameserver zu ersetzen.

Öffnen Sie nun Ihren bevorzugten Linux-Terminalemulator und geben Sie den folgenden Befehl zum Neustarten von BIND ein.

$ sudo systemctl restart bind9.service

Testen und Fehlerbehebung von Ubuntu-DNS-Konfigurationen

Sobald Sie mit der Einrichtung Ihrer DNS-Nameserver fertig sind, möchten Sie überprüfen, ob sie wie vorgesehen funktionieren oder nicht. Der erste Schritt dazu besteht darin, die IP des Nameservers zum Resolver einer Hostmaschine hinzuzufügen. Der einfachste Weg, dies zu tun, besteht darin, die Datei /etc/resolv.conf zu bearbeiten und sicherzustellen, dass die Nameserver-Zeile auf 127.0.0.53 zeigt . Fügen Sie dann einen Suchparameter für Ihren FQDN hinzu, wie unten dargestellt.

$ sudo nano /etc/resolv.conf
nameserver 127.0.0.53
search example.com

Sie können den DNS-Server, der vom Resolver Ihres lokalen Computers verwendet wird, ganz einfach mit dem folgenden Befehl herausfinden.

$ systemd-resolve --status

Beachten Sie, dass Sie möglicherweise auch die IP des sekundären Servers zu Ihrer Client-Konfiguration hinzufügen möchten. Dies sorgt für eine bessere Verfügbarkeit und nutzt den gerade erstellten sekundären Nameserver.

Eine weitere nützliche Möglichkeit, DNS-Konfigurationen zu überprüfen, ist die Verwendung des Linx-Befehls dig. Verwenden Sie einfach dig gegen die Loopback-Schnittstelle und sehen Sie, ob sie auf Port 53 lauscht oder nicht.

$ dig -x 127.0.0.1

Der folgende Befehl verwendet den Linux-Befehl grep, um die relevanten Informationen herauszufiltern.

$ dig -x 127.0.0.1 | grep -i "53"

Wenn Sie BIND als Caching-Server konfiguriert haben, verwenden Sie dig, um eine externe Domain zu überprüfen, und notieren Sie sich die Abfragezeit.

$ dig ubuntu.com

Führen Sie den Befehl erneut aus und überprüfen Sie, ob die Abfragezeit verkürzt wurde oder nicht. Es sollte sich deutlich reduzieren, wenn das Caching erfolgreich ist.

Sie können auch den Linux-Ping-Befehl verwenden, um zu sehen, wie Clients Ubuntu-DNS verwenden, um Hostnamen in IPs aufzulösen.

$ ping example.com

Abschlussgedanken

Ein solides Verständnis des DNS-Systems ist entscheidend, wenn Sie einen hochbezahlten CS-Job als System- oder Netzwerkadministrator an Land ziehen möchten. Der Zweck dieses Leitfadens ist es, Anfängern dabei zu helfen, die Prinzipien hinter DNS so schnell wie möglich zu beherrschen. Darüber hinaus haben unsere Redakteure auch eine funktionierende Illustration verschiedener Ubuntu-DNS-Konfigurationen bereitgestellt, um Ihren Lernprozess zu unterstützen. Am Ende dieses Lernprogramms sollten Sie sich solide Kenntnisse der Kernkonzepte von DNS sowie praktische Erfahrung aneignen. Hoffentlich konnten wir Ihnen die wesentlichen Erkenntnisse vermitteln. Vergessen Sie nicht, uns einen Kommentar zu hinterlassen, wenn Sie weitere Fragen oder Vorschläge haben.


Linux
  1. Alles, was Sie über Zorin OS 12 wissen wollten

  2. Alles, was Sie über Ubuntu 13.04 wissen müssen

  3. Alles, was Sie über CentOS Stream wissen müssen

  4. Ubuntu vs. Lubuntu:Alles, was Sie wissen müssen

  5. Was ist ein VPN? Alles, was Sie über VPNs wissen müssen

Alles, was Sie über Peppermint Linux OS wissen müssen

Alles, was Sie über Black Lab Linux wissen müssen

Alles, was Sie über die Linux Mint-Distribution wissen müssen

Alles, was Sie über Inodes in Linux wissen müssen

Alles Wichtige, was Sie über Hard Link in Linux wissen müssen

Alles Wichtige, was Sie über UID in Linux wissen müssen