Ricerca nel sito web

Come impostare un montaggio NFS su Rocky Linux 8


Su questa pagina

  1. Prerequisiti
  2. Passaggio 1 - Installa NFS sull'host e sul client
  3. Passaggio 2: crea le directory di condivisione sull'host
    1. Lavorare con un supporto per uso generico
    2. Lavorare con la home directory

    1. Testare la condivisione per scopi generici
    2. Testare la condivisione della home directory

    Network File System o NFS è un protocollo di file system distribuito che consente agli host remoti di montare file system su una rete ed eseguire operazioni sui file come se fossero montati localmente. Ciò è particolarmente utile quando si desidera condividere le risorse da un server su più client o consentire a più client di scrivere su un singolo spazio di archiviazione.

    In questo tutorial imparerai come installare e configurare il server NFS e i client NFS basati su Rocky Linux 8. Per questo, configureremo un host o un server per condividere file e un client per accedere ai file host utilizzando un montaggio NFS .

    Prerequisiti

    • Due server Rocky Linux 8. Ognuno di questi dovrebbe avere un utente non root con privilegi sudo.
    • Sia l'host che il client devono avere un indirizzo IP statico. Puoi persino configurare entrambi su una rete privata. Per il nostro tutorial, useremo host_ip per indicare l'indirizzo IP degli host e client_ip per fare riferimento all'indirizzo IP dei client.

    Passaggio 1: installare NFS sull'host e sul client

    Ospite

    Per installare i pacchetti NFS, devi installare il pacchetto nfs-utils. Fornisce un demone per il server NFS e gli strumenti correlati.

    Installa il pacchetto.

    $ sudo dnf install nfs-utils
    

    Abilita e avvia il servizio nfs-server. Servizi rimanenti necessari per il montaggio e la condivisione NFS come nfsd, nfs-idmapd, rpcbind, rpc.mountd, lockd, rpc.statd, rpc.quotad e rpc.idmapd si avviano automaticamente insieme a esso.

    $ sudo systemctl enable nfs-server --now
    

    Verificare la versione dell'installazione NFS.

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

    Le versioni NFS 3 e 4 sono abilitate per impostazione predefinita e la versione 2 è disabilitata. NFSv2 è piuttosto vecchio e obsoleto, quindi puoi vedere il segno -ve davanti.

    NFS salva le sue configurazioni nei file /etc/nfsmount.conf e /etc/nfs.conf. /etc/nfsmount.conf serve per configurare i montaggi NFS mentre /etc/nfs.conf serve per configurare il demone NFS e gli strumenti associati. Le impostazioni predefinite sono sufficienti per il nostro tutorial e non è richiesta alcuna modifica.

    Cliente

    Sul client, installa i pacchetti nfs-utils e nfs4-acl-tools.

    $ sudo dnf install nfs-utils nfs4-acl-tools
    

    Passaggio 2: creare le directory di condivisione sull'host

    Useremo due esempi con diverse impostazioni di configurazione: uno con un montaggio generico e uno condividendo la home directory degli host.

    Le directory montate NFS non fanno parte del client. Pertanto, NFS non può eseguire attività che richiedono privilegi di superutente su di essi. Significa che il client non può cambiare proprietà, scrivere su di essi come utente root o eseguire attività di alto livello. Tuttavia, ci sono casi in cui un utente fidato sul client deve eseguire tali attività senza richiedere l'accesso come superutente sull'host. Il server NFS può essere configurato per consentire ciò, ma è a rischio quando un client può accedere all'host.

    Lavorare con un supporto per uso generico

    Per il nostro primo caso, creeremo un semplice montaggio che utilizza il comportamento NFS predefinito, il che significa che il client non può eseguire attività che richiedono privilegi di superutente.

    Crea una directory di condivisione.

    host:$ sudo mkdir /var/nfs/share -p
    

    L'utente root hosts sarà proprietario di questa directory poiché abbiamo utilizzato sudo per crearla.

    host:$ ls -l /var/nfs
    total 0
    drwxr-xr-x. 2 root root 6 Dec 13 07:30 share
    

    NFS tradurrà tutte le operazioni di root sul lato client nelle credenziali nobody:nobody per motivi di sicurezza. Pertanto, dobbiamo abbinarli sul lato host.

    host:$ sudo chown nobody:nobody /var/nfs/general
    

    Lavorare con la home directory

    Per il nostro secondo caso, metteremo a disposizione del client la home directory sull'host. Non abbiamo bisogno di crearlo poiché esiste già. Non è necessario modificare alcuna autorizzazione in quanto influirebbe sugli utenti sulla macchina host.

    Passaggio 3: configurazione delle esportazioni NFS sull'host

    Apri il file /etc/exports sulla macchina Host per la modifica.

    host:$ sudo nano /etc/exports
    

    Incollare il seguente codice nel file.

    /var/nfs/share      client_ip(rw,sync,no_subtree_check)
    /home               client_ip(rw,sync,no_root_squash,no_subtree_check)
    

    Ogni directory e la relativa configurazione devono trovarsi su una riga separata. Sostituisci il valore client_ip con l'effettivo indirizzo IP della macchina client.

    Esaminiamo tutte le opzioni per le esportazioni NFS.

    • rw - fornisce alla macchina client l'accesso in lettura e scrittura sul volume NFS.
    • sync - questa opzione obbliga NFS a scrivere le modifiche sul disco prima di rispondere. Questa opzione è considerata più affidabile. Tuttavia, riduce anche la velocità delle operazioni sui file.
    • no_subtree_check - questa opzione impedisce il controllo della sottostruttura, un processo in cui l'host deve verificare se il file è disponibile insieme ai permessi per ogni richiesta. Può anche causare problemi quando un file viene rinominato sull'host mentre è ancora aperto sul client. Disabilitarlo migliora l'affidabilità di NFS.
    • no_root_squash - Per impostazione predefinita, NFS traduce le richieste da un utente root sul client in un utente non privilegiato sull'host. Questa opzione disabilita tale comportamento e deve essere utilizzata con attenzione per consentire al client di ottenere l'accesso all'host.

    Una volta terminato, salva il file premendo Ctrl + X e inserendo Y quando richiesto.

    Per esportare le condivisioni, eseguire il seguente comando.

    host:$ sudo exportfs -arv
    exporting client_ip:/home
    exporting client_ip:/var/nfs/share
    

    • -a - questa opzione fa sì che tutte le directory vengano esportate.
    • -r - questa opzione fa sì che tutte le directory vengano esportate costruendo un nuovo elenco nella directory /var/lib/nfs/etab. Questa opzione viene utilizzata per aggiornare l'elenco di esportazione con qualsiasi modifica apportata a /etc/exports.
    • -v - abilita l'output dettagliato.

    Per elencare tutte le directory esportate, eseguire il seguente comando. Mostrerà tutte le opzioni, incluse quelle predefinite che non sono state specificate nel file /etc/exports.

    host:$ sudo exportfs -s
    /var/nfs/share  client_ip(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
    /home  client_ip(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
    

    Passaggio 4: configurazione del firewall sull'host

    Rocky Linux utilizza Firewalld Firewall. Controlla lo stato dei firewall.

    host:$ sudo firewall-cmd --state
    running
    

    Ciò indica che è attivo e funzionante correttamente.

    Il firewall funziona con zone diverse e la zona pubblica è quella predefinita che utilizzeremo. Elenca tutti i servizi e le porte attive sul firewall.

    host:$ sudo firewall-cmd --permanent --list-services
    

    Dovrebbe mostrare il seguente output.

    cockpit dhcpv6-client ssh
    

    Successivamente, dobbiamo consentire il traffico ai servizi NFS necessari: mountd, nfs e rpc-bind . Dobbiamo anche consentire l'accesso dall'IP del client. Se i client e i server host si trovano nella stessa sottorete, non è necessario aggiungere l'indirizzo IP del client.

    host:$ sudo firewall-cmd --permanent --add-service=nfs
    host:$ sudo firewall-cmd --permanent --add-service=rpc-bind
    host:$ sudo firewall-cmd --permanent --add-service=mountd
    host:$ sudo firewall-cmd --permanent --add-source=client_IP 
    

    Ricarica il firewall per applicare le modifiche.

    host:$ sudo firewall-cmd --reload
    

    Passaggio 5: creazione di punti di montaggio e directory sul client

    Ora che il server/host NFS è configurato, il passaggio successivo consiste nell'impostare i punti di montaggio e le directory sul client. È possibile eseguire il comando showmount sul client per controllare l'elenco dei file system esportati sull'host.

    client:$ showmount -e host_ip
    Export list for host_ip:
    /home          host_ip
    /var/nfs/share host_ip
    

    Creare sempre una nuova directory come punto di montaggio sul client o utilizzare una directory vuota esistente. Se c'è un file in una directory che monti, verrà nascosto.

    Crea le directory di montaggio.

    client:$ sudo mkdir -p /nfs/share
    client:$ sudo mkdir -p /nfs/home
    

    Montare le condivisioni utilizzando l'indirizzo IP dell'host.

    client:$ sudo mount host_ip:/var/nfs/share /nfs/share
    client:$ sudo mount host_ip:/home /nfs/home
    

    Verificare che il montaggio sia andato a buon fine.

    client:$ df -h
    Filesystem                 Size  Used Avail Use% Mounted on
    devtmpfs                   370M     0  370M   0% /dev
    tmpfs                      405M     0  405M   0% /dev/shm
    tmpfs                      405M   16M  389M   4% /run
    tmpfs                      405M     0  405M   0% /sys/fs/cgroup
    /dev/vda1                   25G  2.4G   23G  10% /
    tmpfs                       81M     0   81M   0% /run/user/1000
    host_ip:/var/nfs/share      25G  2.4G   23G  10% /nfs/share
    host_ip:/home               25G  2.4G   23G  10% /nfs/home
    

    Entrambe le condivisioni sono montate dallo stesso file system. Quindi mostrano lo stesso utilizzo del disco.

    Puoi anche usare il comando mount per verificare.

    client:$ mount | grep nfs
    rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
    host_ip:/var/nfs/share on /nfs/share type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=client_ip,local_lock=none,addr=host_ip)
    host_ip:/home on /nfs/home type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=client_ip,local_lock=none,addr=host_ip)
    

    Passaggio 6: testare l'accesso NFS

    Testare la condivisione per uso generico

    Scrivi un file di prova nella condivisione /var/nfs/share.

    client:$ sudo touch /nfs/share/test.txt
    

    Controlla la sua proprietà.

    client:$ ls -l /nfs/share/test.txt
    -rw-r--r--. 1 nobody nobody 0 Dec 13 08:08 /nfs/share/test.txt
    

    Dato che abbiamo montato questo volume utilizzando le impostazioni NFS predefinite e creato il file sul client utilizzando sudo, la proprietà del file è predefinita su nobody:nobody. I superuser del client non possono eseguire alcuna attività amministrativa sulla condivisione.

    Testare la condivisione della home directory

    Scrivi un file di prova nella condivisione /nfs/home.

    client:$ sudo touch /nfs/home/home.txt
    

    Controlla la sua proprietà.

    client:$ ls -l /nfs/home/home.txt
    -rw-r--r--. 1 root root 0 Dec 13 08:09 /nfs/home/home.txt
    

    Dato che abbiamo usato l'opzione no_root_squash, ha permesso all'utente root del client di agire come root sulla condivisione stessa.

    Passaggio 7: rendere permanenti i punti Mount

    Le condivisioni NFS per impostazione predefinita sono temporanee e devono essere montate all'avvio. Possiamo renderli permanenti modificando il file /etc/fstab sul client.

    Apri il file /etc/fstab per modificarlo.

    client:$ sudo nano /etc/fstab
    

    Incolla le seguenti righe in fondo al file.

    . . .
    host_ip:/var/nfs/share      /nfs/share     nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
    host_ip:/home               /nfs/home      nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
    

    Puoi scoprire di più sulle opzioni sopra elencate eseguendo i seguenti comandi.

    client:$ man nfs
    client:$ man mount
    

    Se vuoi leggerli online, puoi cercare su Google la frase man nfs e man mount per saperne di più su queste opzioni.

    Passaggio 8: smontare la condivisione NFS

    Se non desideri più i montaggi remoti sul tuo sistema, puoi smontarli usando il comando umount. Si noti che il comando si chiama umount e non unmount, il che è un errore comune.

    Esci dai montaggi condivisi e smontali.

    client:$ cd ~
    client:$ sudo umount /nfs/share
    client:$ sudo umount /nfs/home
    

    Se non hai più bisogno delle condivisioni montate nuovamente al riavvio, assicurati di commentare le voci corrispondenti nel file /etc/fstab inserendo un # firma davanti a loro.

    Conclusione

    In questo tutorial, abbiamo imparato come creare un server host NFS e montare le directory utilizzandolo, che abbiamo condiviso con un client NFS. Se lo stai implementando in una rete privata, non dovrebbero esserci problemi, ma se lo stai utilizzando in produzione, dovresti ricordare che il protocollo non è crittografato e dovresti implementare un'autenticazione per proteggere i tuoi dati.

    Se hai domande, pubblicale nei commenti qui sotto.