Natrag na blog

Postavljanje NFS montiranja na Ubuntu 20.04

Postavljanje NFS montiranja na Ubuntu 20.04

The Mrežni datotečni sustav (NFS) je distribuirano rješenje za pohranu. To je protokol datotečnog sustava koji omogućuje montiranje udaljenih direktorija na lokalni poslužitelj i njegovo korištenje kao da je lokalna pohrana. NFS omogućuje većem broju klijenata dijeljenje udaljene pohrane. Dobro je prilagođen za okruženja koja redovito zahtijevaju zajedničke resurse. NFS je izgrađen na sustavu ONC RPC (Open Network Computing Remote Procedure Call). To je otvoreni standard definiran u RFC-u (Request for Comments). To omogućuje svakome implementaciju protokola.

U ovom vodiču, proći ćemo kroz korake postavljanja i konfiguriranja NFS montiranja na Ubuntu 20.04.

Preduvjeti

Kao što opis NFS-a sugerira, postoje dva dijela NFS konfiguracije:

  • Host: Fizički pohranjuje podatke i dijeli pohranu s „klijentskim” sustavima.

  • Klijent: Sustav koji se povezuje s „hostom” i koristi udaljenu pohranu kao da je lokalna.

Za našu demonstraciju koristit ćemo dva poslužitelja, oba konfigurirana s Ubuntu 20.04. Evo jednostavnog vodiča o tome kako postaviti svoj Ubuntu poslužitelj. Kroz vodič, ovi poslužitelji će se nazivati host i klijent. Imajte na umu da će radnja za klijenta biti ista čak i ako ih ima više od jednog.

Poslužiteljima su dodijeljene sljedeće IP adrese. Ovi poslužitelji su smješteni kod CloudSigma:

  • host: 31.171.240.79

  • klijent: 31.171.250.109

Obavezno ih zamijenite odgovarajućim IP adresama.

Instalacija NFS-a

NFS je lako dostupan iz službenih Ubuntu repozitorija. Postoje različiti softverski paketi za host i klijentske sustave.

  • Instalacija NFS-a na hostu

Na hostu su nam potrebne komponente koje osposobljavaju računalo da služi kao NFS host. Dolazi u obliku paketa nfs-kernel-server. Ubuntu koristi APT kao upravitelj paketa. Prvo pokrenite terminal i ažurirajte APT bazu podataka paketa:

Server Apt Update

Zatim instalirajte nfs-kernel-server paket. Ako je potrebno, APT će se pobrinuti za sve dodatne ovisnosti:

Install nfs kernel server

  • Instalacija NFS-a na klijentu

Na klijentskom sustavu, potrebna nam je funkcionalnost za povezivanje s host direktorijima preko mreže. To ne zahtijeva funkcionalnost NFS poslužitelja. Na Ubuntuu, to je pakirano u paket nfs-common. Ažurirajte APT bazu podataka paketa:

Client apt update

Zatim instalirajte nfs-common paket:

Install nfs common

Dijeljeni direktoriji na hostu

Zatim ćemo podijeliti dva zasebna direktorija, svaki s različitom konfiguracijom. Demonstrirat ćemo dva ključna načina na koja NFS montiranja rade s obzirom na pristup superkorisnika. Prema zadanim postavkama, superkorisnici imaju ovlasti raditi bilo što na cijelom sustavu. Međutim, direktoriji montirani putem NFS-a nisu dio sustava na kojem su montirani. NFS poslužitelj će odbiti izvršiti bilo koju operaciju koja zahtijeva privilegije superkorisnika. Ovo se ograničenje prevodi u to da klijenti nemaju ovlasti za pisanje, ponovno dodjeljivanje vlasništva i druge zadatke superkorisnika na NFS montiranjima.

Moguće je dopustiti određenim pouzdanim korisnicima obavljanje ovih zadataka na montiranim datotečnim sustavima. Međutim, to nosi element rizika, jer takav klijent potencijalno može dobiti puni pristup hostu. To se može ublažiti pravilnim upravljanjem korisničkim dozvolama. Na Linuxu, datoteka sudoers kontrolira sve korisničke privilegije na sustavu. Za dodatne informacije, možete pogledati naš vodič o tome kako konfigurirati Linux sudoers datoteku.

  • Montiranje opće namjene

Prvi primjer bit će NFS montiranje opće namjene sa zadanim ponašanjem NFS-a. U ovom pristupu, klijentu je izuzetno teško izvoditi radnje superkorisnika na montiranim direktorijima. Ova vrsta NFS montiranja uobičajena je za pohranu datoteka, učitavanje pomoću CMS-a (Content Management System) ili dijeljenje projektnih datoteka itd.

