Berbagi file antar mesin: menyiapkan NFS server untuk share antar Linux, konfigurasi Samba agar kompatibel dengan klien Windows/macOS, serta dasar-dasar resolusi nama dari /etc/hosts hingga systemd-resolved beserta jebakan umum di lapangan.

Setelah di episode 19 sebelumnya kita membahas Linux Firewall Management — menyusun kebijakan default-deny dengan UFW, Firewalld, dan iptables — kalian sekarang tahu bagaimana melindungi jalur komunikasi antar server. Tapi komunikasi yang aman itu untuk apa? Di dunia nyata, alasan utama server berbicara satu sama lain adalah berbagi data: web server mengambil file dari storage server, aplikasi menyimpan upload ke file server, atau tim desain mengakses asset bersama dari laptop mereka.
Di sinilah file sharing masuk. Linux punya dua protokol raksasa untuk ini: NFS (Network File System) untuk berbagi file antar mesin Linux/Unix secara efisien dan transparan, serta Samba yang mengimplementasikan protokol SMB/CIFS — bahasa universal yang dipahami Windows, macOS, dan perangkat NAS. Di samping itu, kita akan menyentuh dasar DNS yang menghubungkan nama dan alamat IP — karena file share, email, dan hampir semua layanan jaringan berjalan di atas resolusi nama yang benar.
Di episode 20 ini, kalian akan mempraktikkan tiga hal: memasang NFS server dan me-mount-nya di klien, menyiapkan share Samba untuk klien Windows/macOS, dan memahami cara Linux menyelesaikan nama menjadi IP — lengkap dengan jebakan yang paling sering membuat share "tiba-tiba tidak bisa diakses".
NFS memungkinkan sebuah direktori di satu server di-mount sebagai folder lokal di server lain. Yang paling penting untuk dipahami: NFS berbasis RPC (Remote Procedure Call) — jadi membutuhkan port-port tambahan di firewall, bukan hanya port 2049.
sudo apt update
sudo apt install nfs-kernel-serverDirektori yang mau dibagikan dideklarasikan di /etc/exports. Setiap baris berisi path, klien yang diizinkan, dan opsi dalam kurung:
/srv/nfs/data 192.168.1.0/24(rw,sync,no_subtree_check)
/srv/nfs/backup 10.0.0.5(rw,sync,no_root_squash)
/home/shared 192.168.1.0/24(ro)| Opsi | Arti |
|---|---|
rw / ro | Baca-tulis atau hanya-baca |
sync | Tulis ke disk sebelum merespons klien (data aman) |
async | Balas lebih cepat, risiko data hilang saat crash |
no_subtree_check | Kurangi overhead pemeriksaan subdirektori |
no_root_squash | Root klien diperlakukan sebagai root di server (berbahaya!) |
root_squash | Root klien dipetakan ke nobody — default yang aman |
Important
Opsi no_root_squash adalah salah satu lubang keamanan terbesar di NFS: ia memberi user root di klien hak root penuh di server. Dalam kebanyakan kasus, kalian tidak membutuhkannya. Biarkan root_squash (default) agar akun root klien dibatasi. Gunakan no_root_squash hanya untuk kasus khusus — misalnya server backup yang mengelola file yang dimiliki root — dan pastikan export-nya hanya untuk host tepercaya.
Setelah mengedit /etc/exports, terapkan konfigurasinya:
sudo exportfs -arvsudo exportfs -vNFS butuh beberapa layanan RPC. Pada sistem dengan systemd, layanan NFS membuka port tetap tertentu:
sudo ufw allow from 192.168.1.0/24 to any port nfs
sudo ufw allow from 192.168.1.0/24 to any port 111 proto tcp
sudo ufw allow from 192.168.1.0/24 to any port 111 proto udpDi sisi klien, pasang package klien lalu mount direktori remote:
sudo apt install nfs-commonsudo mount -t nfs 192.168.1.10:/srv/nfs/data /mnt/data192.168.1.10:/srv/nfs/data /mnt/data nfs defaults,_netdev 0 0df -hT | grep nfsWarning
Jebakan nomor satu NFS: klien tanpa package nfs-common akan menolak mount dengan mount: wrong fs type — padahal konfigurasi server sudah benar. Dan jika /etc/exports kalian pakai nama host, jangan lupa resolusi namanya harus jalan — ini momen di mana DNS (bagian akhir episode ini) menjadi penentu. Verifikasi dengan showmount -e 192.168.1.10 dari klien sebelum mount.
Server Linux jarang hidup sendiri; di kantor, ia dikelilingi Windows dan macOS. Samba mengimplementasikan SMB/CIFS — protokol yang dipahami semua platform itu — sehingga folder di server Linux muncul seperti network drive biasa.
sudo apt install sambasudo dnf install samba/etc/samba/smb.conf[global]
workgroup = WORKGROUP
server string = File Server
security = user
map to guest = never
[backup]
path = /srv/samba/backup
browseable = yes
valid users = admin
read only = noStruktur [global] menampung pengaturan umum, dan blok [nama-share] mendefinisikan setiap share. Direktori yang dibagikan harus ada dan punya permission yang benar:
sudo mkdir -p /srv/samba/backup
sudo chown root:sambashare /srv/samba/backup
sudo chmod 770 /srv/samba/backuptestparmsudo useradd -M -s /usr/sbin/nologin adminsudo smbpasswd -a adminsudo systemctl enable --now smbd
sudo systemctl restart smbdNote
Samba memakai password-nya sendiri, bukan password login Linux. smbpasswd -a mendaftarkan/mengubah password Samba terpisah — inilah mengapa user bisa login ke share Samba meskipun akunnya di-sistem dinonaktifkan (nologin). Dan setelah mengubah smb.conf, selalu testparm dulu, lalu restart smbd — pola yang sama seperti sshd -t di episode 18.
Jangan lupa firewall: buka port SMB (445/tcp) untuk klien di jaringan internal, dan aktifkan layanan SMB di systemd (smb/nmb).
Dari sisi klien Windows: buka \\192.168.1.10\backup di File Explorer. Dari macOS: Finder → Connect to Server → smb://192.168.1.10/backup. Keduanya akan meminta kredensial user Samba yang barusan kalian buat.
Sebelum pindah ke klien, uji share dari dalam server sendiri dengan smbclient — ini cara tercepat memisahkan "Samba-nya yang salah" vs "jaringannya yang salah":
sudo apt install smbclient # atau: sudo dnf install samba-clientsmbclient -L 192.168.1.10 -U adminsmbclient //192.168.1.10/backup -U adminJika smbclient -L menampilkan share tapi login gagal, masalahnya hampir pasti kredensial (smbpasswd belum diset). Jika smbclient tidak bisa terhubung sama sekali, periksa dua hal: layanan smbd berjalan, dan firewall membuka 445/tcp.
| Aspek | NFS | Samba (SMB/CIFS) |
|---|---|---|
| Klien target | Linux/Unix (transparan sebagai mount) | Windows, macOS, Linux |
| Performa antar Linux | Sangat baik, overhead rendah | Cukup baik |
| Keamanan/autentikasi | IP/network-based (/etc/exports) | User + password, integrasi AD |
| Konfigurasi | etc/exports + mount | smb.conf + smbpasswd |
| Kapan dipakai | Storage antar server, kluster | Share untuk user kantor, NAS |
Aturan praktisnya: antar Linux, gunakan NFS. Menghadap klien desktop (Windows/macOS), gunakan Samba. Keduanya bisa hidup berdampingan di server yang sama untuk direktori berbeda.
Semua yang kalian lakukan di jaringan — mount NFS, akses share, koneksi SSH — bergantung pada penerjemahan nama menjadi IP. Inilah resolusi DNS, dan urutannya pada sistem Linux modern adalah:
/etc/hosts — daftar statis lokal yang diperiksa paling dulu./etc/resolv.conf — menunjuk ke resolver (misal systemd-resolved, atau server DNS).dig).127.0.0.1 localhost
192.168.1.10 nfs-server.lab
192.168.1.11 web-server.labnameserver 127.0.0.53
search lab.Tip
Jebakan search dan dnsmasq klasik: ketika /etc/hosts tidak berisi nfs-server, mount NFS yang memakai nama host akan gagal kendati IP-nya benar. Tambahkan baris IP hostname di /etc/hosts (atau perbaiki DNS). Perhatikan juga bahwa file /etc/resolv.conf di distro modern adalah symlink yang dikelola systemd-resolved — jangan diedit manual, kelola lewat resolvectl atau systemd-resolved.
Untuk melihat resolver aktif dan server DNS yang dipakai:
resolvectl statusgetent hosts nfs-server.labgetent hosts adalah cara paling jujur untuk menguji apakah nama ini bisa diresolusi oleh sistem — karena ia mengikuti urutan lengkap (hosts → DNS) persis seperti aplikasi. Inilah tes pertama saat mount atau koneksi gagal dengan "unknown host".
Untuk jaringan lab atau internal, kalian mungkin perlu menjalankan BIND (named) — server DNS yang melayani zone sendiri. Ini topik yang dalam, tapi paham peta kecilnya membantu:
sudo apt install bind9sudo systemctl status namedKonfigurasi zone ada di /etc/bind/named.conf.local. Menjalankan BIND penuh membutuhkan pemahaman zone file, serial, dan TTL — untuk kebutuhan kebanyakan tim, DNS yang dikelola (cloud provider) + /etc/hosts + systemd-resolved sudah cukup. Jangan membangun BIND sebelum tiga lapis itu benar-benar tidak cukup.
Mari gabungkan semuanya dalam satu skenario nyata. Dua VM: nfs-server.lab (192.168.1.10) dan web-server.lab (192.168.1.11).
nfs-server.lab, definisikan export di /etc/exports dan jalankan exportfs -arv.ufw allow from 192.168.1.0/24 to any port nfs (dan RPC port).web-server.lab, tambahkan 192.168.1.10 nfs-server.lab ke /etc/hosts.showmount -e nfs-server.lab.sudo mount -t nfs nfs-server.lab:/srv/nfs/data /var/www/data._netdev agar mount menunggu jaringan saat boot.smb.conf.Jika langkah 3 dan 4 dilewati, kalian akan bertemu jebakan yang sudah kita bahas: mount gagal karena nama tidak ter-resolusi — bukan karena NFS-nya rusak.
1. Klien tanpa nfs-common/nfs-utils. mount: wrong fs type meskipun server sehat. Pasang package klien dulu.
2. Firewall hanya membuka port 2049. NFS RPC memakai port dinamis; tutup firewall-nya dan mount tetap gagal. Buka layanan nfs, mountd, rpc-bind (Firewalld) atau port 2049 + 111 (UFW).
3. Nama host tidak ter-resolusi. Mount memakai nfs-server.lab tapi tidak ada di /etc/hosts maupun DNS. Selalu getent hosts <nama> sebelum menyalahkan NFS.
4. no_root_squash yang tidak perlu. Root klien jadi root server — lubang keamanan besar. Biarkan root_squash default.
5. Lupa smbpasswd. User ada di sistem tapi password Samba belum diset → login share gagal. smbpasswd -a <user> adalah langkah yang sering terlewat.
6. Permission direktori share yang salah. Share terlihat tapi tidak bisa ditulis karena chmod/owner tidak cocok. Pastikan direktori dimiliki grup yang tepat dengan permission yang sesuai.
7. Mengedit /etc/resolv.conf manual. Ini symlink ke systemd-resolved. Perubahan akan ditimpa. Kelola lewat resolvectl atau konfigurasi network manager.
Pada episode 20 ini, kalian telah belajar berbagi file di tiga arah: menyiapkan NFS server dengan /etc/exports dan me-mount-nya di klien Linux, membangun share Samba agar folder server bisa diakses dari Windows/macOS dengan smb.conf dan smbpasswd, serta memahami dasar DNS — dari /etc/hosts, /etc/resolv.conf, hingga systemd-resolved — yang menjadi tulang punggung semua resolusi nama.
Poin kunci yang perlu kalian bawa pulang:
/etc/hosts dan getent hosts adalah alat debugging resolusi nama pertama.testparm (Samba) dan exportfs -arv (NFS) adalah ritual validasi wajib setelah mengubah konfigurasi.Di episode 21 selanjutnya kita akan naik level ke pengelolaan jaringan yang lebih dalam lewat topik Advanced Networking & Packet Analysis. Kalian akan belajar membaca lalu lintas dengan tcpdump, menggabungkan interface dengan network bonding, memisahkan jaringan virtual dengan VLAN, hingga mengenal network namespaces — keterampilan yang membedakan admin jaringan dari sekadar pengguna Linux. Sampai jumpa!