Android

Jak zainstalować i skonfigurować serwer NFS na Centos 8

How to Install a Basic NFS Server on Linux - CentOS 8

How to Install a Basic NFS Server on Linux - CentOS 8

Spisu treści:

Anonim

Network File System (NFS) to protokół rozproszonego systemu plików, który umożliwia udostępnianie zdalnych katalogów przez sieć. Dzięki NFS możesz montować zdalne katalogi w swoim systemie i pracować z plikami na zdalnym komputerze tak, jakby były plikami lokalnymi.

Protokół NFS nie jest domyślnie szyfrowany i, w przeciwieństwie do Samby, nie zapewnia uwierzytelnienia użytkownika. Dostęp do serwera jest ograniczony przez adresy IP lub nazwy hostów klientów.

W tym samouczku wykonasz kroki niezbędne do skonfigurowania serwera NFSv4 na CentOS 8. Pokażemy także, jak zamontować system plików NFS na kliencie.

Wymagania wstępne

Zakładamy, że masz serwer z systemem CentOS 8, na którym skonfigurujemy serwer NFS i inne maszyny, które będą działać jako klienci NFS. Serwer i klienci powinni mieć możliwość komunikowania się ze sobą za pośrednictwem sieci prywatnej. Jeśli dostawca usług hostingowych nie oferuje prywatnych adresów IP, możesz użyć publicznych adresów IP i skonfigurować zaporę serwera, aby zezwalać na ruch na porcie 2049 tylko z zaufanych źródeł.

Maszyny w tym przykładzie mają następujące adresy IP:

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

Skonfiguruj serwer NFS

W tej sekcji wyjaśniono, jak zainstalować niezbędne pakiety, utworzyć i wyeksportować katalogi NFS oraz skonfigurować zaporę.

Instalowanie serwera NFS

Pakiet „nfs-utils” udostępnia narzędzia i demony NFS dla serwera NFS. Aby go zainstalować, uruchom następujące polecenie:

sudo dnf install nfs-utils

Po zakończeniu instalacji włącz i uruchom usługę NFS, wpisując:

sudo systemctl enable --now nfs-server

Domyślnie w CentOS 8 NFS wersje 3 i 4.x są włączone, wersja 2 jest wyłączona. NFSv2 jest już dość stary i nie ma powodu, aby go włączyć. Aby to sprawdzić, uruchom następujące polecenie cat :

sudo cat /proc/fs/nfsd/versions

-2 +3 +4 +4.1 +4.2

Opcje konfiguracji serwera NFS są ustawione w plikach /etc/nfsmount.conf i /etc/nfs.conf . Domyślne ustawienia są wystarczające dla naszego samouczka.

Tworzenie systemów plików

Podczas konfigurowania serwera NFSv4 dobrą praktyką jest używanie globalnego katalogu głównego NFS i wiązanie podłączenia rzeczywistych katalogów do punktu podłączenia udziału. W tym przykładzie /srv/nfs4 dyrektora /srv/nfs4 jako katalogu głównego NFS.

Aby lepiej wyjaśnić sposób konfigurowania podłączeń NFS, będziemy udostępniać dwa katalogi ( /var/www i /opt/backups ) z różnymi ustawieniami konfiguracji.

/var/www/ jest własnością użytkownika i grupowego apache a /opt/backups jest własnością root .

Utwórz system plików eksportu za pomocą komendy mkdir :

sudo mkdir -p /srv/nfs4/{backups, www}

Zamontuj rzeczywiste katalogi:

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

Aby połączenie stało się trwałe, dodaj następujące wpisy do /etc/fstab :

sudo nano /etc/fstab / etc / fstab

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

Eksportowanie systemów plików

Następnym krokiem jest zdefiniowanie systemów plików, które będą eksportowane przez serwer NFS, opcji udziałów i klientów, którzy mogą uzyskać dostęp do tych systemów plików. W tym celu otwórz /etc/exports :

sudo nano /etc/exports

Wyeksportuj katalogi www i backups i zezwól na dostęp tylko od klientów w sieci 192.168.33.0/24 :

/ etc / export

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

Pierwszy wiersz zawiera fsid=0 który definiuje katalog główny /srv/nfs fsid=0 /srv/nfs . Dostęp do tego wolumenu NFS jest dozwolony tylko dla klientów z podsieci 192.168.33.0/24 . Opcja crossmnt jest wymagana do udostępniania katalogów będących podkatalogami wyeksportowanego katalogu.

