GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come installare e configurare un server NFS su Ubuntu 18.04

Network File System (NFS) è un protocollo di file system distribuito che consente di condividere directory remote 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.

Il protocollo NFS non è crittografato per impostazione predefinita e, a differenza di Samba, non fornisce l'autenticazione dell'utente. L'accesso al server è limitato dagli indirizzi IP o dai nomi host dei client.

In questo tutorial, esamineremo come configurare un server NFSv4 su Ubuntu 18.04. Ti mostreremo anche come montare un file system NFS sul client.

Prerequisiti #

Questo esempio presuppone che tu abbia un server che esegue Ubuntu 18.04 e un altro che esegue qualsiasi altra distribuzione Linux. Il server e i client dovrebbero essere in grado di comunicare tra loro su una rete privata. Se il tuo provider di hosting non offre indirizzi IP privati, puoi utilizzare gli 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 #

Inizieremo installando e configurando il server NFS.

Installazione del server NFS #

Aggiorna l'indice dei pacchetti e installa il pacchetto del server NFS:

sudo apt updatesudo apt install nfs-kernel-server

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

Per impostazione predefinita, su Ubuntu 18.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.

Le opzioni di configurazione del server NFS sono impostate in /etc/default/nfs-kernel-server e /etc/default/nfs-common File. Le impostazioni predefinite sono sufficienti nel nostro caso.

Creazione dei file system #

Quando si configura un server NFSv4, è buona norma utilizzare una directory radice NFS globale e associare il montaggio delle directory effettive al punto di montaggio della condivisione. In questo esempio useremo il /srv/nfs4 directory come radice NFS.

Condivideremo due directory (/var/www e /opt/backups ), con diverse impostazioni di configurazione, per spiegare meglio come configurare i supporti NFS.

Crea il filesystem di esportazione usando mkdir comando:

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

Monta le directory effettive:

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

Per rendere permanenti i mount di binding, 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 nel definire i file system che verranno esportati dal server NFS, le opzioni di condivisione ei client a cui è consentito accedere a tali file system. Per farlo, apri il /etc/exports file:

sudo nano /etc/exports
Il /etc/exports file contiene anche commenti che descrivono come esportare una directory.

Nel nostro caso dobbiamo esportare il www e backups directory e consentire l'accesso solo ai client su 192.168.33.0/24 rete:

/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.110(rw,sync,no_subtree_check)

La prima riga contiene fsid=0 che definiscono 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. Esporta il /srv/nfs4/backups directory e consente solo l'accesso in lettura all'intero 192.168.33.0/24 range e accesso in lettura e scrittura a 192.168.33.3 . La sync opzione dice a NFS di scrivere le modifiche sul disco prima di rispondere.

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

Salva il file ed esporta le condivisioni:

sudo exportfs -ra

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

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. Mapperà UID radice 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 esegui un firewall sulla tua rete, dovrai aggiungere una regola che abiliti il ​​traffico sulla porta NFS.

Supponendo che tu stia usando UFW per gestire il firewall per consentire l'accesso dal 192.168.33.0/24 subnet devi eseguire il seguente comando:

sudo ufw allow from 192.168.33.0/24 to any port nfs

Per verificare la modifica esegui:

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.

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

Installazione del client NFS #

Sulle macchine client è necessario 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 sui suoi derivati ​​installa nfs-utils pacchetto:

    sudo yum install nfs-utils

Montaggio dei file system #

Lavoreremo sulla macchina client con IP 192.168.33.110 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. Puoi creare queste directory in qualsiasi posizione desideri.

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

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, è necessario omettere la directory radice NFS, quindi invece di /srv/nfs4/backups devi usare /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
/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

Per rendere permanenti i mount al riavvio, apri /etc/fstab file:

sudo nano /etc/fstab

e aggiungi le seguenti righe:

/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 trovare maggiori informazioni sulle opzioni disponibili durante il montaggio di un file system NFS, digitare man nfs nel tuo terminale.

Un'altra opzione per montare i 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 /backup 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 con:

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

Smontaggio del file system NFS #

Se non hai più bisogno della condivisione NFS remota, puoi smontarla come qualsiasi altro file system montato usando il comando umount. Ad esempio, per smontare il /backup condividere che 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 un server NFS 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