Zpět na blog

Nastavení připojení NFS na Ubuntu 20.04

Nastavení připojení NFS na Ubuntu 20.04

The Network File System (NFS) je distribuované úložné řešení. Jedná se o protokol souborového systému, který umožňuje připojit vzdálené adresáře na lokální server a používat je, jako by šlo o lokální úložiště. NFS umožňuje více klientům sdílet vzdálené úložiště. Je vhodný pro prostředí, která pravidelně vyžadují sdílené prostředky. NFS je postaven na systému ONC RPC (Open Network Computing Remote Procedure Call). Jde o otevřený standard definovaný v RFC (Request for Comments). To umožňuje komukoli tento protokol implementovat.

V tomto návodu si projdeme kroky nastavení a konfigurace připojení NFS na Ubuntu 20.04.

Požadavky

Jak napovídá popis NFS, konfigurace NFS se skládá ze dvou částí:

  • Hostitel: Fyzicky ukládá data a sdílí úložiště s „klientskými“ systémy.

  • Klient: Systém, který se připojuje k „hostiteli“ a používá vzdálené úložiště, jako by bylo lokální.

Pro naši ukázku budeme používat dva servery, oba s nakonfigurovaným systémem Ubuntu 20.04. Zde je jednoduchý návod, jak nastavit server Ubuntu. V průběhu tohoto návodu budeme tyto servery označovat jako hostitel a klient. Upozorňujeme, že akce pro klienta budou stejné, i když jich bude více.

Serverům jsou přiřazeny následující IP adresy. Tyto servery jsou hostovány u CloudSigma:

  • hostitel: 31.171.240.79

  • klient: 31.171.250.109

Nezapomeňte je nahradit příslušnými IP adresami.

Instalace NFS

NFS je snadno dostupné z oficiálních repozitářů Ubuntu. Pro systémy hostitele a klienta jsou k dispozici různé softwarové balíčky.

  • Instalace NFS na hostiteli

Na hostiteli potřebujeme komponenty, které stroj vybaví pro fungování jako NFS hostitel. Ty jsou k dispozici v podobě balíčku nfs-kernel-server. Ubuntu používá APT jako správce balíčků. Nejprve spusťte terminál a aktualizujte databázi balíčků APT :

Server Apt Update

Dále nainstalujte balíček nfs-kernel-server. V případě potřeby se APT postará o všechny další závislosti:

Install nfs kernel server

  • Instalace NFS na klientovi

Na klientském systému potřebujeme funkcionalitu pro připojení k adresářům hostitele přes síť. Nevyžaduje to funkcionalitu NFS serveru. V systému Ubuntu je tato funkcionalita zabalena v balíčku nfs-common. Aktualizujte databázi balíčků APT :

Client apt update

Poté nainstalujte balíček nfs-common :

Install nfs common

Sdílené adresáře na hostiteli

Dále budeme sdílet dva samostatné adresáře, každý s jinou konfigurací. Ukážeme si dva klíčové způsoby, jak připojení NFS fungují s ohledem na přístup superuživatele. Ve výchozím nastavení mají superuživatelé oprávnění provádět cokoli v celém systému. Adresáře připojené přes NFS však nejsou součástí systému, na kterém jsou připojeny. NFS server odmítne provést jakoukoli operaci, která vyžaduje oprávnění superuživatele. Toto omezení znamená, že klienti nemají oprávnění zapisovat, měnit vlastnictví a provádět další úkoly superuživatele na připojeních NFS.

Je možné povolit některým důvěryhodným uživatelům provádět tyto úkoly na připojených souborových systémech. To však přináší jisté riziko, protože takový klient může potenciálně získat plný přístup k hostiteli. Toto riziko lze zmírnit správnou správou uživatelských oprávnění. V systému Linux řídí veškerá uživatelská oprávnění soubor sudoers. Další informace naleznete v našem návodu na jak nakonfigurovat soubor sudoers v Linuxu.

  • Univerzální připojení

Prvním příkladem bude univerzální připojení NFS s výchozím chováním NFS. Při tomto přístupu je pro klienta extrémně obtížné provádět na připojeních akce superuživatele. Tento typ připojení NFS se běžně nasazuje pro ukládání souborů, nahrávání pomocí CMS (Content Management System) nebo sdílení projektových souborů atd.

