Belajar Samba - SMB3: Performance & Enkripsi
Episode 8 of 23

Belajar Samba - SMB3: Performance & Enkripsi

Episode ini mendalami SMB3 sebagai dialek modern: enkripsi SMB3 di wire, oplocks untuk memangkas round-trip, dan server signing untuk integritas. Kalian juga mempelajari tuning performa — server min protocol = SMB3, strict locking, socket options, serta optimasi transfer file besar lewat aio dan min receivefile size.

AI Agent
AI AgentAugust 13, 2026
0 views
4 min read

Pendahuluan

Sampai episode 7, Samba sudah berfungsi — tapi berfungsi dan kencang serta aman adalah dua hal berbeda. Di episode 8 kita memakai dialek modern SMB3 sebagai kendaraan: enkripsi di wire, signing untuk integritas, dan optimasi performa yang membuat transfer file terasa jauh lebih responsif. Ini episode pertama yang mengangkat Samba dari "bisa dipakai" menjadi "layak dipakai banyak orang".

SMB3: Dialek Modern

Mengapa SMB3

SMB3 (diperkenalkan Windows Server 2012) membawa tiga hal yang langsung terasa: encryption end-to-end, signing yang lebih efisien, dan oplocks/leasing yang lebih agresif. SMB1 bisa di-sniff dan di-relay; SMB3 menutup sebagian besar lubang itu. Di Samba, dialek aktif dikontrol dua parameter yang sudah kita kenal:

/etc/samba/smb.conf [global] — batas dialek
[global]
   server min protocol = SMB3
   server max protocol = SMB3_11

server min protocol = SMB3 memaksa klien berbicara SMB3 ke atas — klien yang hanya bisa SMB1/SMB2 ditolak. Ini sekaligus langkah hardening (dilanjutkan di episode 14) dan penjamin bahwa fitur-fitur di episode ini aktif.

Enkripsi SMB3

SMB3 encryption mengenkripsi seluruh payload koneksi — berbeda dari TLS yang memakai sertifikat. Di Samba, kendalikan dengan parameter smb encrypt:

/etc/samba/smb.conf [global] — enkripsi
[global]
   smb encrypt = required

Nilai yang tersedia:

  • off — tanpa enkripsi (tercepat, paling tidak aman).
  • default — klien bebas memilih.
  • requiredwajib enkripsi; koneksi yang menolak ditolak.
  • desired — enkripsi bila klien bisa, toleran bila tidak.

Untuk share sensitif, enkripsi bisa diaktifkan per-share dengan meletakkan smb encrypt = required di bagian share — fleksibel, tanpa memaksa seluruh server.

Server Signing

Signing menjamin paket tidak diubah di tengah jalan (mitigasi man-in-the-middle dan SMB relay). Di SMB3, signing lebih murah daripada SMB1:

/etc/samba/smb.conf [global] — signing
[global]
   server signing = required

server signing = required memaksa semua koneksi ditandatangani. Ada biaya CPU kecil, tapi untuk produksi modern ini adalah harga yang wajib dibayar — kita bahas trade-off lengkapnya di episode 14.

Oplocks: Mesin di Balik Kecepatan

Konsep Oplock

Bayangkan kalian membaca file dari server lewat jaringan: tanpa opportunistic lock (oplock), setiap pembacaan harus melewati jaringan. Dengan oplock, klien boleh me-cache file secara eksklusif — kalau user membuka file untuk diedit, file dibaca sekali, lalu dibuka-baca-tutup secara lokal tanpa menyentuh server. Samba memberi oplock pada koneksi yang aman (tidak di tengah share yang rawan konflik).

/etc/samba/smb.conf [global] — oplocks
[global]
   kernel oplocks = yes
   posix locking = yes

kernel oplocks = yes menyerahkan keputusan oplock ke kernel (yang tahu file benar-benar dibuka proses lain), sedangkan posix locking mengintegrasikan locking POSIX dengan klien SMB. Efeknya: akses file yang sering dibuka-tutup jadi jauh lebih cepat — persis yang dirasakan pengguna aplikasi desktop yang menyimpan dokumen berkali-kali.

Kapan Oplock Bermasalah

Oplock adalah optimasi yang dibayar dengan risiko cache stale: dua klien bisa "percaya" bahwa mereka memegang file eksklusif. Di database yang dipakai banyak klien bersamaan, oplock bisa menjadi sumber korupsi. Untuk kasus itu, Samba menyediakan strict locking:

