Wie können Sie die Standard-DNS-Konfiguration in Ubuntu überschreiben, sodass nslookup statische Werte zurückgibt?

921
fossy

Die Werte nslookup, dig und ping liefern für mich unterschiedliche Werte. Ich möchte, dass foo.bar.name immer statisch in localhost auf meinem Rechner aufgelöst wird.

Ich habe den Befehl benutzt

host foo.bar.name 

und bearbeitete / etc / hosts, um die Zeile aufzunehmen

1.1.1.1 foo.bar.name foo 

(wobei 1.1.1.1 IP-Adresse meines Hostcomputers)

Wenn ich entweder Ping oder Curl starte, verhält es sich so, wie ich es will.

Wenn ich jedoch dig oder nslookup für diese Angelegenheit starte, wird die Adresse foo.bar.name völlig anders aufgelöst.

Habe ich etwas verpasst?

Welche Konfigurationen muss ich ändern, um sicherzustellen, dass die DNS-Auflösung auf diesem bestimmten Host so abläuft, wie ich es angegeben habe.

0

3 Antworten auf die Frage

2
Alex

Welche Konfigurationen muss ich ändern, um sicherzustellen, dass die DNS-Auflösung auf diesem bestimmten Host so abläuft, wie ich es angegeben habe.

Sie können eine einfache DNS-Weiterleitung einrichten, z. B. zum unboundÜberschreiben von DNS-Einträgen.

An Ihrem Beispiel würde es in unboundconfig so aussehen:

local-zone: "foo.bar.name" redirect local-data: "foo.bar.name A 1.1.1.1" 

Wenn Sie externe DNS überschreiben möchten, können Sie Folgendes verwenden:

local-data: "www.google.com. 1800 IN A 172.16.34.12" local-data: 'www.google.com. 7200 IN TXT "My own TXT record for text"' local-data-ptr: "172.16.34.12 www.google.com" 

Wenn Sie es bis eingestellt sind, testen Sie es mit dig @127.0.0.1 foo.bar.name a
Wenn Ihr neuer Resolver funktioniert Ok, dann als System eingestellt breit, indem nameserverLinie in der /etc/resolf.confzumnameserver 127.0.0.1

PS

Einige Debian-Basisdistributionen werden dnsmasqals DNS- Cacher installiert . Wenn Sie verwenden, unbounddann schalten Sie ausdnsmasq

dnsmasq hat eine ähnliche Konfiguration und lädt sogar `/ etc / hosts` standardmäßig (es sei denn, die Distribution hat es deaktiviert). grawity vor 7 Jahren 0
1
grawity

ping, curlund alle anderen Apps verwenden DNS nicht wirklich direkt - sie verwenden die vom Betriebssystem bereitgestellte "gethostbyname" -Funktion, die dann mehrere Provider anruft. Einer von ihnen ist "DNS" (der zu DNS-Servern spricht), ein anderer ist "Dateien" (d. H. /etc/hosts). Es kann weitere Anbieter geben, die andere Protokolle sprechen. Sie sind alle über konfiguriert /etc/nsswitch.conf.

Inzwischen dig, hostund nslookupsind grundsätzlich DNS - Clients - sie umgehen die OS „gethostbyname“ Funktionen und stattdessen direkt Handwerk & DNS - Pakete senden. (Sie wurden speziell auf diese Weise geschrieben.) Als Ergebnis überspringen sie auch /etc/hostsalle anderen Namensauflösungsmechanismen, und Sie können nichts konfigurieren, um dies zu "beheben".

(Das Betriebssystem selbst wird nicht jedes UDP-Paket untersuchen, um zu prüfen, ob es sich um DNS handelt, und es wird auch keine gefälschte DNS-Antwort von / etc / hosts enthalten, nur weil.)

Der einzige Weg, um dig& c zu machen . honor / etc / hosts soll einen tatsächlichen DNS-Server einrichten, mit dem die App sprechen kann, der die gewünschten statischen Antworten liefert. Beispielsweise fungiert dnsmasq als DNS-Cache / Proxy und lädt standardmäßig statische Daten aus / etc / hosts. Alternativ verfügt Unbound über eine umfangreiche "local-data" -Konfiguration, obwohl / etc / hosts nicht direkt gelesen werden kann.

Wenn Sie dnsmasq oder Unbound konfiguriert haben, zeigen Sie /etc/resolv.confauf 127.0.0.1 (oder auf welchem ​​anderen Host dnsmasq ausgeführt wird).

0
rsm

Das System wird in / etc / hosts abgehört und verwendet dann den Nameserver. und was du getan hast, ist vollkommen in Ordnung. es ist nur, dass einige Programme werden direkt an Nameserver sprechen, das heißt host, nslookupund dig. Deshalb haben Sie unterschiedliche Ergebnisse.