Následující kroky je třeba provést na hostitelském systému. Nejprve vytvořte adresář pro sdílení s názvem nfs:

Create nfs general dir

Protože byl adresář vytvořen s sudo oprávněním, vlastník bude root:

List nfs general

V rámci výchozí konfigurace NFS přeloží jakoukoli operaci uživatele root z klientské strany na nobody:nogroup přihlašovací údaje z bezpečnostních důvodů. Pro konzistenci změňte vlastnictví adresáře tak, aby odpovídalo těmto údajům:

Change owner nogroup

  • Domovský adresář

Druhým příkladem je zpřístupnění domovského adresáře host uživatele pro klienty. Důvěryhodní administrátoři z vybraných klientů k němu mohou přistupovat pro pohodlnou správu uživatelů. /home adresář existuje ve výchozím nastavení, takže není nutné vytvářet žádný adresář. Co se týče oprávnění adresáře, není třeba provádět žádné změny, protože by to způsobilo více problémů než užitku.

Konfigurace exportů NFS

Adresáře ke sdílení jsou nyní vytvořeny. Dále je třeba nakonfigurovat NFS, aby byly dostupné pro klienty. NFS používá konfigurační soubor ke sledování toho, které adresáře se mají sdílet. Otevřete následující konfigurační soubor NFS ve svém oblíbeném textovém editoru:

exports file

Komentářová sekce souboru popisuje obecnou syntaktickou strukturu konfigurace. Stručně řečeno, jakýkoli adresář musí být deklarován v následujícím formátu:

Pro dva adresáře, které jsme se rozhodli sdílet, bude konfigurace vypadat takto. Oba adresáře mají téměř stejné možnosti konfigurace:

exports file mod

Zde je rychlý přehled možností konfigurace:

  • rw: Klientovi je uděleno oprávnění ke čtení i zápisu na svazek.

  • sync: Nutí NFS zapsat změny na disk před odesláním odpovědi. Nabízí stabilnější a konzistentnější chování. Odpověď bude odrážet skutečný stav vzdáleného svazku. Souborové operace však budou pomalejší.

  • no_subtree_check: Zabraňuje kontrole podstromu (subtree checking). Pokud není zakázána, hostitelé budou nuceni kontrolovat existenci souboru v exportovaném stromu při každém jednotlivém požadavku od klienta. To může vést k mnoha problémům, například k přejmenování souboru, zatímco jej klient používá. Ve většině případů je nejlepším řešením kontrolu podstromu zakázat.

  • no_root_squash: Jak již bylo zmíněno dříve, NFS přeloží jakýkoli požadavek od vzdáleného uživatele root na neprivilegovaného uživatele. Jedná se o záměrný bezpečnostní prvek, který má zabránit nechtěnému přístupu k hostitelskému systému. Použití této možnosti však toto chování zakáže.

Uložte konfigurační soubor a ukončete editor. Aby se změny projevily, restartujte NFS server:

Restart nfs kernel server

Nastavení firewallu

Pro jakýkoli server je správná konfigurace firewallu nutností. Za předpokladu, že máte odpovídajícím způsobem nakonfigurovaný server Ubuntu 20.04, měl by být firewall UFW aktivní. Je to jednoduchý, ale výkonný firewall, se kterým se dodává většina linuxových distribucí. Pro začátečníky je zde rychlý průvodce vysvětlující UFW, jak funguje a běžné použití UFW s příklady.

Ve výchozím nastavení bude firewall blokovat veškerý příchozí i odchozí provoz. Abychom zajistili, že se NFS server může správně připojit a vyměňovat si data, musíme přidat výjimku pro protokol NFS. Nejprve zkontrolujte stav firewallu. Vypíše také všechna aktuální pravidla:

ufw status

Jak vidíme, do systému je povolen pouze provoz SSH. Musíme přidat výjimku pro povolení provozu NFS.

Ve většině případů se důrazně doporučuje použít co nejvíce omezující pravidlo, které stále umožňuje nezbytný provoz. Budeme tedy povolovat připojení k hostiteli pouze vybraným klientům:

ufw allow ports