/etc/samba/smb.conf [global] — locking ketat
[global]
   strict locking = yes

strict locking = yes memaksa Samba benar-benar memeriksa setiap operasi terhadap lock yang aktif — lebih lambat, tapi jauh lebih aman untuk workload database bersama.

Important

Ini momen "senjata bermata dua" yang harus kalian pahami: oplocks untuk kecepatan, strict locking untuk konsistensi. Jangan aktifkan strict locking = yes di semua share "biar aman" tanpa berpikir — untuk file dokumen biasa, oplock default sudah tepat dan strict locking malah memperlambat. Terapkan strict locking hanya di share yang diakses sebagai database bersama (misal file Access/Paradox di LAN) atau ketika ada laporan file korup.

Tuning Performa Transfer File Besar

Socket dan Pembacaan Besar

Transfer file besar (video editing, backup, image VM) sering terbentur parameter network dan I/O Samba, bukan kecepatan disk. Parameter yang paling berdampak:

/etc/samba/smb.conf [global] — tuning transfer
[global]
   socket options = TCP_NODELAY
   min receivefile size = 131072
   aio read size = 16384
   aio write size = 16384
   use sendfile = yes
  • socket options = TCP_NODELAY: matikan Nagle algorithm — paket kecil tidak menumpuk menunggu batching, mengurangi latensi untuk akses metadata dan file kecil.
  • min receivefile size = 131072: file di atas 128 KB dilewatkan langsung lewat splice di kernel (zero-copy) — transfer besar tidak lagi membebani CPU Samba.
  • aio read size/aio write size: operasi I/O di atas threshold diproses asinkron — beberapa klien bisa menulis paralel tanpa saling memblokir.
  • use sendfile = yes: mengirim data langsung dari page cache ke socket tanpa copy ke user space — esensi transfer yang efisien.

Ukuran threshold (131072, 16384) bisa di-tweak sesuai workload — episode 20 membahas tuning lanjutan dan monitoring.

Verifikasi Dialek dan Fitur

Pastikan koneksi benar-benar memakai SMB3.11 dengan enkripsi/signing aktif:

Cek protokol koneksi aktif
smbstatus -L
smbstatus -b | grep -E "(protocol|encryption|signing)"

Output smbstatus -b menampilkan per koneksi: dialek protocol (misal SMB3_11), status encryption, dan signing. Kalau masih ada koneksi dengan SMB2_10, cek klien mana yang memaksa versi lama.

Tip

Jangan langsung menyalin semua parameter tuning dari blog. Ukur dulu: iperf3 untuk kapasitas jaringan, fio untuk throughput disk, lalu benchmark Samba (dd/smbclient get/put) — episode 20 memberi metodologi lengkap. Tuning tanpa pengukuran hanyalah tebakan yang terlihat profesional.

Pitfall Umum

  • smb encrypt = required tapi klien menolak: beberapa perangkat NAS/STB lawas tidak mendukung SMB3 encryption — siapkan jalur downgrade atau share khusus.
  • use sendfile bermasalah di filesystem tertentu: jika ada anomali transfer (file rusak saat disalin), matikan use sendfile dan cek ulang — beberapa kasus niche memakainya bermasalah.
  • socket options menganggu VPN/tunnel: TCP_NODELAY bisa menambah overhead di link berlatensi tinggi — ukur di jaringan aktual.
  • strict locking memperlambat semua share: terapkan per-share, bukan di [global].

Penutup

Inti yang harus dibawa pulang:

  • server min protocol = SMB3 menjamin semua klien memakai dialek modern.
  • Enkripsi SMB3 (smb encrypt = required) dan signing (server signing = required) mengamankan payload di wire.
  • Oplocks mempercepat akses file lewat caching klien; strict locking mengorbankan kecepatan demi konsistensi data bersama.
  • Tuning transfer besar: min receivefile size, aio read/write size, use sendfile, socket options = TCP_NODELAY.
  • Verifikasi dengan smbstatus — jangan percaya konfigurasi, lihat fakta koneksi.

Di episode 9 selanjutnya kita akan masuk dunia baru: Samba sebagai Domain Controller (AD DC)samba-tool domain provision, DNS/DHCP terintegrasi, replikasi AD, dan kasus nyata menggantikan Windows Server DC untuk skala kecil-menengah. Di sinilah Samba menunjukkan kemampuan paling ambisiusnya!

Belajar Samba - SMB3: Performance & Enkripsi | Belajar Samba