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 de contournement.
Comment puis-je corriger resolv.conf pour utiliser les deux serveurs de noms?
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 dit:
serveur IP serveur IP
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 y a plusieurs serveurs, la bibliothèque du résolveur 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 resolver (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 SERVFAIL
du premier serveur de noms. Depuis 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)
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
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é.
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 que dnsmasq recherchera *.mcdc
dans 10.0.4.48
Serveur DNS et tout autre dans 8.8.8.8
.
Dans /etc/resolv.conf
vous 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: https://unix.stackexchange.com/questions/55090/change-default-dns-on-openvpn-connect/545591#545591 .