zweiter Nameserver in /etc/resolv.conf nicht von wget abgeholt

14

Meine resolv.conf sieht folgendermaßen aus:

; generated by /sbin/dhclient-script
search mcdc
nameserver 10.0.4.48
nameserver 8.8.8.8

Wenn ich es tue nslookup www.google.com, funktioniert es

nslookup www.google.com
;; Got SERVFAIL reply from 10.0.4.48, trying next server
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
www.google.com  canonical name = www.l.google.com.

Wenn ich jedoch www.google.com einrolle, kann der Host nicht aufgelöst werden.

Ich habe versucht, Curl unter Strace auszuführen, und festgestellt, dass Curl nur den ersten Nameserver in resolv.conf verwendet, nicht den zweiten. Wenn ich die beiden Nameserver-Zeilen vertausche, wird www.google.com aufgelöst, interne DNS-Namen jedoch nicht. Dies ist also keine gute Problemumgehung.

Wie kann ich resolv.conf reparieren, um beide Nameserver zu verwenden?

benhsu
quelle

Antworten:

24

Das Standardverhalten für resolv.conf und den Resolver besteht darin, die Server in der angegebenen Reihenfolge zu testen. Der Resolver versucht den nächsten Nameserver nur, wenn das Zeitlimit für den ersten Nameserver abgelaufen ist. Die Manpage resolv.conf sagt:

Nameserver Name Server IP-Adresse

Internetadresse (in Punktnotation) eines Nameservers, den der Resolver abfragen soll. Es können bis zu MAXNS (derzeit 3, siehe) Nameserver aufgelistet werden, einer pro Schlüsselwort. Wenn mehrere Server vorhanden sind, werden sie von der Resolver-Bibliothek in der angegebenen Reihenfolge abgefragt.

Und:

(Der verwendete Algorithmus besteht darin, einen Nameserver zu testen. Wenn das Zeitlimit für die Abfrage abgelaufen ist, versuchen Sie es mit dem nächsten, bis keine Nameserver mehr vorhanden sind, und wiederholen Sie den Versuch mit allen Nameservern, bis eine maximale Anzahl von Wiederholungsversuchen durchgeführt wurde.)

Weitere Informationen finden Sie auch auf der Handbuchseite des Resolvers (5) .

Sie können das Verhalten des Resolvers ändern, indem Sie rotatedie Nameserver in einer Round-Robin-Reihenfolge abfragen:

Drehen setzt RES_ROTATE in _res.options, wodurch Round-Robin-Nameserver aus den aufgelisteten ausgewählt werden. Dies hat zur Folge, dass die Abfragelast auf alle aufgelisteten Server verteilt wird, anstatt dass alle Clients jedes Mal zuerst den ersten aufgelisteten Server ausprobieren.

Nslookup verwendet jedoch den zweiten Nameserver, wenn es einen SERVFAILvom ersten Nameserver empfängt . Von der nslookup-Manpage :

[no] fail Versuchen Sie den nächsten Nameserver, wenn ein Nameserver mit SERVFAIL oder einer Überweisung (nofail) antwortet, oder beenden Sie die Abfrage (fail) für eine solche Antwort.

(Standard = kein Fehler)

Stefan Lasiewski
quelle
2

Ja, Sie können die Einstellung "Drehen" und "Timeout" verwenden, um die DNS-Suche zu verbessern. Unten sehen Sie das folgende Beispiel:

Ex:

[root@centos-xxxxxx ~]# cat /etc/resolv.conf
options rotate
options timeout:1
search xyz.abc.local
nameserver 192.168.56.3
nameserver 10.0.2.4
Harry
quelle
1

Ist 10.0.4.48 ein rekursiver DNS-Server oder Resolver?

Oder ist es nur ein autorisierender Server für Ihre internen Zonen?

Sie sollten einen internen Resolver einrichten, der möglicherweise auch Ihre maßgeblichen Daten enthält.

Michuelnik
quelle
0

Damit es wie erwartet funktioniert, installieren Sie dnsmasq oder einen anderen leichtgewichtigen DNS-Repeater (oder einen vollwertigen DNS-Server). Siehe Vergleich der DNS-Serversoftware .

Für dnsmasq ist die Konfiguration so einfach wie:

server=10.0.4.48
server=8.8.8.8

Sie können auch angeben, für welche Domänen DNS verwendet werden soll. Z.B:

server=/mcdc/10.0.4.48
server=8.8.8.8

Dadurch sucht dnsmasq *.mcdcim 10.0.4.48DNS-Server und in jedem anderen in 8.8.8.8.

In /etc/resolv.confSie nur benutzen , um Ihre lokale DNS:

nameserver 127.0.0.1

Weitere Informationen zum Einrichten von dnsmasq finden Sie in meiner Antwort hier: /unix/55090/change-default-dns-on-openvpn-connect/545591#545591 .

Nux
quelle
-3

Wenn Sie können, würde ich es auf diese Weise konfigurieren.

search mcdc
nameserver 127.0.0.1
nameserver 8.8.8.8

Blake
quelle
6
Welcher Teil der Frage gibt an, dass sie einen DNS-Server auf ihrem Computer ausführen oder möchten?
Jay
1
Blake: Beachten Sie, dass 127.0.0.1 normalerweise nur für Systeme verwendet wird, die einen Nameserver-Caching-Daemon auf dem lokalen Host haben. Siehe tldp.org/HOWTO/DNS-HOWTO-3.html
Stefan Lasiewski