GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come installare e configurare un server NFS su Ubuntu 20.04

NFS o Network File System è un protocollo di file system distribuito che consente di condividere directory su una rete. Con NFS, puoi montare directory remote sul tuo sistema e lavorare con i file sulla macchina remota come se fossero file locali.

Per impostazione predefinita, il protocollo NFS non è crittografato e non fornisce l'autenticazione dell'utente. L'accesso al server è limitato dagli indirizzi IP o dai nomi host del client.

Questo articolo spiega come configurare un server NFSv4 su Ubuntu 20.04. Ti mostreremo anche come montare un file system NFS sul computer client.

Prerequisiti #

Useremo due macchine, una che esegue Ubuntu 20.04, che fungerà da server NFS, e un'altra che esegue qualsiasi altra distribuzione Linux su cui monteremo la condivisione. Il server e i client dovrebbero essere in grado di comunicare tra loro su una rete privata. Puoi utilizzare indirizzi IP pubblici e configurare il firewall del server per consentire il traffico sulla porta 2049 solo da fonti attendibili.

Le macchine in questo esempio hanno i seguenti IP:

NFS Server IP: 192.168.33.10
NFS Clients IPs: From the 192.168.33.0/24 range

Configura il server NFS #

Il primo passo è configurare il server NFS. Installeremo i pacchetti necessari, creeremo ed esporteremo le directory NFS e configureremo il firewall.

Installazione del server NFS #

Il pacchetto del server NFS fornisce il supporto dello spazio utente necessario per eseguire il server del kernel NFS. Per installare il pacchetto, esegui:

sudo apt updatesudo apt install nfs-kernel-server

Una volta completata l'installazione, i servizi NFS verranno avviati automaticamente.

Su Ubuntu 20.04, NFS versione 2 è disabilitata. Le versioni 3 e 4 sono abilitate. Puoi verificarlo eseguendo il seguente cat comando:

sudo cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2

NFSv2 è piuttosto vecchio ora e non c'è motivo per abilitarlo.

La configurazione del server NFS è definita in /etc/default/nfs-kernel-server e /etc/default/nfs-common File. Le impostazioni predefinite sono sufficienti per la maggior parte delle situazioni.

Creazione dei file system #

Il server NFSv4 utilizza una directory radice globale e le directory esportate sono relative a questa directory. Puoi collegare il punto di montaggio della condivisione alle directory che desideri esportare utilizzando i montaggi di collegamento.

In questo esempio, imposteremo il /srv/nfs4 directory come radice NFS. Per spiegare meglio come configurare i mount NFS, condivideremo due directory (/var/www e /opt/backups ) con diverse impostazioni di configurazione. Il /var/www/ è di proprietà dell'utente www-data e /opt/backups è di proprietà di root .

Per prima cosa crea la directory principale e i punti di montaggio della condivisione:

sudo mkdir -p /srv/nfs4/backupssudo mkdir -p /srv/nfs4/www

Associa il montaggio delle directory ai punti di montaggio della condivisione:

sudo mount --bind /opt/backups /srv/nfs4/backupssudo mount --bind /var/www /srv/nfs4/www

Per rendere permanenti i mount di binding durante i riavvii, apri il /etc/fstab file:

sudo nano /etc/fstab

e aggiungi le seguenti righe:

/etc/fstab
/opt/backups /srv/nfs4/backups  none   bind   0   0
/var/www     /srv/nfs4/www      none   bind   0   0

Esportazione dei file system #

Il passaggio successivo consiste nell'aggiungere i file system che verranno esportati e i client autorizzati ad accedere a tali condivisioni a /etc/exports file.

Ciascuna riga di un file system esportato ha la forma seguente:

export host(options)

Dove export è la directory esportata, host è un nome host o un indirizzo IP/intervallo che può accedere all'esportazione e alle options sono le opzioni host.

Apri il /etc/exports file e aggiungi le seguenti righe:

sudo nano /etc/exports
/etc/exports
/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.20(rw,sync,no_subtree_check)

La prima riga contiene il fsid=0 opzione, che definisce la directory radice NFS (/srv/nfs4 ). L'accesso a questo volume NFS è consentito solo ai client dal 192.168.33.0/24 sottorete. Il crossmnt l'opzione è richiesta per condividere le directory che sono sottodirectory di una directory esportata.