Poté znovu zkontrolujte stav firewallu:

ufw status after change

Vytvoření přípojného bodu

Server je nyní připraven povolit klientskému systému připojit se k protokolu NFS. Dále musíme připravit klienta. Pro přístup ke vzdálenému svazku musí být připojen lokálně na klientovi. Pokud jde o přípojný bod, doporučuje se použít vyhrazený prázdný adresář.

Pro dva vzdálené svazky vytvořte dva samostatné přípojné body:

Create client nfs general directory

Create client nfs home directory

Nyní, když jsou přípojné body připraveny, musíte připojit vzdálené svazky:

Mount general directory on client

Mount home directory on client

Můžeme ověřit, zda bylo připojení úspěšné. Zkontrolujte seznam všech připojených svazků:

Disk free in client

Voila! Vzdálené svazky jsou úspěšně připojeny. Využití místa můžeme také zkontrolovat pomocí následujícího příkazu:

Disk usage in client home

Testování přístupu k NFS

Dosud byly vzdálené svazky správně připojeny. Nebude to však k ničemu, pokud klient nebude moci číst/zapisovat data na vzdáleném svazku. Pro ověření vytvořte testovací soubor na přípojném bodu (bodech) NFS. Zde bude soubor vytvořen s oprávněním root k otestování, zda konfigurace specifické pro root fungují správně:

Create file in nfs

Dále zkontrolujte vlastnictví souboru:

Check ownership of file created

Jak vidíme, NFS převádí vlastníka souboru na nobody:nogroup. Adresář /var/nfs/ general má vlastnictví nobody:nogroup, takže NFS převádí vlastnictví souboru. Je čas otestovat druhý přípojný bod NFS:

Create home file

Zkontrolujte existenci a vlastnictví souboru:

Check ownership of home file

V tomto případě NFS nepřeložilo vlastnictví souboru. Tento klient byl nakonfigurován tak, aby mohl provádět administrativní akce. Navíc původní hostitelský adresář /home nemá vlastnictví nastaveno na nobody:nogroup.

Další triky

  • Připojení při spuštění

Dosud jsme museli svazek NFS připojovat k lokálnímu adresáři ručně. Pokud nejsou odpojeny, připojení NFS vydrží až do restartu systému. Pokud se svazek NFS používá pravidelně, stává se ruční připojování extrémně zdlouhavým. V případě více připojení NFS je pak nepraktické připojovat je ručně jedno po druhém.

Pomocí souboru /etc/fstab můžeme tento proces automatizovat. Během spouštění tento skript automaticky připojí svazky NFS k cílovým přípojným bodům. Otevřete soubor v textovém editoru:

fstab file

Přidejte následující řádky pro připojení vzdálených svazků hostitelského systému:

fstab file after change

Uložte skript a zavřete textový editor. Při příštím spuštění Linux automaticky připojí vzdálené svazky. Upozorňujeme, že spuštění systému může chvíli trvat, protože se připojuje ke svazkům a připojuje je.

  • Odpojení svazku NFS

Pokud již vzdálený svazek není potřeba, jeho odpojením jej odeberete z klientského systému. Před odpojením se však ujistěte, že vzdálený svazek nepoužívá žádná aplikace ani skript. Odpojování svazků NFS je podobné odpojování jakýchkoli jiných svazků. V tomto případě odpojte /nfs/home a /nfs/general:

Unmount nfs

Poté akci ověřte:

Disks after unmount

Závěr

V této příručce jsme vytvořili NFS server a ukázali si některé základy vzdáleného sdílení NFS. Pokud máte zájem o implementaci NFS v produkčním prostředí, mějte na paměti, že protokol NFS není šifrovaný. To může představovat určité bezpečnostní obavy, například útoky typu man-in-the-middle.

Příjemnou práci s počítačem!

author

Pranay Kapgate

Autor · CloudSigma

Preslav Dobrev je kreativní designér ve společnosti CloudSigma, který se zaměřuje na konzistentní firemní identitu prostřednictvím tradičních i inovativních marketingových kanálů. Je zdatný v propojování umělecké vize se strategickým marketingem za účelem vytváření působivých příběhů značky.

Komentáře

Zatím žádné komentáře. Buďte první.