Drugi wiersz pokazuje, jak określić wiele reguł eksportu dla jednego systemu plików. Eksportuje /srv/nfs4/backups i umożliwia dostęp tylko do odczytu do całego zakresu 192.168.33.0/24 , a także dostęp do odczytu i zapisu do 192.168.33.3 . Opcja sync informuje NFS, aby zapisał zmiany na dysku przed odpowiedzią.

Ostatni wiersz powinien być zrozumiały. Aby uzyskać więcej informacji o wszystkich dostępnych opcjach, wpisz man exports w swoim terminalu.

Zapisz plik i wyeksportuj udziały:

sudo exportfs -ra

Musisz uruchomić powyższe polecenie za każdym razem, gdy modyfikujesz /etc/exports . Jeśli wystąpią jakiekolwiek błędy lub ostrzeżenia, zostaną one wyświetlone na terminalu.

Aby wyświetlić bieżący aktywny eksport i ich stan, użyj:

sudo exportfs -v

Dane wyjściowe będą obejmować wszystkie akcje wraz z ich opcjami. Jak widać, istnieją również opcje, których nie zdefiniowaliśmy w /etc/exports . Są to opcje domyślne, a jeśli chcesz je zmienić, musisz je wyraźnie ustawić.

/srv/nfs4/backups 192.168.33.3(sync, wdelay, hide, no_subtree_check, sec=sys, rw, secure, root_squash, no_all_squash) /srv/nfs4/www 192.168.33.110(sync, wdelay, hide, no_subtree_check, sec=sys, rw, secure, root_squash, no_all_squash) /srv/nfs4 192.168.33.0/24(sync, wdelay, hide, crossmnt, no_subtree_check, fsid=0, sec=sys, rw, secure, root_squash, no_all_squash) /srv/nfs4/backups 192.168.33.0/24(sync, wdelay, hide, no_subtree_check, sec=sys, ro, secure, root_squash, no_all_squash)

root_squash jest jedną z najważniejszych opcji dotyczących bezpieczeństwa NFS. Uniemożliwia to użytkownikom root podłączonym do klientów posiadanie uprawnień roota do zamontowanych udziałów. UID główny UID i GID na GID UID / GID nobody / nogroup .

Aby użytkownicy na komputerach klienckich mieli dostęp, NFS oczekuje, że identyfikatory użytkowników i grup klientów będą zgodne z identyfikatorami na serwerze. Inną opcją jest użycie funkcji mapowania tożsamości NFSv4, która tłumaczy identyfikatory użytkowników i grup na nazwy i odwrotnie.

Otóż ​​to. W tym momencie skonfigurowałeś serwer NFS na serwerze CentOS. Możesz teraz przejść do następnego kroku i skonfigurować klientów i połączyć się z serwerem NFS.

Konfiguracja zapory ogniowej

FirewallD to domyślne rozwiązanie zapory ogniowej w Centos 8.

Usługa NFS obejmuje predefiniowane reguły umożliwiające dostęp do serwera NFS.

Następujące polecenia umożliwią stały dostęp z podsieci 192.168.33.0/24 :

sudo firewall-cmd --new-zone=nfs --permanent sudo firewall-cmd --zone=nfs --add-service=nfs --permanent sudo firewall-cmd --zone=nfs --add-source=192.168.33.0/24 --permanent sudo firewall-cmd --reload

Skonfiguruj klientów NFS

Teraz, gdy serwer NFS jest skonfigurowany, a udziały są eksportowane, następnym krokiem jest skonfigurowanie klientów i zamontowanie zdalnych systemów plików.

Możesz także zamontować udział NFS na komputerach z systemem macOS i Windows, ale skupimy się na systemach Linux.

Instalowanie klienta NFS

Na komputerach klienta zainstaluj narzędzia wymagane do zamontowania zdalnych systemów plików NFS.

  • Zainstaluj klienta NFS na Debianie i Ubuntu

    Nazwa pakietu zawierającego programy do montowania systemów plików NFS w dystrybucjach opartych na Debianie jest nfs-common w systemie plików NFS. Aby zainstalować, uruchom:

    sudo apt update sudo apt install nfs-common

    Zainstaluj klienta NFS na CentOS i Fedorze

    Na Red Hat i jego pochodnych zainstaluj pakiet nfs-utils :

    sudo yum install nfs-utils

Montowanie systemów plików

Będziemy pracować na komputerze klienckim o IP 192.168.33.110 , który ma dostęp do odczytu i zapisu do systemu plików /srv/nfs4/www oraz dostęp tylko do odczytu do systemu plików /srv/nfs4/backups .

