Mac OS kann nach dem Ruhezustand keine Verbindung zu SMB-Freigaben herstellen

15

Ich habe auf meinem kürzlich (3 Wochen alten) MacBook Pro problemlos auf die SMB-Freigaben meines lokalen Windows 2008-Dateiservers zugegriffen. Seit einigen Tagen kann es jedoch keine (erneute) Verbindung zum Server herstellen, nachdem es aus dem Energiesparmodus geweckt wurde.

Finder zeigt nur "Verbinden ..." und hängt auf unbestimmte Zeit. Das gleiche passiert, wenn ich es über die Kommandozeile ( mount -t smbfs) versuche . Dies geschieht sowohl über WLAN als auch über Kabel. Ich habe auch versucht, das Netzwerk aus- und wieder einzuschalten. Das einzige, was hilft, ist ein Neustart.

Irgendwelche Hinweise?

Bearbeiten, um zu verdeutlichen: Es ist der Mac, der in den Ruhezustand versetzt wird, nicht der Server. Ich habe auch herausgefunden, dass, wenn ich die Freigaben trenne, bevor ich sie in den Ruhezustand versetze, sie nach dem Aufwachen wieder verbunden werden können.

Ein weiterer Edit:

Ich habe weitere Nachforschungen angestellt und den Netzwerkverkehr beschnuppert. Der Mac sendet NetBIOS-Namensabfragen und eine Statusanfrage (NBSTAT) an den Server, der Server antwortet, alles scheint in Ordnung zu sein. Danach sollte der Mac eine SMB-Verbindung herstellen, aber er macht nichts. Es folgen keine weiteren Pakete.

Ich habe dann herausgefunden, dass das eigentliche Problem tiefer liegt. Es sieht so aus, als würde keine neue Verbindung hergestellt, da angenommen wird, dass die alte Verbindung, für die auf der Serverseite eine Zeitüberschreitung aufgetreten ist, noch aktiv ist. Jedes Programm, das versucht, auf seinen Einhängepunkt oder nur auf das Verzeichnis / Volumes zuzugreifen, bleibt jedoch hängen und kann nicht einmal beendet werden. umount /Volumes/share- hängt. ls /Volumes- hängt. kill -9eine davon - hilft nicht. Wenn Sie ein Dialogfeld zum Öffnen einer Datei in einer beliebigen Anwendung öffnen, bleibt diese ebenfalls hängen!

Das einzige, was hilft, ist ein harter Neustart. Mir scheint, an der SMB-Implementierung von OSX stimmt etwas grundlegend nicht, wenn eine Verbindung mit Zeitüberschreitung so etwas auslösen kann.

Andreas
quelle

Antworten:

6

Ich habe das gleiche Problem mit meinem MacBook Pro. Ich habe die Anweisungen hier befolgt - http://blog.djmnet.org/2009/02/09/macs-needing-unix-network-geekery/ und meine Probleme scheinen gelöst zu sein.

ddbailie
quelle
1
Wow, danke! Das scheint es geschafft zu haben. Ich habe darwin_streams in smb.conf deaktiviert und dies zu meiner sysctl.conf hinzugefügt: 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 Nach einem Neustart habe ich eine Verbindung zu meinen SMB-Freigaben hergestellt (was bereits viel weniger Zeit in Anspruch genommen hat als früher), und nach einigen Ruhephasen kann ich immer noch darauf zugreifen sie perfekt.
Andreas
Eigentlich bin ich immer noch auf die Probleme gestoßen, nachdem ich diese Änderungen angewendet habe. OSX Lion scheint das Problem jedoch behoben zu haben.
Andreas
4

Hey, ich hatte kürzlich das gleiche Problem mit meinem 2010 MBP. Ich fand die Lösung aus einer Kombination von zwei Dingen.

Das erste ist eine Kernel-Optimierung (im Wesentlichen TCP_NODELAYfür die Verbindungen), die in Terminal durchgeführt werden kann:

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

Zweitens handelt es sich um Dateiberechtigungen / DS_Store-Dateien. In der Regel hat der Mac beim Einrichten von Windows-Freigaben nur Lesezugriff. Finder versucht, sie in jedem Ordner zu erstellen, den Sie anzeigen, und kann schließlich hängen bleiben. Daher gibt es zwei Möglichkeiten, um dieses Problem zu beheben: Aktivieren Sie auf dem Windows-Computer ausreichende Dateiberechtigungen, oder verhindern Sie, dass Finder diese Dateien auf Netzwerkfreigaben erstellt. Ich bevorzuge es, Finder daran zu hindern, sie zu erstellen. Dies kann durch Ausführen des folgenden Befehls im Terminal erfolgen:

defaults write com.Apple.desktopservices DSDontWriteNetworkStores true

Sie müssen neu starten, nachdem Sie sie ausgeführt haben.

dantheman
quelle
Auf meinem Mac OS 10.7.2-System lautet der Standardwert (falls Sie ihn wiederherstellen müssen) "net.inet.tcp.delayed_ack: 3" (Sie können den Standardwert durch Ausführen von "sudo sysctl -a" erhalten).
Per Noalt
@PerNoalt: Ich habe auf diesen Thread geantwortet, weil ich mich auch mit solchen Problemen befasst habe. Die Standardeinstellung für net.inet.tcp.delayed_ackist 310.6, 1.7 und 1.8. Festlegen, um 0Probleme zu lösen. Sollte aber auch 2funktionieren.
JakeGould
2

Ich kann nicht helfen, das Problem zu lösen, aber ich kann ein bisschen mehr Details hinzufügen. Es kommt auch unter Windows 7 vor und das OS X-Gerät muss weiterhin verbunden sein, wenn die Windows-Freigabe in den Energiesparmodus versetzt wird. Wenn Sie die Verbindung zu OS X trennen oder OS X in den Energiesparmodus versetzen und Windows dann in den Standby-Modus wechseln, tritt dieses Problem nicht auf.

Auch dafür hätte ich gerne eine Lösung.

Edit: Nach einigem Suchen hatten viele andere Leute ähnliche Probleme:

Jazradel
quelle