Понимание NFS4 (сервер Linux)

26

Я был немного обеспокоен NFS4 на Linux. Некоторая информация «там», кажется, вступает в противоречие с другой информацией, а другую информацию трудно найти. Итак, вот несколько вещей, которые привлекли мое внимание, надеюсь, кто-то там может пролить свет на это.

Этот вопрос посвящен исключительно NFS4 без Kerberos и т. Д.

1. Экспорт

На exportsстранице руководства содержится неоднозначная информация о структуре / etc / exports.

Цитировать из exports(5):

Кроме того, каждая строка может иметь одну или несколько спецификаций для параметров по умолчанию после имени пути в виде тире ("-"), за которым следует список параметров.

Список опций используется только для всех последующих экспортов в этой строке.

Что означает «только последующий экспорт в этой строке»?

1.2 fsid=0больше не требуется?

Я искал fsid, когда нашел комментарий в списке linux-nfs о том, что fsid = 0 больше не требуется. Теперь я просто запутался, нужно ли это с nfs4 или нет ?!

2. Неэкспортированный каталог все еще может быть установлен

Скажем, у меня есть следующее дерево:

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

И у меня есть следующие записи в этой записи 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

И мой экспорт именно такой:

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

И exportfs -arvпоказывает:

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

Тогда почему я могу сделать это и не получить ошибку на клиенте:

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

Даже если /exp/usersне экспортируется? Я не экспортировал этот каталог, и, хотя я не вижу его содержимого, /dev/disk/by-label/usersпока я не укажу crossmnt, я все еще могу писать в каталог. Все, что я пишу там, идет в основной каталог, /exp/usersкоторый можно увидеть, когда я umount /exp/users; ls /exp/users..

3. Странный случай showmount -d server

Как указано rpc.mountd(8), эта команда должна отображать каталоги, которые в настоящий момент подключены клиентами, или устаревшие записи в них /var/lib/nfs/rmtab, как можно прочитать:

Демон rpc.mountd регистрирует каждый успешный запрос MNT, добавляя запись в файл / var / lib / nfs / rmtab. При получении запроса UMNT от клиента NFS rpc.mountd просто удаляет соответствующую запись из / var / lib / nfs / rmtab, если список управления доступом для этого экспорта позволяет этому отправителю получить доступ к экспорту.

(...)

Обратите внимание, однако, что мало что гарантировать, что содержимое / var / lib / nfs / rmtab является точным. Клиент может продолжить доступ к экспорту даже после вызова UMNT. Если клиент перезагружается без отправки запроса UMNT, устаревшие записи остаются для этого клиента в / var / lib / nfs / rmtab.

Прочитав это, я, несомненно, задаюсь вопросом:

  1. Разве не ужасно небезопасно просто выставлять этот тип клиентской информации;
  2. Не знают, что администраторы сервера должны иметь rmtab с большим количеством устаревших клиентов;
  3. Является ли это причиной того, что клиенты, которые монтируют каталоги nfs4, mount -vполучают вывод «вроде ничего не было смонтировано», даже если что-то было смонтировано?

У меня есть много других вопросов, касающихся nfs4, но я буду держать это в данный момент .. :)

ураганный огонь
источник
Возможно, список экспорта не похож на ваши странные привязанные файловые системы. Попробуйте сначала с / mnt / users ...
jirib
Это касается nfs4, который требует «псевдофайловой системы», то есть иерархии файловой системы с одним деревом. Не могли бы вы уточнить, что вы имеете в виду, пожалуйста?
барабанная дробь
На этой вики-странице также утверждается, что fsid = 0 больше не требуется: wiki.linux-nfs.org/wiki/index.php/… , но «man export » по-прежнему подразумевает, что это необходимо
SystemParadox
1
Я хотел бы сказать, что я поддерживаю этот вопрос. Как и вы, я наблюдал много одинаковых вещей, и у меня был один и тот же вопрос и еще. Похоже, чертовски беспорядок.
Циклон
1
Слишком много вопросов в одном посте. @drumfire, не могли бы вы разбить его на отдельные более простые вопросы-посты?
Виктор Ярема

Ответы:

7

Отличные вопросы, подчеркивает больший момент с документацией IMO. Вот попытка полного ответа:

Что означает «только последующий экспорт в этой строке»?

Пример, наверное, самый простой здесь:

/export/stuff -rw 10.0.0.54 10.0.0.55

эквивалентно:

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

Больше fsid=0не требуется?

Это зависит от вашего варианта использования. Похоже, что вы экспортируете обычные дисковые файловые системы из остальной части вашего запроса, в этом случае вам лучше всего отбросить fsid=0(что в nfsv4 изменяет поведение для ссылки на корневую файловую систему экспорта).

Чтобы изменить это поведение, удалите параметр no_subtree_check


rmtabсвязанные вещи

  • Обработка rmtabугрозы безопасности?
    Я полагаю, это зависит от вашего варианта использования, чтобы ответить, что в моей сети нет достоверной утечки информации, но я вижу случаи, когда это потенциально может произойти.
  • Не rmtabбудет полно несвежих записей?
    Потенциально да, опять же, в зависимости от вашего сценария развертывания / варианта использования.
  • Вот почему некоторые клиенты mount -vошибочно видят «ничего не было установлено»?
    Я еще не сталкивался с этим
CraigJPerry
источник