Utwórz dwa nowe katalogi dla punktów montowania. Możesz utworzyć te katalogi w dowolnym miejscu.

sudo mkdir -p /backups sudo mkdir -p /srv/www

Podłącz wyeksportowane systemy plików za pomocą polecenia mount :

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

Gdzie 192.168.33.148 to adres IP serwera NFS. Możesz także użyć nazwy hosta zamiast adresu IP, ale musi on zostać rozwiązany przez komputer kliencki. Zwykle odbywa się to poprzez mapowanie nazwy hosta na adres IP w /etc/hosts .

Podczas montowania systemu plików NFSv4 należy pominąć katalog główny NFS, więc zamiast /srv/nfs4/backups należy użyć /backups .

Sprawdź, czy zdalne systemy plików zostały poprawnie zamontowane, używając komendy mount lub df :

df -h

Polecenie wyświetli wszystkie zamontowane systemy plików. Dwie ostatnie linie to zamontowane udziały:

… 192.168.33.148:/backups 9.7G 1.2G 8.5G 13% /backups 192.168.33.148:/www 9.7G 1.2G 8.5G 13% /srv/www

Aby zamontować stałe podczas ponownego uruchamiania, otwórz /etc/fstab :

sudo nano /etc/fstab

i dodaj następujące linie:

/ etc / fstab

192.168.33.148:/backups /backups nfs defaults, timeo=900, retrans=5, _netdev 0 0 192.168.33.148:/www /srv/www nfs defaults, timeo=900, retrans=5, _netdev 0 0

Aby znaleźć więcej informacji o dostępnych opcjach podczas montowania systemu plików NFS, wpisz man nfs w swoim terminalu.

Inną opcją montowania zdalnych systemów plików jest użycie narzędzia autofs lub utworzenie jednostki systemowej.

Testowanie dostępu do NFS

Przetestujmy dostęp do udziałów, tworząc nowy plik w każdym z nich.

Najpierw spróbuj utworzyć plik testowy w katalogu /backups za pomocą polecenia touch :

sudo touch /backups/test.txt

System plików /backup jest eksportowany jako tylko do odczytu i zgodnie z oczekiwaniami zobaczysz komunikat o błędzie Permission denied :

touch: cannot touch '/backups/test': Permission denied

Następnie spróbuj utworzyć plik testowy w katalogu /srv/www jako root za pomocą polecenia sudo :

sudo touch /srv/www/test.txt

Ponownie zobaczysz komunikat Permission denied dostępu.

touch: cannot touch '/srv/www': Permission denied

Katalog /var/www jest własnością użytkownika apache , a ten udział ma root_squash opcję root_squash , która mapuje użytkownika root na użytkownika nobody i grupę nogroup , która nie ma uprawnień do zapisu do udziału zdalnego.

Zakładając, że apache użytkownika istnieje na komputerze klienckim z takim samym UID i GID jak na serwerze zdalnym (co powinno mieć miejsce, jeśli na przykład zainstalowałeś apache na obu komputerach), możesz przetestować, aby utworzyć plik jako apache użytkownika z:

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

Polecenie nie wyświetli danych wyjściowych, co oznacza, że ​​plik został pomyślnie utworzony.

Aby to zweryfikować, wyświetl listę plików w katalogu /srv/www :

ls -la /srv/www

Dane wyjściowe powinny pokazywać nowo utworzony plik:

drwxr-xr-x 3 apache apache 4096 Jun 23 22:18. drwxr-xr-x 3 root root 4096 Jun 23 22:29.. -rw-r--r-- 1 apache apache 0 Jun 23 21:58 index.html -rw-r--r-- 1 apache apache 0 Jun 23 22:18 test.txt

Odmontowywanie systemu plików NFS

sudo umount /backups

Jeśli punkt montowania jest zdefiniowany w /etc/fstab , upewnij się, że usuwasz linię lub komentujesz, dodając # na początku linii.

Wniosek

W tym samouczku pokazaliśmy, jak skonfigurować serwer NFS i jak zamontować zdalne systemy plików na komputerach klienckich. Jeśli wdrażasz NFS w produkcji i udostępniasz sensowne dane, dobrym pomysłem jest włączenie uwierzytelniania Kerberos.

Alternatywnie do NFS można użyć SSHFS do montowania zdalnych katalogów przez połączenie SSH. SSHFS jest domyślnie szyfrowany i znacznie łatwiejszy w konfiguracji i obsłudze.

Jeśli masz jakieś pytania, zostaw komentarz.

centos nfs mount terminal