Sådan fikser du lav MAC OSX ydelse på SMB filoverførsler

Efter opgradering til Sierra konstaterede jeg, at ydelsen mellem min iMac og min QNAP NAS var blevet noget sløvere.

Store filer blev kun overført med omkring 30 MB/s, hvilket er langt under det man burde forvente med et gigabit LAN mellem iMac og NAS.

Dette gælder når man benytter SMB også kaldet samba til filoverførsler. Hvis man benytter AFP (Apple Filing Protocol) er der ingen problemer. Jeg benytter SMB, da mine shares skal tilgås af en blanding af linux og apple maskiner.

En søgen på Google viste, at jeg ikke var den eneste som har bemærket det problem. Det viser sig, at Apple nu som standard har tilføjet client signing i deres samba implementering, og det dræber performance.

Grunden til at Apple har enablet denne feature er utvivlsomt, at SMB har været ramt af sikkerhedshuller, f.eks. Badlock. Men jeg finder det nu kritisabelt, at de ikke informerer om en så stor performance nedgang, og anviser mulige workarounds.

Client signing mindsker muligheden for MITM angreb, men hvem ved deres fulde fem benytter SMB over internettet? I et LAN i hjemmet kan jeg ikke se at det skulle være nødvendigt.

 

Heldigvis er det ganske simpelt at slå fra. Filen /etc/nsmb.conf skal oprettes med følgende indhold:

 


[default]
signing_required=no

Det kan gøres i en terminal med denne kommando:

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

Efterfølgende rebootes Mac’en, og så skulle SMB overførslerne igen være hurtige. For mit vedkommende gik jeg fra ca. 30 MB/s til ca. 124 Mb/s!

Det æ sgu Najs!

 

4 meninger om “Sådan fikser du lav MAC OSX ydelse på SMB filoverførsler”

  1. Hej Steen

    er det KUN terminalen man skal bruge/åbne og så skrive hele linien og med alle de tegn du har vist; printf “……………………………..” og hvad betyder sudo tee??

    Er meget noob men synes det lyder interessant, og virker det også op macOS Sierra?

    1. Korrekt. Du copy-paster blot den streng ind i en terminal, og så beder den om dit password for at fortsætte (sudo betyder “gør med root-privilegier”).

      tee læser fra standard input og skriver til fil, så kommandoen betyder i denne sammenhæng blot tag output fra printf “[default]\nsigning_required=no\n” og skriv det til filen /etc/nsmb.conf, hvor \n betyder linjeskift.

      Den sidste del ( > /dev/null) betyder ignorer output fra kommandoen.

      Alternativt kan du blot åbne en teksteditor og skrive

      [default]
      signing_required=no

      og gemme det i filen /etc/nsmb.conf

      Jeg ved ikke om det gør forskel i Sierra, men er ret sikker på at det i hvert fald ikke skader. Ellers kan du jo bare slette filen igen 🙂

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

This site uses Akismet to reduce spam. Learn how your comment data is processed.