2017-06-26 5 views
2

Je suis finalement à bout de nerfs. J'ai été Googling ce problème pendant une semaine maintenant. J'ai essayé de dépanner mon Mac (10.12 Sierra) et mes contrôleurs de domaine (Windows Server 2016) et je ne suis pas plus proche de résoudre mon problème.Mac OS X connexions lentes - mdns 4-5 secondes - bonjour lent

Mon problème est que lors de l'utilisation de la fonction ldap_connect() de PHP, il faut environ 5 secondes avant d'obtenir une réponse. Les choses pendent juste pendant 5 secondes puis j'obtiens une connexion réussie. La commande exacte pour reproduire (en supposant mon DC a une adresse IP de 192.168.2.5):

$ldap = ldap_connect('ldap://192.168.2.5:389');

Je ne suis pas en utilisant SSL ou TLS. C'est juste une simple connexion en clair à un DC avec son pare-feu complètement éteint. J'ai fini par installer Wireshark sur mon DC pour obtenir plus d'informations avec ce qui se passe et j'ai remarqué ceci:

No. | Time | Source | Destination | Protocol | Length | Info

1 | 327 | 192.168.2.108 | 224.0.0.251 | MDNS | 83 | Standard query 0x0000 A Ryans-MacBook-Pro.local, "QU" question

2 | 328 | 192.168.2.108 | 224.0.0.251 | MDNS | 83 | Standard query 0x0000 A Ryans-MacBook-Pro.local, "QM" question

3 | 331 | 192.168.2.108 | 224.0.0.251 | MDNS | 83 | Standard query 0x0000 A Ryans-MacBook-Pro.local, "QM" question

4 | 332 | 192.168.2.108 | 192.168.2.5 | TCP | 78 | 49860 > 389 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=32 TSval=371626102 TSecr=0 SACK_PERM=1

5 | 332 | 192.168.2.5 | 192.168.2.108 | TCP | 74 | 389 > 49860 [SYN, ACK] Seq=0 Ack=1 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM=1 TSval=2494847497 TSecr=371626102

6 | 332 | 192.168.2.108 | 192.168.2.5 | TCP | 66 | 49860 > 389 [ACK] Seq=1 Ack=1 Win=131744 Len=0 TSval=371626102 TSecr=2494847497

7 | 332 | 192.168.2.108 | 192.168.2.5 | LDAP | 96 | bindRequest(1) "ldap" simple

8 | 332 | 192.168.2.5 | 192.168.2.108 | LDAP | 88 | bindResponse(1) success

Comme vous pouvez le voir, quand je lance la fonction ldap_connect(), je vois immédiatement le premier paquet à 327 secondes (depuis l'exécution Wireshark). Je vois 3 paquets mdns pour un total de 5 secondes. Ensuite, sur les quatrième, cinquième et sixième paquets, je vois la prise de contact TCP à trois voies, puis il continue à me donner une connexion ldap réussie. Par conséquent, le délai de 5 secondes que je vois est tous les paquets mdns ou Bonjour d'Apple? À ce stade, je ne sais pas comment résoudre ce problème.

Désistement: J'utilise Laravel Valet qui utilise dnsmasq. Je n'ai aucune idée si cela cause mon problème ou non. Je n'ai pas encore désinstallé ce logiciel pour le savoir.

éditer: J'ai exclu Larval Valet. Je l'ai complètement désinstallé et c'est toujours un problème. J'ai également exclu Laravel. Je suis en cours d'exécution de ce script et le problème existe toujours:

<?php 

$start = microtime(true); 

$ldap = ldap_connect('ldap://192.168.2.5:389'); 

$end = microtime(true); 

echo $end - $start; 

Edit2: Ok j'ai obtenu plus loin avec sa résolution. J'ai installé Wireshark sur mon Mac et j'ai remarqué ce qui suit également.

enter image description here

Puis j'ai couru cette commande: ➜ ~ scutil --dns configuration DNS

resolver #1 
    search domain[0] : corp.[redacted].com 
    nameserver[0] : 192.168.2.4 
    nameserver[1] : 192.168.2.5 
    if_index : 7 (en3) 
    flags : Request A records 
    reach : Reachable, Directly Reachable Address 

resolver #2 
    domain : local 
    options : mdns 
    timeout : 5 
    flags : Request A records 
    reach : Not Reachable 
    order : 300000 

Il est mon nom d'hôte! Mon nom d'hôte provoque un délai de 5 secondes en essayant de le résoudre en utilisant le DNS multicast. Pourquoi?.local est un domaine réservé, alors pourquoi Apple l'ajouterait-il à mon nom d'hôte?

enter image description here

Comme vous pouvez le voir, il ajoute automatiquement .local.

Quoi qu'il en soit, j'ai résolu mon problème en ajoutant 127.0.0.1 Ryans-MacBook-Pro.local à mon fichier /etc/hosts. Pour une raison quelconque, il n'était pas là.

Mon ldap_connect() est maintenant instantané comme il se doit!

+0

Je reçois également 5 secondes lorsque la résolution de '/ etc/hosts' ... semble être un problème de mDNSresponder. – YvesLeBorg

+0

Puisque j'utilise l'adresse IP du serveur et non pas le nom d'hôte ou le nom de domaine complet, je ne sais pas pourquoi il essaierait même de résoudre à partir de/etc/hosts ou même du DNS pour cette question? –

+0

après enquête, il semble que je reçois les 5 secondes en venant d'un processus php (cli et via sapi) ... et pas en shell. Plus d'enquête en cours. – YvesLeBorg

Répondre

0

Assurez-vous que votre nom d'hôte est dans le fichier /etc/hosts comme ceci:

127.0.0.1 localhost Ryans-MacBook-Pro.local

mon nom d'hôte Juste remplacer avec le vôtre.