deuxième serveur de noms dans /etc/resolv.conf non récupéré par wget

14

Mon resolv.conf ressemble à ceci:

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

si je fais nslookup www.google.comça marche

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.

mais lorsque je boucle www.google.com, cela ne peut pas résoudre l'hôte.

J'ai essayé d'exécuter curl sous strace et j'ai trouvé que curl n'utilisait que le premier serveur de noms dans resolv.conf, pas le second. Si je change les deux lignes de serveur de noms, www.google.com résout, mais les noms DNS internes ne le font pas, donc ce n'est pas une bonne solution.

Comment puis-je résoudre resolv.conf pour utiliser les deux serveurs de noms?

benhsu
la source

Réponses:

24

Le comportement par défaut de resolv.conf et du résolveur consiste à essayer les serveurs dans l'ordre indiqué. Le résolveur n'essaiera le prochain serveur de noms que si le premier serveur de noms arrive à expiration. La page de manuel resolv.conf indique:

serveur de noms Adresse IP du serveur de noms

Adresse Internet (en notation par points) d'un serveur de noms que le résolveur doit interroger. Jusqu'à MAXNS (actuellement 3, voir) serveurs de noms peuvent être répertoriés, un par mot clé. S'il existe plusieurs serveurs, la bibliothèque de résolution les interroge dans l'ordre indiqué.

Et:

(L'algorithme utilisé consiste à essayer un serveur de noms, et si la requête expire, essayez le suivant, jusqu'à ce qu'il n'y ait plus de serveurs de noms, puis répétez d'essayer tous les serveurs de noms jusqu'à ce qu'un nombre maximal de tentatives soit effectué.)

Consultez également la page de manuel du résolveur (5) pour plus d'informations.

Vous pouvez modifier le comportement du résolveur à l'aide de rotate, qui interrogera les serveurs de noms dans un ordre alternatif:

rotation définit RES_ROTATE dans _res.options, ce qui entraîne la sélection par rotation des serveurs de noms parmi ceux répertoriés. Cela a pour effet de répartir la charge de requête entre tous les serveurs répertoriés, au lieu que tous les clients essaient le premier serveur répertorié en premier à chaque fois.

Cependant, nslookup utilisera le deuxième serveur de noms s'il reçoit un SERVFAILdu premier serveur de noms. À partir de la page de manuel nslookup :

[no] fail Essayez le serveur de noms suivant si un serveur de noms répond avec SERVFAIL ou une référence (nofail) ou terminez la requête (échec) sur une telle réponse.

(Par défaut = nofail)

Stefan Lasiewski
la source
2

oui, vous pouvez utiliser le paramètre "rotation" et le délai d'expiration pour améliorer les recherches DNS, voici l'exemple,

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
la source
1

10.0.4.48 est-il un serveur DNS récursif aka resolver?

Ou s'agit-il uniquement d'un serveur faisant autorité pour vos zones internes?

Vous devez configurer un résolveur interne qui pourrait également contenir vos données faisant autorité.

Michuelnik
la source
0

Donc, pour le faire fonctionner comme prévu, installez dnsmasq ou un autre répéteur DNS léger (ou un serveur DNS complet). Voir Comparaison des logiciels de serveur DNS .

Pour dnsmasq, la configuration est aussi simple que:

server=10.0.4.48
server=8.8.8.8

Vous pouvez également spécifier pour quels domaines certains DNS doivent être utilisés. Par exemple:

server=/mcdc/10.0.4.48
server=8.8.8.8

Cela fera rechercher dnsmasq *.mcdcdans 10.0.4.48le serveur DNS et tout autre dans 8.8.8.8.

En /etc/resolv.confvous utilisez simplement votre DNS local:

nameserver 127.0.0.1

Pour plus de détails sur la configuration de dnsmasq, voir ma réponse ici: /unix/55090/change-default-dns-on-openvpn-connect/545591#545591 .

Nux
la source
-3

Si vous le pouvez, je le configurerais de cette façon.

search mcdc
nameserver 127.0.0.1
nameserver 8.8.8.8

Blake
la source
6
Quelle partie de la question indique qu'ils exécutent un serveur DNS sur leur ordinateur ou le souhaitent?
Jay
1
Blake: Notez que 127.0.0.1 n'est généralement utilisé que pour les systèmes qui ont un démon de mise en cache du serveur de noms sur l'hôte local. Voir tldp.org/HOWTO/DNS-HOWTO-3.html
Stefan Lasiewski