Sljedeće korake potrebno je izvršiti na host sustavu. Prvo stvorite direktorij za dijeljenje s oznakom nfs:

Create nfs general dir

Budući da je direktorij kreiran s sudo privilegijom, vlasnik će biti root:

List nfs general

Kao zadana konfiguracija, NFS će prevesti svaku root operaciju s klijentske strane u nobody:nogroup vjerodajnice iz sigurnosnih razloga. Radi dosljednosti, promijenite vlasništvo nad direktorijem kako bi odgovaralo vjerodajnicama:

Change owner nogroup

  • Početni direktorij

Drugi primjer je omogućiti da početni direktorij host korisnika bude dostupan klijentima. Pouzdani administratori s odabranih klijenata mogu mu pristupiti radi praktičnog upravljanja korisnicima. /home direktorij postoji prema zadanim postavkama, pa nema potrebe za kreiranjem bilo kakvog direktorija. Što se tiče dopuštenja direktorija, nema potrebe za bilo kakvim promjenama jer će to uzrokovati više problema nego koristi.

Konfiguriranje NFS izvoza

Direktoriji za dijeljenje su sada kreirani. Zatim se NFS mora konfigurirati kako bi postali dostupni klijentima. NFS koristi konfiguracijsku datoteku za praćenje koji se direktoriji dijele. Otvorite sljedeću NFS konfiguracijsku datoteku u tekstualnom uređivaču po vašem izboru:

exports file

Odjeljak s komentarima u datoteci opisuje opću sintaktičku strukturu konfiguracije. Ukratko, svaki direktorij mora biti deklariran u sljedećem formatu:

Za dva direktorija koja smo odlučili podijeliti, konfiguracija će izgledati ovako. Oba direktorija imaju gotovo iste konfiguracijske opcije:

exports file mod

Evo kratkog pregleda konfiguracijskih opcija:

  • rw: Klijentu se dodjeljuje i dopuštenje za čitanje i pisanje na volumen.

  • sync: Prisiljava NFS da zapiše promjene na disk prije odgovora. To nudi stabilnije i dosljednije iskustvo. Odgovor će odražavati stvarno stanje udaljenog volumena. Međutim, operacije s datotekama bit će sporije.

  • no_subtree_check: Sprječava provjeru podstabla. Ako nije onemogućeno, hostovi će biti prisiljeni provjeravati postojanje datoteke u izvezenom stablu za svaki pojedinačni zahtjev klijenta. To može dovesti do mnogih problema, na primjer, datoteka se preimenuje dok je klijent koristi. U većini slučajeva, onemogućavanje provjere podstabla je pravi put.

  • no_root_squash: Kao što je ranije spomenuto, NFS će prevesti svaki zahtjev udaljenog root korisnika u neprivilegiranog korisnika. Ovo je namjerna sigurnosna značajka za sprječavanje neželjenog pristupa host sustavu. Međutim, korištenje ove opcije onemogućit će ovo ponašanje.

Spremite konfiguracijsku datoteku i izađite iz uređivača. Kako bi promjene stupile na snagu, ponovno pokrenite NFS poslužitelj:

Restart nfs kernel server

Prilagođavanje vatrozida

Za svaki poslužitelj, ispravna konfiguracija vatrozida je obavezna. Pod pretpostavkom da ste odgovarajuće konfigurirali svoj Ubuntu 20.04 poslužitelj, UFW vatrozid bi trebao biti aktivan. To je jednostavan, ali moćan vatrozid s kojim dolazi većina Linux distribucija. Za početnike, evo brzog vodiča koji objašnjava UFW, kako radi i uobičajenu upotrebu UFW-a s primjerima.

Prema zadanim postavkama, vatrozid će blokirati sav dolazni i odlazni promet. Kako bismo osigurali da se NFS poslužitelj može ispravno povezati i razmjenjivati promet, moramo dodati iznimku za NFS protokol. Najprije provjerite status vatrozida. Također će ispisati sva trenutna pravila:

ufw status

Kao što vidimo, sustavu je dopušten samo SSH promet. Moramo dodati iznimku kako bismo omogućili NFS promet.

U većini slučajeva, preporučuje se korištenje najrestriktivnijeg pravila koje i dalje dopušta potreban promet. Dakle, dopustit ćemo samo odabranim klijentima povezivanje s hostom:

