36 votes

Comment la recherche DNS est-elle configurée pour OSX Mountain Lion ?

Si je cat mon resolv.conf, je vois ce message :

#
# Mac OS X Notice
#
# This file is not used by the host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.
#

J'essaie d'ajouter une entrée DNS. J'ai modifié mon fichier hosts et vidé le cache DNS, mais le nom ne se résout pas si j'utilise host servername . Je pensais que peut-être host n'était pas configuré pour regarder le hosts fichier. Comment puis-je faire en sorte que ma nouvelle entrée soit résolue, et qu'utilise OSX si ce n'est pas le cas ? resolv.conf ?

27voto

phoebus Points 8330

Les résolveurs DNS peuvent être ajoutés dans OS X via l'option networksetup commandement :

sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4

Insérez le nom de la connexion réseau comme il convient. Ces résolveurs apparaîtront dans resolv.conf tel qu'il est généré automatiquement, mais les modifications directes de resolv.conf n'entraîneront pas l'utilisation de ces résolveurs. Je suppose que les résolveurs sont stockés dans un plist quelque part ; je vais chercher et faire un rapport.

Modifié pour ajouter : Il semble que le fichier plist XML stockant les serveurs DNS est /Library/Preferences/SystemConfiguration/preferences.plist .

Le fichier d'hôte dans /private/etc/hosts devrait fonctionner pour forcer la résolution de noms particuliers (/etc est un lien symbolique vers /private/etc). Pouvez-vous vérifier votre syntaxe et vous assurer que vous éditez le bon fichier ?

0 votes

Je pourrais donc utiliser cette commande pour ajouter le fichier hosts ?

0 votes

Vous ne pouvez pas et vous n'avez pas besoin de le faire

0 votes

Non, si vous voulez ajouter des noms au fichier hosts, ajoutez-les directement. Le fichier hosts est vérifié en premier lors de la résolution des noms, suivi du cache de résolution local, puis des serveurs DNS configurés. L'utilisation de la commande "host" pour le tester ne vérifiera pas le fichier hosts local. Une façon simple de le tester serait d'utiliser un utilitaire réseau comme ping.

17voto

Luke404 Points 5608

L'outil hôte ne se contente pas de résoudre les noms (c'est-à-dire en utilisant le résolveur de nom du système) mais en fait interroge les serveurs DNS (c'est-à-dire qu'il envoie des paquets vers udp/53 et éventuellement tcp/53) : il ne connaît pas et n'utilise pas l'adresse locale de l'utilisateur. hosts fichier.

Si vous voulez tester le résolveur du système d'exploitation (comme dans gethostbyname() et d'autres fonctions similaires de la libc), vous pouvez essayer d'envoyer un ping au nom que vous avez ajouté dans le champ /etc/hosts et il honorera ce que vous avez mis dans ce fichier.

De plus, comme vous l'avez déjà découvert, la recherche de DNS sur Mac OSX n'utilise pas /etc/resolv.conf et la manière correcte de configurer les serveurs DNS à interroger se trouve dans l'interface des paramètres réseau et/ou dans l'interface de l'ordinateur. networksetup outil en ligne de commande. Honnêtement, je ne sais pas si vous pouvez configurer l'ordre dans lequel les sources sont essayées, mais le comportement standard est d'essayer /etc/hosts d'abord et les serveurs DNS ensuite.

1 votes

J'ai trouvé un wrapper perl pour getaddrinfo : search.cpan.org/~pevans/Socket-GetAddrInfo-0.22

0voto

user58234 Points 1

Pour mettre en place un résolveur DNS personnalisé, par exemple en exécutant dnsmasq sur votre propre machine, vous devez créer le répertoire suivant :

/etc/resolver/ (avec par exemple sudo mkdir -p /etc/resolver )

Puis un fichier par domaine pour lequel vous souhaitez ajouter une recherche personnalisée.

Le dossier /etc/resolver/my-domain.dev pourrait ressembler à ceci :

nameserver 127.0.0.1
port 5353

(omettre le port si vous utilisez le port standard de 53 )

Cela indiquerait à macOS de toujours utiliser le résolveur local pour résoudre les adresses IP de ce domaine. Ce résolveur peut fonctionner sur votre machine, ou être un résolveur dans votre centre de données (via Wireguard/VPN), par exemple.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X