Network File System (NFS) adalah protokol file sistem terdistribusi yang memungkinkan Anda untuk berbagi direktori melalui jaringan. Dengan NFS, Anda dapat memasang direktori jarak jauh di sistem Anda dan bekerja dengan file jarak jauh seolah-olah file tersebut adalah file lokal.
Protokol NFS tidak dienkripsi secara default, dan tidak seperti Samba, protokol ini tidak menyediakan otentikasi pengguna. Akses ke server dibatasi oleh alamat IP atau hostnames klien.
Dalam tutorial ini, Anda akan melalui langkah-langkah yang diperlukan untuk menyiapkan NFSv4 Server di CentOS 8. Kami juga akan menunjukkan kepada Anda cara mount NFS file system pada klien.
Prasyarat
Kami berasumsi bahwa Anda memiliki server yang menjalankan CentOS 8 di mana kami akan menyiapkan NFS server dan mesin lain yang akan bertindak sebagai NFS clients.
Server dan klien harus dapat berkomunikasi satu sama lain melalui private network. Jika penyedia hosting Anda tidak menawarkan atau memberikan alamat private IP, Anda dapat menggunakan alamat IP public dan mengkonfigurasi firewall server untuk mengizinkan lalu lintas di port 2049 hanya dari sumber tepercaya.
Mesin dalam contoh ini memiliki IP berikut:
NFS Server IP: 192.168.33.148 NFS Clients IP: Rentang IP 192.168.33.0/24
Set Up NFS Server di CentOS 8
Bagian ini menjelaskan cara install paket yang diperlukan, membuat dan mengekspor direktori NFS, dan mengkonfigurasi firewall.
Install NFS server
Paket “nfs-utils” menyediakan utilitas dan NFS daemon untuk NFS server. Untuk menginstalnya jalankan perintah berikut:
sudo dnf install nfs-utils
Setelah instalasi selesai, aktifkan dan mulai layanan NFS dengan mengetik:
sudo systemctl enable --now nfs-server
Secara default, pada CentOS 8 NFS versi 3 dan 4.x diaktifkan, versi 2 dinonaktifkan. NFSv2 sudah cukup usang sekarang, dan tidak ada alasan untuk mengaktifkannya. Untuk memverifikasinya jalankan perintah cat
berikut:
sudo cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2
Opsi konfigurasi NFS server diatur dalam file /etc/nfsmount.conf
dan /etc/nfs.conf
. Pengaturan default sudah cukup baik untuk menjalankan NFS Server.
Membuat file sistem
Ketika mengkonfigurasi NFSv4 server, merupakan praktik terbaik menggunakan direktori root NFS global dan bind mount direktori sebenarnya ke mount point share. Dalam contoh ini, kita akan menggunakan direktory /srv/nfs4
sebagai root NFS.
Untuk lebih menjelaskan bagaimana NFS mounts dapat dikonfigurasi, kami akan membagikan dua direktori (/var/www
dan /opt/backups
) dengan pengaturan konfigurasi yang berbeda.
Untuk direktori /var/www/
dimiliki oleh user
dengan group apache
dan /opt/backups
dimiliki oleh root.
Buat filesystem ekspor menggunakan perintah mkdir
:
sudo mkdir -p /srv/nfs4/{backups,www}
Mount direktori yang sebenarnya:
sudo mount --bind /opt/backups /srv/nfs4/backups sudo mount --bind /var/www /srv/nfs4/www
Untuk membuat bind mounts menjadi permanen, tambahkan entri berikut ke file /etc/fstab
:
sudo nano /etc/fstab
/opt/backups /srv/nfs4/backups none bind 0 0 /var/www /srv/nfs4/www none bind 0 0
Mengekspor file systems
Langkah selanjutnya adalah menentukan file systems yang akan diekspor oleh NFS server , opsi share dan klien yang diizinkan untuk mengakses file systems tersebut. Untuk melakukannya, buka file /etc/exports
:
sudo nano /etc/exports
Ekspor direktori www
dan backups
dan izinkan akses hanya dari klien di jaringan 192.168.33.0/24
:
/srv/nfs4 192.168.33.0/24(rw,sync,no_subtree_check,crossmnt,fsid=0) /srv/nfs4/backups 192.168.33.0/24(ro,sync,no_subtree_check) 192.168.33.3(rw,sync,no_subtree_check) /srv/nfs4/www 192.168.33.110(rw,sync,no_subtree_check)
Baris pertama berisi fsid=0
mendefinisikan direktori root NFS /srv/nfs
. Akses pada volume NFS ini hanya diizinkan untuk klien dari subnet 192.168.33.0/24
. Opsi crossmnt
diperlukan untuk berbagi direktori yang merupakan sub-direktori dari direktori yang diekspor.
Baris kedua menunjukkan bagaimana menentukan beberapa aturan ekspor untuk satu sistem file. Ia mengekspor direktori /srv/nfs4/backups
dan hanya mengizinkan akses read ke seluruh rentang IP 192.168.33.0/24
, dan keduanya memiliki akses read and write ke 192.168.33.3
.
Opsi sync
memberitahu NFS untuk menulis perubahan ke disk sebelum menjawab. Baris terakhir harus jelas. Untuk informasi lebih lanjut tentang semua opsi yang tersedia, ketik man exports
di terminal Anda.
Simpan file dan ekspor share:
sudo exportfs -ra
Anda perlu menjalankan perintah di atas setiap kali Anda memodifikasi file /etc/exports
. Jika ada kesalahan atau peringatan, mereka akan ditampilkan di terminal.
Untuk melihat active exports saat ini dan kondisinya, gunakan:
sudo exportfs -v
Output akan mencakup semua shares dengan opsi mereka. Seperti yang Anda lihat, ada juga opsi yang belum kami definisikan di file /etc/exports
. Itu adalah opsi default, dan jika Anda ingin mengubahnya, Anda harus mengatur opsi itu secara jelas.
/srv/nfs4/backups 192.168.33.3(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash) /srv/nfs4/www 192.168.33.110(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash) /srv/nfs4 192.168.33.0/24(sync,wdelay,hide,crossmnt,no_subtree_check,fsid=0,sec=sys,rw,secure,root_squash,no_all_squash) /srv/nfs4/backups 192.168.33.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)
root_squash
adalah salah satu opsi paling penting tentang keamanan NFS. Ini mencegah pengguna root yang terhubung dari klien untuk memiliki hak akses root pada shares yang dipasang (remote server). Ini juga akan memetakan root UID
dan GID
ke nobody
/nogroup
UID
/GID
Agar pengguna di mesin klien memiliki akses, NFS mengharapkan pengguna dan ID grup klien agar cocok dengan yang ada di server. Pilihan lain adalah menggunakan fitur idmapping NFSv4 yang menerjemahkan user dan grup ID menjadi nama dan sebaliknya.
Pada poin ini, Anda telah menyiapkan NFS server di server CentOS. Anda sekarang dapat pindah ke langkah berikutnya dan mengkonfigurasi klien dan terhubung ke server NFS.
Konfigurasi firewall
FirewallD adalah solusi firewall default di Centos 8.
Layanan NFS mencakup aturan yang telah ditentukan untuk mengizinkan akses ke server NFS.
Perintah berikut secara permanen akan memungkinkan akses dari subnet 192.168.33.0/24
:
sudo firewall-cmd --new-zone=nfs --permanent sudo firewall-cmd --zone=nfs --add-service=nfs --permanent sudo firewall-cmd --zone=nfs --add-source=192.168.33.0/24 --permanent sudo firewall-cmd --reload
Setup NFS Client
Sekarang setelah NFS server diatur dan direktori share diekspor, langkah selanjutnya mengonfigurasi klien dan mount remote file systems.
Anda juga dapat mount NFS share di macOS dan Windows, tetapi kami akan fokus pada sistem Linux.
Menginstal NFS client
Pada mesin klien, instal tool yang diperlukan untuk memasang sistem file NFS jarak jauh.
- Install NFS client on Debian and Ubuntu
Nama paket yang diperlukan untuk memasang NFS file systems pada distribusi berbasis Debian adalahnfs-common
. Untuk menginstalnya jalankan:sudo apt update sudo apt install nfs-common
- Install NFS client on CentOS and Fedora
Pada Redhat dan turunannya, install paketnfs-utils
:sudo yum install nfs-utils
Cara Mounting file systems
Kita akan bekerja pada mesin client dengan IP 192.168.33.110
, yang memiliki akses read and write ke sistem file /srv/nfs4/www
dan akses read-only ke sistem file /srv/nfs4/backups
.
Buat dua direktori baru untuk mount point. Anda dapat membuat direktori ini di lokasi mana pun yang Anda inginkan.
sudo mkdir -p /backups sudo mkdir -p /srv/www
Pasang sistem file yang diekspor dengan perintah mount
:
sudo mount -t nfs -o vers=4 192.168.33.148:/backups /backups sudo mount -t nfs -o vers=4 192.168.33.148:/www /srv/www
Di mana 192.168.33.148
adalah IP dari NFS server. Anda juga dapat menggunakan hostname alih-alih alamat IP, tetapi perlu resolvable oleh mesin klien. Ini biasanya dilakukan dengan memetakan hostname ke IP di file /etc/hosts
.
Saat memasang sistem file NFSv4, Anda perlu menghilangkan direktori root NFS, jadi alih-alih /srv/nfs4/backups
Anda harus menggunakan /backups
.
Pastikan sistem file jarak jauh berhasil dipasang menggunakan perintah mount atau perintah df
:
df -h
Perintah akan mencetak semua sistem file yang dipasang. Dua baris terakhir adalah share yang dipasang:
... 192.168.33.148:/backups 9.7G 1.2G 8.5G 13% /backups 192.168.33.148:/www 9.7G 1.2G 8.5G 13% /srv/www
Untuk membuat mounts permanen pada reboot, buka file /etc/fstab
sudo nano /etc/fstab
dan tambahkan baris berikut:
192.168.33.148:/backups /backups nfs defaults,timeo=900,retrans=5,_netdev 0 0 192.168.33.148:/www /srv/www nfs defaults,timeo=900,retrans=5,_netdev 0 0
Untuk menemukan informasi lebih lanjut tentang opsi yang tersedia saat memasang sistem file NFS, ketikkan man nfs
di terminal Anda.
Opsi lain untuk memasang sistem file jarak jauh adalah menggunakan tool autofs
atau untuk membuat unit systemd.
Menguji Akses NFS
Mari kita uji akses ke share dengan membuat file baru di masing-masing.
Pertama, cobalah untuk membuat file uji ke direktori /backup
menggunakan perintah touch
:
sudo touch /backups/test.txt
Sistem file /backup
diekspor sebagai hanya-baca, dan seperti yang diharapkan Anda akan melihat pesan kesalahan Permission denied
:
touch: cannot touch ‘/backups/test’: Permission denied
Selanjutnya, cobalah untuk membuat file uji ke direktori /srv/www
sebagai root menggunakan perintah sudo
:
sudo touch /srv/www/test.txt
Sekali lagi, Anda akan melihat pesan Izin ditolak (Permission denied
).
touch: cannot touch ‘/srv/www’: Permission denied
Direktori /var/www
dimiliki oleh user apache, dan share memiliki set opsi root_squash
, yang memetakan pengguna root ke grup nobody
dan grup nogroup
yang tidak memiliki izin write (menulis) ke share jarak jauh.
Dengan asumsi bahwa user apache ada pada mesin klien dengan UID dan GID yang sama seperti pada server jarak jauh, Anda dapat menguji untuk membuat file sebagai user apache
dengan:
sudo -u apache touch /srv/www/test.txt
Perintah tidak akan menampilkan output, yang berarti file berhasil dibuat.
Untuk memverifikasi daftar file dalam direktori /srv/www
:
ls -la /srv/www
Output akan menampilkan file yang baru dibuat:
drwxr-xr-x 3 apache apache 4096 Jun 23 22:18 . drwxr-xr-x 3 root root 4096 Jun 23 22:29 .. -rw-r--r-- 1 apache apache 0 Jun 23 21:58 index.html -rw-r--r-- 1 apache apache 0 Jun 23 22:18 test.txt
Cara Lepas (Unmounting) NFS File System
Jika Anda tidak lagi membutuhkan emote NFS share, Anda dapat melepasnya sama seperti sebagai melepas file drive yang terpasang menggunakan perintah umount. Misalnya, untuk meng-unmount bagian /backup
yang Anda jalankan:
sudo umount /backups
Jika titik mount didefinisikan dalam file /etc/fstab
, pastikan Anda menghapus baris atau memberi comment dengan menambahkan #
di awal baris.
Kesimpulan
Dalam tutorial ini, kami telah menunjukkan kepada Anda cara mengatur NFS server dan cara memasang remote file systems pada mesin klien. Jika Anda menerapkan NFS dalam produksi atau untuk berbagi data, merupakan ide bagus untuk mengaktifkan otentikasi kerberos.
Sebagai alternatif NFS, Anda dapat menggunakan SSHFS untuk mount direktori jarak jauh melalui koneksi SSH. SSHFS dienkripsi secara default dan jauh lebih mudah untuk dikonfigurasi dan digunakan.