La seconda riga mostra come specificare più regole di esportazione per un filesystem. L'accesso in lettura è consentito all'intero 192.168.33.0/24 intervallo e accesso in lettura e scrittura solo al 192.168.33.3 Indirizzo IP. La sync opzione dice a NFS di scrivere le modifiche sul disco prima di rispondere.

L'ultima riga è autoesplicativa. Per maggiori informazioni su tutte le opzioni disponibili digita man exports nel tuo terminale.

Salva il file ed esporta le condivisioni:

sudo exportfs -ar

Devi eseguire il comando sopra ogni volta che modifichi /etc/exports file. Eventuali errori o avvisi verranno visualizzati sul terminale.

Per visualizzare le esportazioni attive correnti e il loro stato, utilizzare:

sudo exportfs -v

L'output includerà tutte le condivisioni con le relative opzioni. Come puoi vedere ci sono anche opzioni che non abbiamo definito in /etc/exports file. Queste sono opzioni predefinite e se vuoi cambiarle dovrai impostare esplicitamente tali opzioni.

/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.20(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)

Su Ubuntu, root_squash è abilitato per impostazione predefinita. Questa è una delle opzioni più importanti per quanto riguarda la sicurezza NFS. Impedisce agli utenti root connessi dai client di avere privilegi di root sulle condivisioni montate mappando UID root e GID a nobody /nogroup UID /GID .

Affinché gli utenti sulle macchine client abbiano accesso, NFS prevede che gli ID utente e gruppo del client corrispondano a quelli sul server. Un'altra opzione consiste nell'utilizzare la funzione di mappatura id NFSv4 che traduce gli ID di utenti e gruppi in nomi e viceversa.

Questo è tutto. A questo punto, hai impostato un server NFS sul tuo server Ubuntu. Ora puoi passare al passaggio successivo e configurare i client e connetterti al server NFS.

Configurazione firewall #

Se stai installando Jenkins su un server Ubuntu remoto protetto da un firewall, dovrai abilitare il traffico sulla porta NFS:

sudo ufw allow from 192.168.33.0/24 to any port nfs

Verifica la modifica:

sudo ufw status

L'output dovrebbe mostrare che il traffico sulla porta 2049 è consentito:

To                         Action      From
--                         ------      ----
2049                       ALLOW       192.168.33.0/24           
22/tcp                     ALLOW       Anywhere                  
22/tcp (v6)                ALLOW       Anywhere (v6)  

Configura i client NFS #

Ora che il server NFS è configurato e le condivisioni vengono esportate, il passaggio successivo consiste nel configurare i client e montare i file system remoti.

Ci concentreremo sui sistemi Linux, ma puoi anche montare la condivisione NFS su macchine macOS e Windows.

Installazione del client NFS #

Sulle macchine client, dobbiamo installare solo gli strumenti necessari per montare un file system NFS remoto.

  • Installa il client NFS su Debian e Ubuntu

    Il nome del pacchetto che include programmi per il montaggio di file system NFS su distribuzioni basate su Debian è nfs-common . Per installarlo, esegui:

    sudo apt updatesudo apt install nfs-common
  • Installa il client NFS su CentOS e Fedora

    Su Red Hat e le sue derivate, installa nfs-utils pacchetto:

    sudo yum install nfs-utils

Montaggio dei file system #

Lavoreremo sulla macchina client con IP 192.168.33.20 , che ha accesso in lettura e scrittura a /srv/nfs4/www file system e accesso in sola lettura a /srv/nfs4/backups sistema di file.

Crea due nuove directory per i punti di montaggio:

sudo mkdir -p /backupssudo mkdir -p /srv/www

Puoi creare le directory in qualsiasi posizione desideri.

Monta i file system esportati con mount comando:

sudo mount -t nfs -o vers=4 192.168.33.10:/backups /backupssudo mount -t nfs -o vers=4 192.168.33.10:/www /srv/www

Dove 192.168.33.10 è l'IP del server NFS. Puoi anche utilizzare il nome host invece dell'indirizzo IP, ma deve essere risolvibile dalla macchina client. Questo di solito viene fatto mappando il nome host sull'IP in /etc/hosts file.

Quando si monta un filesystem NFSv4, omettere la directory radice NFS. Usa /backups , invece di /srv/nfs4/backups .

