Android

Jak zainstalować i skonfigurować serwer NFS na Ubuntu 18.04

How to configure Netwok file Sharing Server (NFS Server) in Ubuntu Linux 18.04

How to configure Netwok file Sharing Server (NFS Server) in Ubuntu Linux 18.04

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 klientów lub nazwy hostów.

W tym samouczku omówimy, jak skonfigurować serwer NFSv4 w systemie Ubuntu 18.04. Pokażemy również, jak zamontować system plików NFS na kliencie.

Wymagania wstępne

W tym przykładzie założono, że masz jeden serwer z systemem Ubuntu 18.04 i drugi z dowolną inną dystrybucją Linuksa. 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.10 NFS Clients IPs: From the 192.168.33.0/24 range

Skonfiguruj serwer NFS

Zaczniemy od instalacji i konfiguracji serwera NFS.

Instalowanie serwera NFS

Odśwież indeks pakietów i zainstaluj pakiet serwera NFS:

sudo apt update sudo apt install nfs-kernel-server

Po zakończeniu instalacji usługi NFS uruchomią się automatycznie.

Domyślnie w systemie Ubuntu 18.04 NFS wersja 2 jest wyłączona. Wersje 3 i 4 są włączone. Możesz to sprawdzić, uruchamiając następujące polecenie cat :

sudo cat /proc/fs/nfsd/versions

-2 +3 +4 +4.1 +4.2

NFSv2 jest już dość stary i nie ma powodu, aby go włączyć.

Opcje konfiguracji serwera NFS są ustawione w /etc/default/nfs-kernel-server i /etc/default/nfs-common . Domyślne ustawienia są w naszym przypadku wystarczające.

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.

Udostępnimy dwa katalogi ( /var/www i /opt/backups ), z różnymi ustawieniami konfiguracji, aby lepiej wyjaśnić, w jaki sposób można skonfigurować podłączenia NFS.

/var/www/ jest własnością użytkownika i grupy www-data a /opt/backups jest własnością root .

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

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

Zamontuj rzeczywiste katalogi:

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

Aby /etc/fstab łączenie na stałe, otwórz /etc/fstab :

sudo nano /etc/fstab

i dodaj następujące linie:

/ 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 Plik /etc/exports zawiera także komentarze opisujące sposób eksportowania katalogu.

W naszym przypadku musimy wyeksportować katalogi www i backups i zezwolić 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.

W drugim wierszu 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 i jeśli chcesz je zmienić, musisz je wyraźnie ustawić.

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

W Ubuntu root_squash jest domyślnie włączony. Jest to jedna 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 komputerów 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 Ubuntu. Możesz teraz przejść do następnego kroku i skonfigurować klientów i połączyć się z serwerem NFS.

Konfiguracja zapory ogniowej

Zakładając, że używasz UFW do zarządzania zaporą ogniową, aby umożliwić dostęp z podsieci 192.168.33.0/24 , musisz uruchomić następujące polecenie:

sudo ufw allow from 192.168.33.0/24 to any port nfs

Aby sprawdzić przebieg zmiany:

sudo ufw status

Dane wyjściowe powinny wskazywać, że ruch na porcie 2049 jest dozwolony:

To Action From -- ------ ---- 2049 ALLOW 192.168.33.0/24 22/tcp ALLOW Anywhere 22/tcp (v6) ALLOW Anywhere (v6)

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 klienckich musimy zainstalować tylko 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 /srv/nfs4/www 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.10:/backups /backups sudo mount -t nfs -o vers=4 192.168.33.10:/www /srv/www

Gdzie 192.168.33.10 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 zwolnić 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:

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

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

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 dla każdego 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 pojawi się 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

Zakładając, że używasz www-data na komputerze klienckim z tym samym UID i GID jak na serwerze zdalnym (co powinno mieć miejsce, jeśli na przykład zainstalowałeś nginx na obu komputerach), możesz przetestować, aby utworzyć plik jako użytkownik www-data z:

sudo -u www-data 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 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

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.

ubuntu nfs mount terminal