Network File System (NFS) adalah protokol sistem file terdistribusi yang memungkinkan Anda untuk berbagi direktori jarak jauh melalui jaringan. Dengan NFS, Anda dapat memasang direktori jarak jauh di sistem Anda dan bekerja dengan file di mesin jarak jauh seolah-olah itu 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 nama host klien.
Dalam tutorial ini, kita akan membahas cara mengatur Server NFSv4 di Ubuntu 18.04. Kami juga akan menunjukkan cara memasang sistem file NFS pada klien.
Prasyarat #
Contoh ini mengasumsikan bahwa Anda memiliki satu server yang menjalankan Ubuntu 18.04 dan satu lagi menjalankan distribusi Linux lainnya. Server dan klien harus dapat berkomunikasi satu sama lain melalui jaringan pribadi. Jika penyedia hosting Anda tidak menawarkan alamat IP pribadi, Anda dapat menggunakan alamat IP publik dan mengonfigurasi firewall server untuk mengizinkan lalu lintas pada port 2049
hanya dari sumber tepercaya.
Mesin dalam contoh ini memiliki IP berikut:
NFS Server IP: 192.168.33.10
NFS Clients IPs: From the 192.168.33.0/24 range
Siapkan Server NFS #
Kita akan mulai dengan menginstal dan mengkonfigurasi server NFS.
Memasang server NFS #
Refresh indeks paket dan instal paket server NFS:
sudo apt update
sudo apt install nfs-kernel-server
Setelah penginstalan selesai, layanan NFS akan dimulai secara otomatis.
Secara default, pada Ubuntu 18.04 NFS versi 2 dinonaktifkan. Versi 3 dan 4 diaktifkan. Anda dapat memverifikasinya dengan menjalankan cat
berikut:perintah:
sudo cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2
NFSv2 sudah cukup tua sekarang, dan tidak ada alasan untuk mengaktifkannya.
Opsi konfigurasi server NFS diatur di /etc/default/nfs-kernel-server
dan /etc/default/nfs-common
file. Pengaturan default sudah cukup dalam kasus kami.
Membuat sistem file #
Saat mengonfigurasi server NFSv4, praktik yang baik adalah menggunakan direktori root NFS global dan mengikat mount direktori aktual ke titik mount berbagi. Dalam contoh ini, kita akan menggunakan /srv/nfs4
direktori sebagai root NFS.
Kami akan berbagi dua direktori (/var/www
dan /opt/backups
), dengan pengaturan konfigurasi yang berbeda, untuk menjelaskan dengan lebih baik bagaimana pemasangan NFS dapat dikonfigurasi.
Buat sistem file ekspor menggunakan mkdir
perintah:
sudo mkdir -p /srv/nfs4/backups
sudo mkdir -p /srv/nfs4/www
Pasang direktori yang sebenarnya:
sudo mount --bind /opt/backups /srv/nfs4/backups
sudo mount --bind /var/www /srv/nfs4/www
Untuk membuat pengikatan menjadi permanen, buka /etc/fstab
berkas:
sudo nano /etc/fstab
dan tambahkan baris berikut:
/etc/fstab/opt/backups /srv/nfs4/backups none bind 0 0
/var/www /srv/nfs4/www none bind 0 0
Mengekspor sistem file #
Langkah selanjutnya adalah menentukan sistem file yang akan diekspor oleh server NFS, opsi berbagi, dan klien yang diizinkan untuk mengakses sistem file tersebut. Untuk melakukannya buka /etc/exports
berkas:
sudo nano /etc/exports
/etc/exports
file juga berisi komentar yang menjelaskan cara mengekspor direktori.
Dalam kasus kami, kami perlu mengekspor www
dan backups
direktori dan izinkan akses hanya dari klien di 192.168.33.0/24
jaringan:
/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
yang mendefinisikan direktori root NFS /srv/nfs4
. Akses ke volume NFS ini hanya diperbolehkan untuk klien dari 192.168.33.0/24
subjaringan. crossmnt
opsi diperlukan untuk berbagi direktori yang merupakan sub-direktori dari direktori yang diekspor.
Baris kedua menunjukkan cara menentukan beberapa aturan ekspor untuk satu sistem file. Itu mengekspor /srv/nfs4/backups
direktori dan hanya mengizinkan akses baca ke seluruh 192.168.33.0/24
jangkauan dan keduanya membaca dan menulis akses ke 192.168.33.3
. sync
option memberitahu NFS untuk menulis perubahan ke disk sebelum membalas.
Baris terakhir harus cukup 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 mengubah /etc/exports
mengajukan. Jika ada kesalahan atau peringatan, itu akan ditampilkan di terminal.
Untuk melihat ekspor aktif saat ini dan statusnya, gunakan:
sudo exportfs -v
Outputnya akan mencakup semua saham dengan opsi mereka. Seperti yang Anda lihat, ada juga opsi yang belum kami tentukan di /etc/exports
mengajukan. Itu adalah opsi default dan jika Anda ingin mengubahnya, Anda harus menyetel opsi tersebut secara eksplisit.
/srv/nfs4/backups
192.168.33.3(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4/www 192.168.33.110(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4 192.168.33.0/24(rw,wdelay,crossmnt,root_squash,no_subtree_check,fsid=0,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4/backups
192.168.33.0/24(ro,wdelay,root_squash,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)
Di Ubuntu, root_squash
diaktifkan secara default. Ini adalah salah satu opsi terpenting terkait keamanan NFS. Ini mencegah pengguna root yang terhubung dari klien untuk memiliki hak akses root pada share yang dipasang. Ini akan memetakan UID
root root dan GID
untuk nobody
/nogroup
UID
/GID
.
Agar pengguna di mesin klien memiliki akses, NFS mengharapkan pengguna klien dan ID grup untuk mencocokkan dengan yang ada di server. Opsi lainnya adalah menggunakan fitur pemetaan id NFSv4 yang menerjemahkan ID pengguna dan grup menjadi nama dan sebaliknya.
Itu dia. Pada titik ini, Anda telah menyiapkan server NFS di server Ubuntu Anda. Anda sekarang dapat pindah ke langkah berikutnya dan mengonfigurasi klien dan terhubung ke server NFS.
Konfigurasi firewall #
Jika Anda menjalankan firewall di jaringan, Anda harus menambahkan aturan yang akan mengaktifkan lalu lintas di port NFS.
Dengan asumsi Anda menggunakan UFW
untuk mengelola firewall Anda untuk mengizinkan akses dari 192.168.33.0/24
subnet Anda perlu menjalankan perintah berikut:
sudo ufw allow from 192.168.33.0/24 to any port nfs
Untuk memverifikasi perubahan, jalankan:
sudo ufw status
Outputnya harus menunjukkan bahwa lalu lintas pada port 2049
diperbolehkan:
To Action From
-- ------ ----
2049 ALLOW 192.168.33.0/24
22/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
Mengatur Klien NFS #
Sekarang setelah server NFS disiapkan dan share diekspor, langkah selanjutnya adalah mengonfigurasi klien dan memasang sistem file jarak jauh.
Anda juga dapat memasang share NFS pada mesin macOS dan Windows tetapi kami akan fokus pada sistem Linux.
Menginstal klien NFS #
Pada mesin klien, kita hanya perlu menginstal alat yang diperlukan untuk memasang sistem file NFS jarak jauh.
-
Instal klien NFS di Debian dan Ubuntu
Nama paket yang menyertakan program untuk memasang sistem file NFS pada distribusi berbasis Debian adalah
nfs-common
. Untuk menginstalnya jalankan:sudo apt update
sudo apt install nfs-common
-
Instal klien NFS di CentOS dan Fedora
Di Red Hat dan turunannya, instal
nfs-utils
paket:sudo yum install nfs-utils
Memasang sistem file #
Kami akan bekerja pada mesin klien dengan IP 192.168.33.110
yang memiliki akses baca dan tulis ke /srv/nfs4/www
sistem file dan akses hanya baca ke /srv/nfs4/backups
sistem file.
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 mount
perintah:
sudo mount -t nfs -o vers=4 192.168.33.10:/backups /backups
sudo mount -t nfs -o vers=4 192.168.33.10:/www /srv/www
Dimana 192.168.33.10
adalah IP dari server NFS. Anda juga dapat menggunakan nama host alih-alih alamat IP tetapi harus dapat diselesaikan oleh mesin klien. Ini biasanya dilakukan dengan memetakan nama host ke IP di /etc/hosts
berkas.
Saat memasang sistem file NFSv4, Anda harus menghilangkan direktori root NFS, jadi alih-alih /srv/nfs4/backups
anda perlu menggunakan /backups
.
Verifikasi bahwa sistem file jarak jauh berhasil dipasang menggunakan mount atau df
perintah:
df -h
Perintah akan mencetak semua sistem file yang terpasang. Dua baris terakhir adalah bagian yang dipasang:
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00 38G 1.7G 36G 5% /
devtmpfs 236M 0 236M 0% /dev
tmpfs 244M 0 244M 0% /dev/shm
tmpfs 244M 4.5M 240M 2% /run
tmpfs 244M 0 244M 0% /sys/fs/cgroup
/dev/sda2 1014M 87M 928M 9% /boot
tmpfs 49M 0 49M 0% /run/user/1000
192.168.33.10:/backups 9.7G 1.2G 8.5G 13% /backups
192.168.33.10:/www 9.7G 1.2G 8.5G 13% /srv/www
Untuk membuat mount permanen saat reboot, buka /etc/fstab
berkas:
sudo nano /etc/fstab
dan tambahkan baris berikut:
/etc/fstab192.168.33.10:/backups /backups nfs defaults,timeo=900,retrans=5,_netdev 0 0
192.168.33.10:/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, ketik man nfs
di terminal Anda.
Opsi lain untuk memasang sistem file jarak jauh adalah dengan menggunakan autofs
alat atau untuk membuat unit systemd.
Menguji Akses NFS #
Mari kita uji akses ke share dengan membuat file baru di masing-masingnya.
Pertama, coba buat file uji ke /backups
direktori menggunakan touch
perintah:
sudo touch /backups/test.txt
/backup
sistem file diekspor sebagai hanya-baca dan seperti yang diharapkan Anda akan melihat Permission denied
pesan kesalahan:
touch: cannot touch ‘/backups/test’: Permission denied
Selanjutnya, coba buat file uji ke /srv/www
direktori sebagai root menggunakan sudo
perintah:
sudo touch /srv/www/test.txt
Sekali lagi, Anda akan melihat Permission denied
pesan.
touch: cannot touch ‘/srv/www’: Permission denied
Jika Anda mengingat /var/www
direktori dimiliki oleh www-data
pengguna dan bagian ini memiliki root_squash
set opsi yang memetakan pengguna root ke nobody
pengguna dan nogroup
grup yang tidak memiliki izin menulis untuk berbagi jarak jauh.
Dengan asumsi Anda memiliki www-data
gunakan pada mesin klien dengan UID
yang sama dan GID
seperti pada server jarak jauh (yang seharusnya terjadi jika misalnya, Anda menginstal nginxon kedua mesin) Anda dapat menguji untuk membuat file sebagai pengguna www-data
dengan:
sudo -u www-data touch /srv/www/test.txt
Perintah tidak akan menampilkan output yang berarti file berhasil dibuat.
Untuk memverifikasinya, daftarkan file di /srv/www
direktori:
ls -la /srv/www
Outputnya akan menampilkan file yang baru dibuat:
drwxr-xr-x 3 www-data www-data 4096 Jun 23 22:18 .
drwxr-xr-x 3 root root 4096 Jun 23 22:29 ..
-rw-r--r-- 1 www-data www-data 0 Jun 23 21:58 index.html
-rw-r--r-- 1 www-data www-data 0 Jun 23 22:18 test.txt
Melepas Sistem File NFS #
Jika Anda tidak lagi membutuhkan share NFS jarak jauh, Anda dapat meng-unmount-nya seperti sistem file lain yang terpasang menggunakan perintah umount. Misalnya, untuk melepas /backup
bagikan yang akan Anda jalankan:
sudo umount /backups
Jika titik pemasangan ditentukan dalam /etc/fstab
file, pastikan Anda menghapus baris atau mengomentarinya dengan menambahkan #
di awal baris.