Geschwindigkeit bei Zugriff von Mac OS X auf Samba Share

Ich nutze meinen Cubietruck als Samba Server. Irgendwann fiel mir auf, dass die Geschwindigkeit beim Kopieren von meinem Mac mit OS X El Capitan nur knapp über 10 MB/s lag. Da der Cubietruck eine Gigabit-Netzwerkkarte hat, sollte das um einiges schneller gehen. Außerdem war ich der Meinung früher schon Werte um die 30 MB/s gesehen zu haben. Der Gigabit-Anschluss wäre damit zwar auch noch nicht ausgelastet, aber immerhin.

Nach etwas Recherche im Internet habe ich eine Einstellung (Heise Artikel) gefunden mit der die Geschwindigkeit wieder auf bis zu 30 MB/s steigt. OS X verwendet wohl seit Version 10.11.5 standardmäßig SMB Signing. Das Tool smbutil zeigt die Samba Version und Optionen für aktuell verbundene Freigaben an:

Mini:~ johannes$ smbutil statshares -a

==================================================================================================
SHARE                         ATTRIBUTE TYPE                VALUE
==================================================================================================
media
                              SERVER_NAME                   cubie
                              USER_ID                       502
                              SMB_NEGOTIATE                 AUTO_NEGOTIATE
                              SMB_VERSION                   SMB_3.0
                              SMB_SHARE_TYPE                DISK
                              SIGNING_SUPPORTED             TRUE
                              EXTENDED_SECURITY_SUPPORTED   TRUE
                              LARGE_FILE_SUPPORTED          TRUE
                              CLIENT_REQUIRES_SIGNING       TRUE
                              FILE_IDS_SUPPORTED            TRUE
                              DFS_SUPPORTED                 TRUE
                              MULTI_CREDIT_SUPPORTED        TRUE
                              ENCRYPTION_SUPPORTED          TRUE
                              SIGNING_ON                    TRUE

--------------------------------------------------------------------------------------------------

Die Zeile “SIGNING_ON TRUE” zeigt, dass SMB Signing aktiviert ist. Diese Konfiguration kann in der Datei ~/Library/Preferences/nsmb.conf geändert werden:

Mini:~ johannes$ echo "[default]" >> ~/Library/Preferences/nsmb.conf; echo "signing_required=no" >> ~/Library/Preferences/nsmb.conf
Mini:~ johannes$ cat ~/Library/Preferences/nsmb.conf
[default]
signing_required=no

Nach einem Neustart oder dem Trennen aller Verbindungen zum Samba Server und erneuten Verbinden sollte SMB Signing deaktiviert sein (SIGNING_ON wird nicht aufgeführt):

Mini:~ johannes$ smbutil statshares -a

==================================================================================================
SHARE                         ATTRIBUTE TYPE                VALUE
==================================================================================================
media
                              SERVER_NAME                   cubie
                              USER_ID                       502
                              SMB_NEGOTIATE                 AUTO_NEGOTIATE
                              SMB_VERSION                   SMB_3.0
                              SMB_SHARE_TYPE                DISK
                              SIGNING_SUPPORTED             TRUE
                              EXTENDED_SECURITY_SUPPORTED   TRUE
                              LARGE_FILE_SUPPORTED          TRUE
                              FILE_IDS_SUPPORTED            TRUE
                              DFS_SUPPORTED                 TRUE
                              MULTI_CREDIT_SUPPORTED        TRUE
                              ENCRYPTION_SUPPORTED          TRUE

--------------------------------------------------------------------------------------------------

Um wieder auf den Standard zurück zu wechseln reicht es die Datei ~/Library/Preferences/nsmb.conf zu löschen.

Um SMB Signing über ~/Library/Preferences/nsmb.conf nicht global zu deaktivieren, kann der Share auch mit cifs://Hostname statt mit smb://Hostname verbunden werden. Dadurch wird automatisch Samba Version 1 ohne SMB Signing verwendet:

Mini:~ johannes$ smbutil statshares -a

==================================================================================================
SHARE                         ATTRIBUTE TYPE                VALUE
==================================================================================================
pyload
                              SERVER_NAME                   cubie
                              USER_ID                       502
                              SMB_NEGOTIATE                 SMBV_NEG_SMB1_ONLY
                              SMB_VERSION                   SMB_1
                              SMB_SHARE_TYPE                UNKNOWN
                              EXTENDED_SECURITY_SUPPORTED   TRUE
                              UNIX_SUPPORT                  TRUE
                              LARGE_FILE_SUPPORTED          TRUE
                              CLIENT_REQUIRES_SIGNING       TRUE

--------------------------------------------------------------------------------------------------