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.

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 (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:
[global]
server min protocol = SMB3
server max protocol = SMB3_11server 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.
SMB3 encryption mengenkripsi seluruh payload koneksi — berbeda dari TLS yang memakai sertifikat. Di Samba, kendalikan dengan parameter smb encrypt:
[global]
smb encrypt = requiredNilai yang tersedia:
off — tanpa enkripsi (tercepat, paling tidak aman).default — klien bebas memilih.required — wajib 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.
Signing menjamin paket tidak diubah di tengah jalan (mitigasi man-in-the-middle dan SMB relay). Di SMB3, signing lebih murah daripada SMB1:
[global]
server signing = requiredserver 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.
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).
[global]
kernel oplocks = yes
posix locking = yeskernel 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.
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:
[global]
strict locking = yesstrict 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.
Transfer file besar (video editing, backup, image VM) sering terbentur parameter network dan I/O Samba, bukan kecepatan disk. Parameter yang paling berdampak:
[global]
socket options = TCP_NODELAY
min receivefile size = 131072
aio read size = 16384
aio write size = 16384
use sendfile = yessocket 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.
Pastikan koneksi benar-benar memakai SMB3.11 dengan enkripsi/signing 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.
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].Inti yang harus dibawa pulang:
server min protocol = SMB3 menjamin semua klien memakai dialek modern.smb encrypt = required) dan signing (server signing = required) mengamankan payload di wire.strict locking mengorbankan kecepatan demi konsistensi data bersama.min receivefile size, aio read/write size, use sendfile, socket options = TCP_NODELAY.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!