Die Seite, die nur bei einer Person lief
Eine DNS-Abfrage macht aus einem Namen eine Adresse. Ein Rechner sieht zuerst in seiner eigenen Hosts-Datei nach und fragt erst dann einen DNS-Server. Wer diese Reihenfolge kennt, repariert einen Namen, der nur auf einem Laptop geht.
Ein Techniker im Support bekommt einen Anruf. Die Webseite des Ladens öffnet sich auf einem Laptop und auf einem anderen nicht. Beide hängen im selben Netz.
Die Ursache ist eine alte Zeile in einer kleinen Datei auf dem zweiten Laptop. Sie antwortet auf den Namen, bevor jemand das Netz fragt.
Am Ende dieser Lektion
Notiz
Ich kann einen Namen mit dig nachschlagen und sagen, welcher Record geantwortet hat.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Resolver | der Teil eines Rechners, der Namen nachschlägt | |
| Hosts-Datei | eine kurze Liste von Namen und Adressen auf dem Rechner selbst | /etc/hosts |
| CNAME | ein Record, der sagt: Dieser Name ist ein anderer Name | |
| TTL | die Sekunden, die eine Antwort behalten werden darf | 300 |
| NXDOMAIN | die Antwort, dass dieser Name nicht existiert | |
| Zone | die Namen, für die ein DNS-Server zuständig ist | laden.test |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein Rechner sucht an zwei Stellen
Bevor ein Rechner das Netz fragt, liest er seine Hosts-Datei. Steht der Name dort, gewinnt diese Antwort. Erst danach fragt der Resolver einen DNS-Server.
Die Reihenfolge steht in der Datei /etc/nsswitch.conf. Das Wort files meint die Hosts-Datei, und dns meint den Server.
Die Reihenfolge des Rechners lesen
grep '^hosts' /etc/nsswitch.confHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Einen Namen wie ein Programm nachschlagen
getent hosts localhostHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein DNS-Server antwortet mit Records
Ein DNS-Server führt eine Zone, die Namen, für die er zuständig ist. Jeder Name hat Records, und jede Antwort trägt eine TTL: Ein Resolver darf sie so lange behalten.
Hier starten Sie einen kleinen eigenen Server für einen erfundenen Laden. Er lauscht auf Port 5300, nur auf diesem Rechner, und führt eine Zone, laden.test.
Einen Übungsserver für den Laden starten
sudo dnsmasq --conf-file= --no-hosts --no-resolv --port=5300 --listen-address=127.0.0.1 --bind-interfaces --local-ttl=300 --local=/laden.test/ --host-record=laden.test,10.20.30.40 --host-record=post.laden.test,10.20.30.50 --cname=www.laden.test,laden.test --mx-host=laden.test,post.laden.test,10 --txt-record=laden.test,v=demoHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein Beispiel: mit dig fragen
| Sie tippen | Es fragt | Es gibt aus |
|---|---|---|
| dig +short @127.0.0.1 -p 5300 laden.test | Den A-Record | 10.20.30.40 |
| dig +noall +answer ... www.laden.test | Den Namen mit seinen Records | Eine CNAME-Zeile, dann die A-Zeile |
| dig +short ... laden.test MX | Wer die Post annimmt | 10 post.laden.test. |
| dig +short ... -x 10.20.30.40 | Welchen Namen die Adresse hat | laden.test. |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Die Adresse des Ladens erfragen
dig +short @127.0.0.1 -p 5300 laden.testHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Der Kette vom Namen www folgen
dig +noall +answer @127.0.0.1 -p 5300 www.laden.testHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Fragen, wer die Post annimmt
dig +short @127.0.0.1 -p 5300 laden.test MXHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Fragen, welchen Namen eine Adresse hat
dig +short @127.0.0.1 -p 5300 -x 10.20.30.40Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Der Status sagt, was schiefging
Jede Antwort hat einen Status. NOERROR heißt, der Server hat geantwortet. NXDOMAIN heißt, der Name steht in keiner Zone, die der Server führt.
REFUSED heißt, der Server antwortet für diesen Namen gar nicht. Ihr Übungsserver führt nur laden.test und hat sonst niemanden zum Fragen.
Einen Namen erfragen, der fehlt
dig @127.0.0.1 -p 5300 nichts.laden.test | grep statusHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Einen Namen aus einer anderen Zone erfragen
dig @127.0.0.1 -p 5300 laden.invalid | grep statusHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein häufiger Fehler
Warnung
Viele denken, dig und ping schlagen einen Namen auf dieselbe Weise nach. Das stimmt nicht. dig fragt nur einen DNS-Server. Die meisten Programme, auch ping, lesen zuerst die Hosts-Datei. Ein Name kann im Browser gehen und bei dig nichts zeigen.
Sehen, wie beide Wege auseinandergehen
dig +short @127.0.0.1 -p 5300 localhostHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Eine echte Suche geht Etikett für Etikett abwärts
Im Internet kennt kein einzelner Server alle Namen. Ein Resolver fragt die Wurzel, dann den Server für die Endung und dann den der Firma.
Das Lab hat kein Internet: Diese Tabelle wird gelesen und nicht ausgeführt. Sie zeigt die Fragen für www.laden.beispiel.
Ein Beispiel: www.laden.beispiel nachschlagen
| Schritt | Der Resolver fragt | Die Antwort |
|---|---|---|
| 1 | Einen Wurzelserver | Fragen Sie die Server für die Endung .beispiel |
| 2 | Einen Server für .beispiel | Fragen Sie die Server für laden.beispiel |
| 3 | Einen Server für laden.beispiel | www ist 203.0.113.20, 300 Sekunden gültig |
| 4 | Niemanden, 300 Sekunden lang | Der Resolver antwortet aus seinem Speicher |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Den Übungsserver beenden
sudo pkill -f '[-]-port=5300'Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Zum Weitermachen: der Kopf von dig
Führen Sie dig @127.0.0.1 -p 5300 laden.test noch einmal aus, bei laufendem Übungsserver, und lesen Sie den ganzen Kopf.
Suchen Sie die Zeile mit den Flags und die Zahlen der Fragen und Antworten. Fragen Sie dann nichts.laden.test und vergleichen Sie. Welche Zahl hat sich geändert?