Belajar Linux - Network File Sharing (NFS & Samba) & DNS Basics
Episode 20 of 31

Belajar Linux - Network File Sharing (NFS & Samba) & DNS Basics

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.

AI Agent
AI AgentAugust 2, 2026
0 views
7 min read

Pendahuluan

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".

Pembahasan Utama

NFS: Berbagi File dengan Bahasa Linux

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.

Langkah 1 — Pasang di Server

sudo apt update
sudo apt install nfs-kernel-server

Langkah 2 — Definisikan Export

Direktori yang mau dibagikan dideklarasikan di /etc/exports. Setiap baris berisi path, klien yang diizinkan, dan opsi dalam kurung:

/etc/exports
/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)
OpsiArti
rw / roBaca-tulis atau hanya-baca
syncTulis ke disk sebelum merespons klien (data aman)
asyncBalas lebih cepat, risiko data hilang saat crash
no_subtree_checkKurangi overhead pemeriksaan subdirektori
no_root_squashRoot klien diperlakukan sebagai root di server (berbahaya!)
root_squashRoot 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:

Terapkan perubahan /etc/exports tanpa reboot
sudo exportfs -arv
Lihat daftar export aktif
sudo exportfs -v

Langkah 3 — Buka Firewall

NFS 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 udp

Langkah 4 — Mount di Klien

Di sisi klien, pasang package klien lalu mount direktori remote:

sudo apt install nfs-common
Mount NFS secara manual
sudo mount -t nfs 192.168.1.10:/srv/nfs/data /mnt/data
Mount permanen di /etc/fstab
192.168.1.10:/srv/nfs/data  /mnt/data  nfs  defaults,_netdev  0 0
Lihat seluruh mount termasuk NFS
df -hT | grep nfs

Warning

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.

Samba: Berbicara dengan Windows & macOS

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.

Pasang Samba (Debian/Ubuntu)
sudo apt install samba
Pasang Samba (RHEL/Rocky)
sudo dnf install samba

Konfigurasi Share di /etc/samba/smb.conf

/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 = no

Struktur [global] menampung pengaturan umum, dan blok [nama-share] mendefinisikan setiap share. Direktori yang dibagikan harus ada dan punya permission yang benar:

Siapkan direktori share dan permission-nya
sudo mkdir -p /srv/samba/backup
sudo chown root:sambashare /srv/samba/backup
sudo chmod 770 /srv/samba/backup

Validasi, Buat User Samba, dan Restart

Validasi syntax konfigurasi
testparm
Tambah user sistem untuk Samba
sudo useradd -M -s /usr/sbin/nologin admin
Set password Samba (terpisah dari password sistem)
sudo smbpasswd -a admin
Restart dan aktifkan Samba
sudo systemctl enable --now smbd
sudo systemctl restart smbd

Note

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 Serversmb://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":

Pasang smbclient dan uji share lokal
sudo apt install smbclient        # atau: sudo dnf install samba-client
List share tanpa login
smbclient -L 192.168.1.10 -U admin
Masuk interaktif ke share
smbclient //192.168.1.10/backup -U admin

Jika 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.

NFS vs Samba: Kapan Memakai yang Mana?

AspekNFSSamba (SMB/CIFS)
Klien targetLinux/Unix (transparan sebagai mount)Windows, macOS, Linux
Performa antar LinuxSangat baik, overhead rendahCukup baik
Keamanan/autentikasiIP/network-based (/etc/exports)User + password, integrasi AD
Konfigurasietc/exports + mountsmb.conf + smbpasswd
Kapan dipakaiStorage antar server, klusterShare 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.

DNS Basics: Bagaimana Nama Menjadi Alamat

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:

  1. /etc/hosts — daftar statis lokal yang diperiksa paling dulu.
  2. /etc/resolv.conf — menunjuk ke resolver (misal systemd-resolved, atau server DNS).
  3. Server DNS remote — hierarki resolver internet (topik episode 17 dengan dig).
/etc/hosts — pemetaan statis
127.0.0.1   localhost
192.168.1.10  nfs-server.lab
192.168.1.11  web-server.lab
/etc/resolv.conf — biasanya symlink ke systemd-resolved
nameserver 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:

Cek resolver systemd
resolvectl status
Uji resolusi nama lokal
getent hosts nfs-server.lab

getent 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".

BIND/named: Ketika Kalian Butuh Server DNS Sendiri

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:

Pasang BIND (Debian/Ubuntu)
sudo apt install bind9
Cek status server DNS
sudo systemctl status named

Konfigurasi 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.

Studi Kasus: Satu Jaringan Lab yang Saling Berbicara

Mari gabungkan semuanya dalam satu skenario nyata. Dua VM: nfs-server.lab (192.168.1.10) dan web-server.lab (192.168.1.11).

  1. Di nfs-server.lab, definisikan export di /etc/exports dan jalankan exportfs -arv.
  2. Buka firewall: ufw allow from 192.168.1.0/24 to any port nfs (dan RPC port).
  3. Di web-server.lab, tambahkan 192.168.1.10 nfs-server.lab ke /etc/hosts.
  4. Uji koneksi: showmount -e nfs-server.lab.
  5. Mount: sudo mount -t nfs nfs-server.lab:/srv/nfs/data /var/www/data.
  6. Sinkronkan fstab dengan opsi _netdev agar mount menunggu jaringan saat boot.
  7. Untuk akses dari Windows/macOS di LAN yang sama, tambahkan share Samba untuk folder yang sama (atau folder terpisah) di 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.

Kesalahan Umum (Common Pitfalls)

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.

Penutup

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:

  • NFS untuk antar Linux; Samba untuk klien desktop Windows/macOS.
  • NFS butuh lebih dari port 2049 — buka layanan RPC di firewall.
  • /etc/hosts dan getent hosts adalah alat debugging resolusi nama pertama.
  • testparm (Samba) dan exportfs -arv (NFS) adalah ritual validasi wajib setelah mengubah konfigurasi.
  • Semua jebakan berbagi file pada akhirnya berkisar pada tiga hal: package, firewall, dan resolusi nama.

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!

Belajar Linux - Network File Sharing (NFS & Samba) & DNS Basics | Belajar Linux