Zrozumienie NFS4 (serwer Linux)

26

Trochę mnie niepokoi NFS4 w systemie Linux. Niektóre informacje „tam” wydają się kolidować z innymi informacjami, a inne informacje wydają się trudne do znalezienia. Oto kilka rzeczy, które zwróciły moją uwagę, mam nadzieję, że ktoś na zewnątrz może rzucić na to trochę światła.

To pytanie dotyczy wyłącznie NFS4 bez Kerberos itp.

1. Eksportuje

Na stronie exportspodręcznika znajdują się niejednoznaczne informacje na temat struktury pliku / etc / export.

Cytat z exports(5):

Ponadto każda linia może mieć jedną lub więcej specyfikacji domyślnych opcji po nazwie ścieżki, w postaci myślnika („-”), a następnie listy opcji.

Lista opcji jest używana tylko dla wszystkich kolejnych eksportów w tym wierszu.

Co oznacza „późniejszy eksport tylko na tej linii”?

1.2 fsid=0nie jest już wymagane?

Szukałem fsid, kiedy znalazłem komentarz na liście linux-nfs stwierdzający, że fsid = 0 nie jest już wymagany. Teraz jestem tylko zdezorientowany, czy potrzebuję go z nfs4 czy nie ?!

2. Nieeksportowany katalog nadal można zamontować

Powiedz, że mam następujące drzewo:

/exp
/exp/users
/exp/distr
/exp/distr/archlinux
/exp/distr/debian

I mam następujące wpisy w tym wpisie fstab:

/dev/disk/by-label/users  /mnt/users  ext4  defaults  0  0
/dev/disk/by-label/distr  /mnt/distr  ext4  defaults  0  0
/mnt/users                /exp/users  none  bind      0  0
/mnt/distr                /exp/distr  none  bind      0  0

A mój eksport jest dokładnie taki:

/exp       192.168.1.0/24(fsid=0,rw,async,no_subtree_check,no_root_squash)
/exp/distr 192.168.1.0/24(rw,async,no_subtree_check,no_root_squash)

I exportfs -arvpokazuje:

exporting 192.168.1.0/24:/exp/distr
exporting 192.168.1.0/24:/exp

Dlaczego więc mogę to zrobić i nie mam błędu na kliencie:

mount -t nfs4 server:/exp/users /tmp/test

Nawet jeśli /exp/usersnie jest eksportowany? Nie wyeksportowałem tego katalogu i chociaż nie widzę zawartości, /dev/disk/by-label/userschyba że podam crossmnt, nadal mogę pisać do katalogu. Wszystko, co tam piszę, przechodzi do katalogu podstawowego, /exp/usersktórego można zobaczyć, gdy umount /exp/users; ls /exp/users

3. Dziwny przypadek showmount -d server

Jak stwierdzono przez rpc.mountd(8), to polecenie powinno wyświetlać katalogi, które są obecnie montowane przez klientów lub nieaktualne wpisy /var/lib/nfs/rmtab, jak można przeczytać:

Demon rpc.mountd rejestruje każde pomyślne żądanie MNT, dodając wpis do pliku / var / lib / nfs / rmtab. Po otrzymaniu żądania UMNT od klienta NFS rpc.mountd po prostu usuwa pasujący wpis z / var / lib / nfs / rmtab, o ile lista kontroli dostępu dla tego eksportu pozwala temu nadawcy uzyskać dostęp do eksportu.

(...)

Należy jednak pamiętać, że niewiele można zagwarantować, że zawartość / var / lib / nfs / rmtab jest dokładna. Klient może nadal uzyskiwać dostęp do eksportu nawet po wywołaniu UMNT. Jeśli klient uruchomi się ponownie bez wysyłania żądania UMNT, pozostaną nieaktualne wpisy dla tego klienta w katalogu / var / lib / nfs / rmtab.

Po przeczytaniu tego z pewnością zastanawiam się:

  1. Czy ujawnienie tego rodzaju informacji o kliencie nie jest strasznie niebezpieczne;
  2. Nie są nieświadomi administratorzy serwerów, którzy muszą mieć rmtab z wieloma nieaktualnymi klientami;
  3. Czy to jest powód, dla którego klienci, którzy montują katalogi nfs4, mount -vwidzą wyjście w stylu „nic nie zostało zamontowane”, nawet jeśli coś zostało zamontowane?

Mam wiele innych pytań dotyczących nfs4, ale na razie to zrobię ... :)

ogień bębna
źródło
Być może lista eksportowa nie lubi twoich dziwnych podłączonych systemów plików. Spróbuj najpierw z / mnt / users ...
jirib
Chodzi o nfs4, który wymaga „pseudo systemu plików”, tj. Hierarchii jednego systemu plików. Czy możesz wyjaśnić, co masz na myśli?
ogień bębna
Ta strona wiki twierdzi również, że fsid = 0 nie jest już wymagane: wiki.linux-nfs.org/wiki/index.php/… , ale „man export” nadal oznacza, że ​​jest on wymagany
SystemParadox
1
Chciałbym powiedzieć, że popieram to pytanie. Podobnie jak ty obserwowałem wiele takich samych rzeczy i mam to samo pytanie i wiele więcej. To wygląda na cholerny bałagan.
Cyklon
1
Zbyt wiele pytań w jednym poście. @drumfire, czy mógłbyś podzielić go na osobne, bardziej proste pytania?
Victor Yarema

Odpowiedzi:

7

Świetne pytania, podkreśla większy punkt w dokumentacji IMO. Oto próba pełnej odpowiedzi:

Co oznacza „późniejszy eksport tylko na tej linii”?

Przykład jest prawdopodobnie najłatwiejszy tutaj:

/export/stuff -rw 10.0.0.54 10.0.0.55

jest równa:

/export/stuff 10.0.0.54(rw) 10.0.0.55(rw)

Czy fsid=0nie wymaga już?

To zależy od przypadku użycia. Wygląda na to, że eksportujesz zwykłe dyskowe systemy plików z pozostałej części zapytania, w takim przypadku najlepiej jest upuścić fsid=0(co w nfsv4 zmienia zachowanie w odniesieniu do głównego systemu plików eksportu).

Aby zmienić to zachowanie, usuń opcję no_subtree_check


rmtabpowiązane rzeczy

  • Czy postępowanie z rmtabzagrożeniem bezpieczeństwa?
    Wydaje mi się, że odpowiedź na to pytanie zależy od twojego przypadku użycia. W mojej sieci nie jest to wiarygodny wyciek informacji, ale widzę przypadki, w których mogłoby to potencjalnie.
  • Czy nie rmtabbędzie pełno starych wpisów?
    Potencjalnie tak, znowu w zależności od scenariusza wdrażania / przypadku użycia.
  • Czy dlatego niektórzy klienci działający mount -vbłędnie widzą „nic nie zostało zamontowane”?
    Jeszcze tego nie spotkałem
CraigJPerry
źródło