ufw allow ports

Nakon toga ponovno provjerite status vatrozida:

ufw status after change

Stvaranje točke montiranja

Poslužitelj je sada spreman dopustiti klijentskom sustavu da se poveže na NFS protokol. Zatim moramo pripremiti klijenta. Za pristup udaljenom pogonu, on mora biti lokalno montiran na klijentu. Što se tiče točke montiranja, preporučuje se korištenje namjenskog praznog direktorija.

Za dva udaljena pogona stvorite dvije zasebne točke montiranja:

Create client nfs general directory

Create client nfs home directory

Sada kada su točke montiranja spremne, trebate montirati udaljene pogone:

Mount general directory on client

Mount home directory on client

Možemo provjeriti jesu li montiranja bila uspješna. Provjerite popis svih montiranih pogona:

Disk free in client

Evo ga! Udaljeni pogoni su uspješno montirani. Također možemo provjeriti iskorištenost prostora pomoću sljedeće naredbe:

Disk usage in client home

Testiranje NFS pristupa

Do sada su udaljeni pogoni bili ispravno montirani. Međutim, to neće biti od koristi ako klijent ne može čitati/pisati podatke na udaljenom pogonu. Za provjeru, stvorite lažnu datoteku na NFS montiranim pogonima. Ovdje će datoteka biti stvorena s root privilegijom kako biste testirali rade li konfiguracije specifične za root ispravno:

Create file in nfs

Zatim provjerite vlasništvo nad datotekom:

Check ownership of file created

Kao što vidimo, NFS prevodi vlasnika datoteke u nobody:nogroup. Direktorij /var/nfs/ general ima vlasništvo nad nobody:nogroup, pa NFS prevodi vlasništvo nad datotekom. Vrijeme je za testiranje drugog NFS montiranog pogona:

Create home file

Provjerite postojanje i vlasništvo nad datotekom:

Check ownership of home file

U ovom slučaju, NFS nije preveo vlasništvo nad datotekom. Ovaj klijent je konfiguriran tako da može obavljati administrativne radnje. Štoviše, izvorni host direktorij /home nema vlasništvo nad nobody:nogroup.

Dodatni trikovi

  • Montiranje pri pokretanju sustava

Do sada smo morali ručno montirati NFS pogon na lokalni direktorij. Ako se ne demontiraju, NFS montirani pogoni trajat će dok se sustav ponovno ne pokrene. Ako se NFS pogon redovito koristi, ručno montiranje postaje izuzetno zamorno. U slučaju višestrukih NFS montiranja, nepraktično ih je ručno montirati jedan po jedan.

Pomoću datoteke /etc/fstab možemo automatizirati proces. Tijekom pokretanja sustava, ova će skripta automatski montirati NFS pogone na ciljne točke montiranja. Otvorite datoteku u uređivaču teksta:

fstab file

Dodajte sljedeće retke za montiranje udaljenih pogona host sustava:

fstab file after change

Spremite skriptu i zatvorite uređivač teksta. Pri sljedećem pokretanju sustava, Linux će automatski montirati udaljene pogone. Imajte na umu da pokretanje sustava može potrajati neko vrijeme dok se povezuje i montira pogone.

  • Demontiranje NFS pogona

Ako udaljeni pogon više nije potreban, demontiranje pogona uklonit će ih s klijentskog sustava. Prije demontiranja, međutim, provjerite da nijedna aplikacija/skripta ne koristi udaljeni pogon. Demontiranje NFS montiranih pogona slično je demontiranju bilo kojih drugih montiranih pogona. U ovom slučaju, demontirajte /nfs/home i /nfs/general:

Unmount nfs

Zatim provjerite radnju:

Disks after unmount

Završne misli

U ovom vodiču izradili smo NFS poslužitelj i prikazali neke od osnova NFS udaljenog dijeljenja. Ako ste zainteresirani za implementaciju NFS-a u produkcijskom okruženju, imajte na umu da NFS protokol nije šifriran. To može predstavljati određene sigurnosne probleme, na primjer, napade čovjeka u sredini (man-in-the-middle).

Sretno s radom!

author

Pranay Kapgate

Autor · CloudSigma

Preslav Dobrev je kreativni dizajner u CloudSigma, usredotočen na dosljedan poslovni identitet korištenjem tradicionalnih i inovativnih marketinških kanala. Vješt je u spajanju umjetničke vizije sa strateškim marketingom kako bi stvorio dojmljive brendirane priče.

Komentari

Još nema komentara. Budite prvi.