Verificare che i file system remoti siano montati correttamente utilizzando mount o df comando:

df -h

Il comando stamperà tutti i file system montati. Le ultime due righe sono le condivisioni montate:

Filesystem              Size  Used Avail Use% Mounted on
udev                    951M     0  951M   0% /dev
tmpfs                   199M  676K  199M   1% /run
/dev/sda3               124G  2.8G  115G   3% /
tmpfs                   994M     0  994M   0% /dev/shm
tmpfs                   5.0M     0  5.0M   0% /run/lock
tmpfs                   994M     0  994M   0% /sys/fs/cgroup
/dev/sda1               456M  197M  226M  47% /boot
tmpfs                   199M     0  199M   0% /run/user/1000
192.168.33.10:/backups  124G  2.8G  115G   3% /backups
192.168.33.10:/www      124G  2.8G  115G   3% /srv/www

Per rendere permanenti i mount al riavvio, apri /etc/fstab file e aggiungi le seguenti righe::

sudo nano /etc/fstab
/etc/fstab
192.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

Per informazioni sulle opzioni disponibili durante il montaggio di un file system NFS, digitare man nfs nel tuo terminale.

Un'altra opzione per montare file system remoti consiste nell'usare autofs strumento o per creare un'unità systemd.

Test dell'accesso NFS #

Testiamo l'accesso alle condivisioni creando un nuovo file su ciascuna di esse.

Per prima cosa, prova a creare un file di prova in /backups directory utilizzando il touch comando:

sudo touch /backups/test.txt

Il /backups il file system viene esportato in sola lettura e, come previsto, vedrai un Permission denied messaggio di errore:

touch: cannot touch ‘/backups/test’: Permission denied

Quindi, prova a creare un file di prova in /srv/www directory come root usando sudo comando:

sudo touch /srv/www/test.txt

Di nuovo, vedrai Permission denied messaggio.

touch: cannot touch ‘/srv/www’: Permission denied

Se ricordi, il /var/www directory è di proprietà di www-data utente e questa condivisione ha root_squash set di opzioni che associa l'utente root a nobody utente e nogroup gruppo che non dispone delle autorizzazioni di scrittura per la condivisione remota.

Supponendo che tu abbia un www-data utilizzare sulla macchina client con lo stesso UID e GID come sul server remoto (che dovrebbe essere il caso se, ad esempio, hai installato nginxon su entrambe le macchine), puoi provare a creare un file come utente www-data :

sudo -u www-data touch /srv/www/test.txt

Il comando non mostrerà alcun output, il che significa che il file è stato creato correttamente.

Per verificarlo elenca i file nel /srv/www directory:

ls -la /srv/www

L'output dovrebbe mostrare il file appena creato:

drwxr-xr-x 3 www-data www-data 4096 Apr 10 22:18 .
drwxr-xr-x 3 root     root     4096 Apr 10 22:29 ..
-rw-r--r-- 1 www-data www-data    0 Apr 10 21:58 index.html
-rw-r--r-- 1 www-data www-data    0 Apr 10 22:18 test.txt

Smontaggio del file system NFS #

Se la condivisione NFS remota non è più necessaria, puoi smontarla come qualsiasi altro file system montato usando umount comando.

Ad esempio, per smontare il /backups condividi, eseguiresti:

sudo umount /backups

Se il punto di montaggio è definito in /etc/fstab file, assicurati di rimuovere la riga o di commentarla aggiungendo # all'inizio della riga.


Ubuntu
  1. Come installare e configurare VNC su Ubuntu 20.04

  2. Come configurare un server NFS e montare condivisioni NFS su Ubuntu 14.10

  3. Come installare e configurare Algo VPN Server su Ubuntu 20.04

  4. Come installare e configurare il server DHCP su Ubuntu 20.04

  5. Come installare e configurare il server Redis in Ubuntu

Come installare e configurare il server OpenLDAP su Ubuntu 16.04

Come installare e configurare VNC su Ubuntu Server 20.04

Come installare e configurare Parse Server su Ubuntu 20.04

Come installare e configurare un TeamSpeak Server su Ubuntu 18.04

Come installare e configurare un server Minecraft su Ubuntu 18.04

Come installare e configurare un server NFS Ubuntu Linux