Рейтинг:1

При попытке подключить общий ресурс nfs4 с помощью sec=krb5 я получаю сообщение об ошибке «не экспортировано» на сервере nfs

флаг pk

Я запускаю два сервера nfs с домашними каталогами пользователей и другими общими ресурсами. Серверы предлагают монтирование nfsv4 с помощью Kerberos, а также старые версии v3.

До недавнего времени мне удавалось монтировать через nfs4 общий ресурс, экспортированный с помощью krb5. с одного сервера на второй без проблем. Если я попытаюсь сейчас Я получаю отказ в разрешении, и в журнале сервера nfs я всегда вижу эту ошибку, показанную ниже. Файловые системы с пользовательскими данными на серверах nfs расположены в /export/user1 на хосте server1.uni-ko.de и /export/user2 на хосте server2.uni-ko.de (имена хостов изменены). Путь /export/ используется как общий корень экспорта nfs4, отмеченный fsid=0.

## запустить на хосте server1.uni-ko.de
# mount -t nfs4 -o sec=krb5 server2.uni-ko.de:/user2 /mnt
mount.nfs4: доступ запрещен сервером при монтировании server2.uni-ko.de:/user2

и в журнале nfs серверов я вижу эту ошибку:

отклонен запрос на монтирование от server1.uni-ko.de для /user2 (/): не экспортируется

То же самое произойдет, если я попытаюсь локально смонтировать общий ресурс на том же хосте. через nfs4 вот так:

## на хосте server1.uni-ko.de
# mount -t nfs4 -o sec=krb5 server1.uni-ko.de:/user1 /mnt
mount.nfs4: доступ запрещен сервером при монтировании server1.uni-ko.de:/user1

Монтировать nfs3 (mount server1.uni-ko.de:/export/user1 /mnt) можно без проблем.

Файл /etc/exports на хосте server2.uni-ko.de выглядит так:

/export gss/krb5(rw,fsid=0,nohide,no_subtree_check,no_root_squash,async,crossmnt) \
       gss/krb5i(rw,fsid=0,nohide,no_subtree_check,no_root_squash,async,crossmnt) \
       gss/krb5p(rw,fsid=0,nohide,no_subtree_check,no_root_squash,async,crossmnt)
# Экспорт NFS V3 через сетевые группы NIS
/export/user2 @nfsv3client(rw,асинхронный,no_subtree_check,no_subtree_check,fsid=2000)

exportfs -v показывает, что общие ресурсы (krb5-nfs4) экспортированы:

# экспортфс -v
....
/export gss/krb5(rw,async,wdelay,nohide,crossmnt,no_subtree_check,fsid=0,sec=sys,secure,no_root_squash,no_all_squash)
/export gss/krb5i(rw,async,wdelay,nohide,crossmnt,no_subtree_check,fsid=0,sec=sys,secure,no_root_squash,no_all_squash)
/export gss/krb5p(rw,async,wdelay,nohide,crossmnt,no_subtree_check,fsid=0,sec=sys,secure,no_root_squash,no_all_squash)
/export/user2 @nfsv3client(rw,async,wdelay,hide,no_subtree_check,fsid=2000,sec=sys,secure,root_squash,no_all_squash)

Все становится еще более странным, поскольку из клиента nfs4 по умолчанию я все еще могу без проблем монтировать указанный каталог nfs4 точно так же, как описано выше, и обе системы используют одну и ту же ОС в той же версии и уровне исправления, что и SuSE SLES15SP3 с последней версией. установлены патчи.

На серверах nfs работает брандмауэр, открывающий статически назначенные порты, необходимые для NFS, такие как mountd, statd, lockd, а также порты 111 и 2049 (все открыты для tcp и udp). Это то, что я изменил недавно. До этого изменения порты сервера nfs не были статическими, а устанавливались по умолчанию, но я не понимаю, как это могло привести к описанному странному поведению при монтировании. Я также полностью отключил брандмауэр и снова проверил с тем же результатом.

За кулисами работает сервер kerberos, поддерживающий все необходимые принципы. Для серверов nfs и всех клиентов nfs4 доступны принципы «nfs» и «host», и каждый сервер и клиент имеет /etc/krb5.keytab, содержащую экспортированные принципы «nfs» и «host» для этого хоста. Разумеется, участники-пользователи также хранятся на сервере Kerberos. Все это работало безупречно в течение многих лет и работает до сих пор, за исключением описанной проблемы, которая является новой.

Рейтинг:1
флаг pk

Проблема кажется решенной. Мой путь к решению, которого я изначально не ожидал, состоял из двух шагов:

  1. я использовал rpcdebug-command для отладки вызовов nfs rpc и обнаружил, что ошибка «(/): не экспортируется» была результатом попытки хоста смонтировать общий ресурс NFS4, которая не удалась (по неизвестной причине), а затем упала на монтирование NFS3, что также не удалось, потому что путь монтирования, указанный для NFS4, не содержал пути для общей корневой файловой системы NFS4 fsid=0 (в моем случае /export). Таким образом, на самом деле nfs4 завершился ошибкой без какой-либо видимой ошибки, а монтирование nfs3 завершилось неудачно с правильным сообщением об ошибке. Итак, стало ясно, что виноват NFS4, и я мог забыть об ошибке «не экспортировано».

  2. Покопавшись, я внимательно изучил наш сервер kerberos и заметил, что недавно он получил обновление безопасности, которое также привело к более новой версии (1.19.2). Я прочитал документы MIT (https://web.mit.edu/kerberos/krb5-latest/doc/admin/enctypes.html) о шагах, которые следует предпринять после обновления версии. Одной частью было обновление нескольких, возможно, старых внутренних ключей на основе DES (DES устарел и очень скоро будет удален).У меня был один такой ключ на нашем сервере kerberos с именем: kadmin/история . Я обновил этот ключ, как задокументировано, используя кадмин и через некоторое время я обнаружил, что проблема с монтированием NFS4 исчезла. Однако я никогда не видел никаких сообщений об ошибках/предупреждениях на сервере kerberos или на сервере или клиенте NFS о какой-либо проблеме с ключом kerberos. Итак, я вижу, что nfs4-mounting снова работает, но я все еще немного сомневаюсь, действительно ли эта проблема была вызвана только ключом kerberos des-key...

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.