Premièrement, si networksetup -getdnsservers <service name>
n'affiche rien, rien n'est répertorié dans Préférences Système > Réseau sous "Serveurs DNS :".
Deuxièmement, il est important de noter que OS X ne gère pas le DNS comme la plupart des systèmes. Par https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man5/resolver.5.html Essentiellement, cela signifie qu'OS X dispose de plusieurs clients DNS en fonction de votre configuration. Le résultat de ces services multiples signifie qu'il existe des situations où l'utilisation de Safari pour accéder à un site web ( http://www.example.com ) vous amènera à une adresse IP qu'OS X a récupérée du DNS (disons 1.2.3.4) tout en effectuant une fouille
$ dig www.example.com
renverront des résultats différents. (peut-être 2.3.4.5)
La raison en est la façon dont OS X gère le DNS.
Si vous exécutez $ man dig
vous obtenez, entre autres, ce qui suit :
Avis sur Mac OS X La commande dig n'utilise pas la résolution du nom et de l'adresse de l'hôte, ni la résolution du nom de l'hôte. d'adresse ou les mécanismes de routage de requêtes DNS utilisés par d'autres processus s'exécutant sur Mac OS X. Les résultats des requêtes de nom ou d'adresse imprimés par dig peuvent différer différer de ceux trouvés par d'autres processus qui utilisent les mécanismes de et d'adresse natifs de Mac OS X. Les résultats des requêtes DNS peuvent également différer des requêtes qui utilisent la bibliothèque de routage DNS de Mac OS X.
Aussi $man nslookup
retournera quelque chose de similaire
Avis sur Mac OS X La commande nslookup n'utilise pas les mécanismes de résolution de noms d'hôtes et d'adresses ou de utilisés par d'autres processus exécutés sous Mac OS X. Les résultats des requêtes de nom ou d'adresses imprimés par nslookup peuvent différer de ceux trouvés par d'autres processus qui processus qui utilisent les mécanismes natifs de résolution de noms et d'adresses de Mac OS X. Les résultats des requêtes DNS peuvent également différer des requêtes qui utilisent la bibliothèque de routage DNS de Mac OS X.
Tout ceci est une façon assez longue de dire que la meilleure façon de voir quels serveurs DNS sont utilisés est de regarder dans Préférences Système > Réseau.
Les entrées "DNS Server :" sont généralement présentes, et "Search Domains :" vous permettra de rechercher des adresses incomplètes.
Si "DNS Server :" n'est pas présent, OS X essaiera d'utiliser l'adresse dans "Router :" pour le DNS.
ET, en plus de tout ce plaisir, il y a des utilitaires et autres processus qui ne peut pas utilisent la bibliothèque de routage DNS de l'OS X, et ils toucheront directement le contenu de /etc/resolv.conf.
La réponse courte est la suivante :
- Si vous vous basez sur le contenu de Préférences Système > Réseau, vous regardez la même chose que ce qui a été dit dans l'article. le plus sont utilisés.
- Le contenu de Préférences Système > Réseau, devrait remplir le fichier /etc/resolv.conf, mais pas toujours.
- Certains autres processus (comme dig et nslookup) accèdent directement à /etc/resolv.conf.
Et, pour couronner le tout, si vous n'utilisez pas les clients VPN intégrés à OS X, il est possible que des routes et des serveurs DNS supplémentaires soient utilisés et qu'ils ne puissent pas être utilisés par les utilisateurs. networksetup -getdnsservers <service name>
ne s'affichera pas. Votre client VPN peut avoir la capacité de vous montrer les routes et les serveurs DNS, je sais que le mien le fait.
Je sais que cela ne répond pas précisément à votre question, mais j'espère que cela vous aidera à réaliser qu'il n'est pas toujours facile de trouver la "vérité" concernant le DNS sur un Mac. En général, vous pouvez supposer sans risque que le contenu de Préférences Système > Réseau, ou le contenu du fichier networksetup -getdnsservers <service name>
sont l'endroit d'où vous obtenez votre DNS. Cependant, si les choses semblent bizarres, n'oubliez pas qu'il existe d'autres possibilités. Utilisez dig pour vous aider à déterminer s'il y a des différences.
Enfin, pour les lecteurs qui se demandent comment obtenir la <service name>
en networksetup -getdnsservers <service name>
essayez d'utiliser networksetup -listallnetworkservices
Bill