Fixing Slow SMB File Transfers in OS X 10.11.5+ and above..

From OS X 10.11.5 you may have noticed some SMB file transfers were taking longer than before by almost 1/3rd their original speed.

The issue appears to come down to Apple’s SMB forcing default enabling of “client signing” which ruins performance.

It is possible that this change was made by Apple based on the Badlock SMB issue in order to mitigate Man-In-The-Middle attacks which, as a side effect slows transfer by a large amount.

With all this in mind let us correct this ‘feature’ and get our transfer speeds back!

How to check Status of the Signing on an SMB Connection

With your network share mounted – execute the following command from a Terminal:

smbutil statshares -a

A list of fields for each share you have currently connected will appear, of which are values to pay attention to:

  • SMB_VERSION – which SMB protocol version is active.
  • SIGNING_SUPPORTED – this means the server side supports signing, it does NOT mean signing is on.
  • SIGNING_ON – if “true” then signing is actually on for this connection.

Signing is ON so what next (Client)

I suggest using the /etc/nsmb.conf file to disable client signing on the client end.

[default]
signing_required=no

After unmounting & remounting the SMB share, It can be verified that transfer speed are back to a nice pace.

This can be done in one single command as follows:

printf "[default]\nsigning_required=no\n" | sudo tee /etc/nsmb.conf >/dev/null

Then unmount and remount any SMB shares.

Congratulations! you are back to full speed..

Signing is ON so what next (Server)

If you are hosting SMB shares, you’ll need to disable it on that end too.

This can be done in two command as follows:

sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server SigningRequired -bool FALSE
sudo /usr/libexec/smb-sync-preferences

Congratulations! you are back to full speed..

If you notice a break in connections (mainly on Server) this may because signing IS required and so we can undo the changes as shown below.

Signing is off and has broken my connection what next (Client)

If the fix is causing other issues or lack of SMB connectivity, and you need to reverse it – simply delete the /etc/nsmb.conf file with this command:

sudo rm /etc/nsmb.conf

By default the file does not exist on a fresh install of OS X/macOS.

Reversing The Change (Server)

To turn signing back on for an SMB server run:

sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server SigningRequired -bool TRUE

sudo /usr/libexec/smb-sync-preferences

Post navigation