Mac OS ne peut pas se connecter aux partages SMB après le sommeil

15

J'avais l'habitude d'accéder sans problème aux partages SMB de mon serveur de fichiers Windows 2008 local sur mon MacBook Pro récent (âgé de 3 semaines). Cependant, depuis quelques jours, il ne parvient pas à se (re) connecter au serveur après s'être réveillé du mode veille.

Le Finder affiche simplement "connexion ..." et se bloque indéfiniment. La même chose se produit lorsque je l'essaye depuis la ligne de commande ( mount -t smbfs). Cela se produit via le WiFi et le câble, j'ai également essayé de désactiver et de réactiver la mise en réseau. La seule chose qui aide est un redémarrage.

Des indices?

Modifiez pour clarifier: c'est le Mac qui est mis en veille, pas le serveur. J'ai également découvert que si je déconnecte les partages avant de le mettre en veille, il pourra se reconnecter après le réveil.

Un autre montage:

J'ai fait une enquête plus approfondie et reniflé le trafic réseau. Le Mac envoie des requêtes de nom NetBIOS et une demande d'état (NBSTAT) au serveur, le serveur répond, tout semble bien. Après cela, le Mac devrait ouvrir une connexion SMB, mais il ne fait rien. Plus aucun paquet ne suit.

J'ai alors découvert que le vrai problème était plus profond. Il semble qu'il n'ouvre pas une nouvelle connexion car il pense que l'ancienne, qui a bien sûr expiré côté serveur, est toujours active. Cependant, tout programme qui essaie d'accéder à son point de montage ou simplement au répertoire / Volumes se bloque et ne peut même pas être tué. umount /Volumes/share- bloque. ls /Volumes- bloque. kill -9aucun de ces éléments - n'aide pas. De plus, l'ouverture d'une boîte de dialogue d'ouverture de fichier dans n'importe quelle application entraîne également son blocage!

La seule chose qui aide est un redémarrage dur. Il me semble qu'il y a quelque chose de fondamentalement mauvais dans l'implémentation SMB d'OSX si une connexion expirée peut déclencher quelque chose comme ça.

Andreas
la source

Réponses:

6

J'ai le même problème avec mon MacBook Pro. J'ai suivi les instructions ici - http://blog.djmnet.org/2009/02/09/macs-needing-unix-network-geekery/ et mes problèmes semblent être résolus.

ddbailie
la source
1
Ouah merci! Cela semble l'avoir fait. J'ai désactivé darwin_streams dans smb.conf et l'ai ajouté à mon sysctl.conf: net.inet.tcp.delayed_ack=0 net.inet.tcp.mssdflt=1440 kern.ipc.maxsockbuf=500000 net.inet.tcp.sendspace=250000 net.inet.tcp.recvspace=250000 après un redémarrage, je me suis connecté à mes partages SMB (qui prenaient déjà beaucoup moins de temps qu'auparavant) et après quelques heures de sommeil plus tard, je peux toujours accéder les parfaitement.
Andreas
En fait, j'ai toujours rencontré des problèmes après avoir appliqué ces modifications. Cependant, OSX Lion semble avoir résolu le problème.
Andreas
4

Hé, j'ai récemment eu le même problème avec mon MBP 2010, j'ai trouvé que la solution était une combinaison de deux choses.

Le premier est un ajustement du noyau (essentiellement TCP_NODELAYsur les connexions), qui peut être fait dans Terminal:

sudo sysctl -w net.inet.tcp.delayed_ack=0

Deuxièmement, traite des autorisations de fichiers / fichiers DS_Store. Généralement, lorsque vous configurez des partages Windows, le Mac n'aura qu'un accès en lecture. Le Finder essaie de les créer dans chaque dossier que vous consultez et peut éventuellement se bloquer. Il existe donc deux options pour résoudre ce problème: activer des autorisations de fichiers suffisantes sur la machine Windows ou empêcher le Finder de créer ces fichiers sur des partages réseau. Je préfère désactiver le Finder pour les créer, ce qui peut être fait en exécutant la commande suivante dans le terminal:

defaults write com.Apple.desktopservices DSDontWriteNetworkStores true

Vous devrez redémarrer après les avoir exécutés.

dantheman
la source
Sur mon système Mac OS 10.7.2, la valeur par défaut (si vous devez la restaurer) est "net.inet.tcp.delayed_ack: 3" (vous pouvez obtenir la valeur par défaut en exécutant "sudo sysctl -a").
Par Noalt
@PerNoalt: Répondre à ce fil parce que j'ai également traité des problèmes comme celui-ci. Le paramètre par défaut pour net.inet.tcp.delayed_ackest 3sur 10,6, 1,7 et 1,8. Le 0régler pour résoudre les problèmes. Mais cela 2devrait aussi fonctionner.
JakeGould
2

Je ne peux pas aider à résoudre le problème, mais je peux ajouter un peu plus de détails. Cela se produit également sous Windows 7 et le périphérique OS X doit toujours être connecté lorsque le partage Windows est mis en veille. Si vous vous déconnectez ou mettez en veille OS X, puis en veille Windows, vous ne rencontrez pas ce problème.

J'aimerais aussi vraiment une solution à cela.

Edit: Après quelques recherches, de nombreuses autres personnes ont eu des problèmes similaires:

Jazradel
la source