136 votes

Le DNS ne se résout pas sur Mac OS X

Certains de mes collègues ont des problèmes sur leurs Macs - la résolution DNS ne fonctionne pas dans Mac OS X. Ils utilisent Snow Leopard 10.6.8. Ils peuvent utiliser le DNS dans une machine virtuelle Windows 7 (VMware Fusion 3.1.3) fonctionnant sous OS X. Les ordinateurs sont des MacBook Pros 15", modèle début 2011.

Les choses qu'ils ont essayées et qui n'ont pas fonctionné :

  • activer/désactiver l'aéroport
  • Redémarrage de
  • utilisation d'une connexion filaire au lieu du wifi
  • supprimer les informations de connexion et les ajouter à nouveau
  • Désactiver le pare-feu de Mac
  • en utilisant une IP statique
  • paramétrage manuel des serveurs DNS
  • redémarrage de mDNSResponder
  • les corrections de cette autre question

EDIT réponse à la réponse de Martín :

- Pouvez-vous faire un ping sur le DNS que vous voulez utiliser ?

$ ping apple.com
ping: cannot resolve apple.com: Unknown host

- Quelle(s) est/sont l'adresse(s) IP du/des DNS que vous voulez utiliser ?

C'est un serveur DNS d'entreprise qui est donné avec DHCP, il fonctionne bien pour d'autres personnes. J'ai également essayé le 8.8.4.4 de Google et le 205.171.3.65 (que j'ai trouvé dans le DNS Benchmark de GRC comme étant le plus rapide).

- Avez-vous essayé d'utiliser 8.8.8.8 (google) ou l'un des OpenDNS 208.67.222.222 ou 208.67.220.220 ?

Cela ne fonctionne pas, voir la sortie de Google Chrome :

Le serveur de www.apple.com est introuvable, car la recherche DNS a échoué. Le DNS est le service réseau qui traduit le nom d'un site Web en son adresse Internet. Cette erreur est le plus souvent due à l'absence de connexion à l'Internet ou à une mauvaise configuration du réseau. Elle peut également être causée par un serveur DNS qui ne répond pas ou par un pare-feu empêchant Google Chrome d'accéder au réseau.

- Pouvez-vous faire un ping sur ces hôtes ?

$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes 64 bytes from
8.8.8.8: icmp_seq=0 ttl=58 time=3.925 ms

- créer un utilisateur vierge

Un compte d'utilisateur invité a été créé, le problème de DNS était toujours présent lors de l'utilisation de le compte invité.

- nslookup et dig fonctionnent bien

$ nslookup www.apple.com 8.8.8.8
Server:  8.8.8.8
Address: 8.8.8.8#53

Non-authoritative answer:
www.apple.com canonical name = www.isg-apple.com.akadns.net.
www.isg-apple.com.akadns.net canonical name = www.apple.com.edgekey.net.
www.apple.com.edgekey.net canonical name = e3191.c.akamaiedge.net.
Name: e3191.c.akamaiedge.net
Address: 184.24.141.15

$ dig @8.8.8.8 www.apple.com
; <<>> DiG 9.6.0-APPLE-P2 <<>> @8.8.8.8 www.apple.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11298
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION: ;www.apple.com.   IN A
;; ANSWER SECTION:
www.apple.com.  1041 IN CNAME www.isg-apple.com.akadns.net.
www.isg-apple.com.akadns.net. 38 IN CNAME www.apple.com.edgekey.net.
www.apple.com.edgekey.net. 8794 IN CNAME e3191.c.akamaiedge.net.
e3191.c.akamaiedge.net. 17 IN A 184.24.141.15
;; Query time: 4 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Oct 4 09:25:28 2011
;; MSG SIZE  rcvd: 158

- J'ai également vidé le cache DNS, mais cela n'a pas aidé.

sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

EDIT 2 :

$ cat /etc/resolv.conf
#
# 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.
#
domain {redacted}.com
nameserver 8.8.8.8
nameserver 208.67.222.222

0 votes

Ça m'arrive aussi sur le lion.

0 votes

Cela se produit pour moi sur Mavericks, 10.9.4.

0 votes

Cela ressemble à un problème historique qui a pourri la vie des utilisateurs et des administrateurs de réseau de Leopard à Yosemite. Si quelqu'un rencontre encore ce problème, veuillez signaler clairement si vous avez plus d'une interface active et si, de plus, vous obtenez sa configuration à partir d'un serveur DHCP (de différents côtés). Pourquoi ? Je n'ai jamais vu un tel problème sur aucun autre Unix et sur aucun de mes Macs (j'en ai beaucoup), mais aucun d'entre eux n'a plus d'une interface qui parle vers une source d'information DNS.

101voto

Robin Robinson Points 1031

Il s'avère que la solution était de rebondir sur mDNSResponder :

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

Ceci a été obtenu par un autre collègue à partir de Question sur le défaut du serveur .

OS X 10.10.0 - 10.10.3, Yosemite

Apparemment mDNSResponder n'existe pas dans Yosemite (OS X 10.10). Vous pouvez redémarrer descoveryd à la place pour résoudre ces problèmes.

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.discoveryd.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.discoveryd.plist

OS X 10.10.4+, Yosemite

Dans OSX 10.10.4 le mDNSResponder a été réintroduit . Donc utiliser le premier fonctionnera à nouveau.

7 votes

Mais ce n'est pas vraiment une réponse satisfaisante. J'ai besoin de savoir comment empêcher que cela ne se produise en premier lieu.

0 votes

Mon DNS (la connexion internet avec les adresses IP est bonne, ainsi que nslookup) a également commencé à s'éteindre, ceci le ramène sans redémarrage, merci !

0 votes

@dkagedal Est-ce que l'une des autres réponses vous aidera ? Je ne suis vraiment pas familier avec les réseaux, donc ce n'est pas mon fort. Si vous trouvez une meilleure réponse en matière de prévention, veuillez la poster ici !

18voto

chiggsy Points 2899

En fait, je pense que vous devriez utiliser

scutil --dns

scutil -r hostname

Ces commandes utilisent le magasin dynamique de configd, par opposition aux fichiers plats de /etc, qui ne sont souvent lus qu'en mode mono-utilisateur et pour les systèmes non connectés au réseau.

man scutil   # or

scutil --help

7 votes

Vous n'expliquez pas pourquoi ces commandes aideraient à résoudre ce problème. Le font-elles vraiment ? Ou c'est censé être un commentaire à l'une des autres réponses ou quelque chose comme ça ?

0 votes

Un avantage possible de scutil est qu'il peut fonctionner indépendamment du fait que l'ordinateur dispose de discoveryd ou de mDNSResponder. Il date d'avant leur introduction.

3 votes

Ces commandes ne résolvent pas le problème

13voto

Chris Harris Points 181

J'ai rencontré le même problème Et bien que le redémarrage de mDNSResponder semble "fonctionner", le redémarrer plusieurs fois par heure est plutôt pénible.

Donc, pour l'instant, j'ai "résolu" le problème en exécutant dnsmasq localement. Pour ce faire :

  • Construisez dnsmasq (téléchargez les fichiers tgz et make ou brew install dnsmasq )

  • Mettez cela dans un dnsmasq.conf archivo:

    resolv-file=resolv.conf
    user=nobody
    group=nobody
    interface=lo0
    cache-size=1024
  • Mettez ça dans un resolv.conf qui se trouve dans le même répertoire que le fichier dnsmasq.conf fichier (nb : no /etc/resolv.conf ) :

    nameserver 8.8.8.8
    nameserver 4.2.2.1
    nameserver 4.2.2.2
  • Exécuter dnsmasq avec sudo dnsmasq --no-daemon --log-queries -C dnsmasq.conf . La sortie devrait ressembler à quelque chose comme :

    ...
    dnsmasq: reading resolv.conf
    dnsmasq: using nameserver 4.2.2.1#53
    dnsmasq: using nameserver 4.2.2.2#53
    dnsmasq: using nameserver 8.8.8.8#53
    dnsmasq: read /etc/hosts - 6 addresses
  • Ouvrez les préférences réseau et assurez-vous que 127.0.0.1 est le seul serveur DNS (préférences réseau -> avancé -> DNS -> ajouter 127.0.0.1)

Les choses devraient recommencer à fonctionner correctement.

Une fois que les choses fonctionnent, vous pouvez lancer dnsmasq sans le --no-daemon y --log-queries afin qu'il démarre en arrière-plan et que vous n'ayez pas besoin de garder une fenêtre de terminal ouverte.

0 votes

Je voudrais juste signaler qu'après avoir passé 16 heures d'affilée à parcourir Internet, c'est le uniquement J'ai trouvé une solution qui me permet à la fois de résoudre les noms de sociétés internes ET de faire fonctionner correctement le réseau divisé. Merci beaucoup d'avoir fait ce commentaire.

0 votes

Je tiens également à souligner que sous OS X El Capitan, afin de script mettre en place, j'ai enveloppé ma openconnect dans un script Python, ainsi que des commandes telles que networksetup -setdnsservers 127.0.0.1 y networksetup -setsearchdomains "$COMPANY_NAME".com . Ajoutez votre dnsmasq et tout est prêt ! J'ai enfin une solution VPN stable grâce à ce commentaire.

0 votes

Pour les futurs lecteurs, j'ai trouvé que le plus simple était de se connecter à ma boîte au travail, de déterminer les IP qu'elle avait pour les serveurs de noms, puis de coder en dur ces IP dans mon resolv.conf sous 8.8.8.8 (serveur DNS de Google). Cela permet à tous les noms ne provenant pas de l'entreprise de se résoudre correctement sans devoir passer par les serveurs de l'entreprise, ce que je trouve utile pour la confidentialité et la rapidité. En ce qui concerne le codage en dur, ces IP ne vont pas changer de sitôt, et si c'est le cas, je ne serai pas le seul à être affecté et il devrait être trivial de modifier deux lignes.

8voto

UnkwnTech Points 21942

La résolution de noms sous OSX (et UNIX en général) est prise à partir des adresses IP des DNS dans le fichier situé dans /etc/resolv.conf (qu'OS X génère automatiquement pour autant que je m'en souvienne).

Puisque vous avez essayé pratiquement tout ce qui me vient à l'esprit, j'aimerais vous demander :

  • Pouvez-vous faire un ping sur le DNS que vous voulez utiliser ?
  • Quelle(s) est/sont l'adresse(s) IP du/des DNS que vous voulez utiliser ?
  • Avez-vous essayé d'utiliser 8.8.8.8 (google) ou l'un des OpenDNS 208.67.222.222 ou 208.67.220.220 ?
  • Pouvez-vous faire un ping sur ces hôtes ?

Enfin, un test généralement agréable consiste à créer un utilisateur vierge et à voir si ce nouvel utilisateur présente le même problème. Si ce n'est pas le cas, vous pouvez alors commencer à chercher ce que votre utilisateur actuel possède qui pourrait être à l'origine du problème ; si cela échoue également, vous savez alors qu'il s'agit de quelque chose de plus "système".

Jetez également un coup d'œil à la Console pour voir si vous pouvez repérer quelque chose qui pourrait être lié (et que vous aimeriez coller ici).

Enfin, votre Mac est équipé de deux commandes DNS importantes, nslookup y dig .

Donc pour résoudre www.apple.com en utilisant le serveur de google, vous devez taper :

nslookup "hôte à résoudre" "serveur DNS à utiliser". Par exemple :

$ nslookup www.apple.com 8.8.8.8
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
www.apple.com   canonical name = www.isg-apple.com.akadns.net.
www.isg-apple.com.akadns.net    canonical name = www.apple.com.edgekey.net.
www.apple.com.edgekey.net   canonical name = e3191.c.akamaiedge.net.
Name:   e3191.c.akamaiedge.net
Address: 184.24.141.15

NSLookup est une ancienne commande (qui était censée être dépréciée il y a quelques années et remplacée par DIG, mais sa syntaxe facile à utiliser était trop belle pour être supprimée, je suppose), son "remplaçant" est dig , une commande beaucoup plus puissante, dont la syntaxe est plus folle.

Pour effectuer la même requête, vous devez taper :

dig @8.8.8.8 www.apple.com

Et voici le résultat :

$ dig @8.8.8.8 www.apple.com

; <<>> DiG 9.7.3 <<>> @8.8.8.8 www.apple.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17356
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.apple.com.         IN  A

;; ANSWER SECTION:
www.apple.com.      1782    IN  CNAME   www.isg-apple.com.akadns.net.
www.isg-apple.com.akadns.net. 42 IN CNAME   www.apple.com.edgekey.net.
www.apple.com.edgekey.net. 21581 IN CNAME   e3191.c.akamaiedge.net.
e3191.c.akamaiedge.net. 2   IN  A   184.24.141.15

;; Query time: 26 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mon Oct  3 21:21:49 2011
;; MSG SIZE  rcvd: 158

Comme vous pouvez le constater, dig est beaucoup plus "verbeux" (ce qui est utile pour déboguer ce qui se passe). La puissance de dig vient du fait que vous pouvez spécifier le type de requête que vous voulez effectuer (entre autres choses).

Dans tous les cas, faites-nous connaître les résultats exacts de ces commandes.

0 votes

Voir ma modification de la question.

0 votes

@CajunLuke hmmmm intéressant Je peux ajouter la sortie de : cat /etc/resolv.conf à votre question ?

0 votes

Modifié. (Remplissage pour faire tenir le commentaire.)

6voto

freezedpeanuts Points 61

J'ai eu exactement les mêmes symptômes (et j'ai passé un certain temps à résoudre le problème), mais j'ai pu le résoudre lorsque j'ai réalisé que j'avais modifié les paramètres suivants /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist et ce que j'ai fait a été en quelque sorte interprété comme étant malformé. J'ai restauré à partir d'une sauvegarde et la machine a pu à nouveau résoudre les noms d'hôtes.

Avant d'en arriver à la solution, je me suis également rendu compte que je pouvais naviguer sur Internet si j'utilisais un proxy SOCKS5 par l'intermédiaire de ssh -D et j'ai essayé les recherches de DNS à travers le tunnel.

2 votes

Mon entreprise a eu ce problème pendant des mois et des mois, en amenant à chaque fois des Macs au "Genius bar" dont la seule solution était d'effacer les disques durs et de recommencer. J'ai vu votre message, et j'ai supprimé com.apple.mDNSResponder.plist, j'ai redémarré, et le problème était résolu. J'aimerais pouvoir vous noter un milliard de fois.

1 votes

Supprimer la note com.apple.mDNSResponder.plist ! J'ai fait comme @TomThorogood l'a suggéré. J'ai du mal à revenir en arrière. Même si j'ai remis le fichier et redémarré, je n'ai pu obtenir aucune réponse d'Internet. Le site sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist qu'aidé.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X