Назад | Перейти на главную страницу

Еще одна ошибка разрешений NFS: отказано в доступе к Linux NFS4 («Auth Bogus Credentials (печать нарушена)») с виртуальной машины с NAT.

Внутри виртуальной машины адрес хоста 10.0.2.2, локальный адрес 10.0.2.15. (VirtualBox). На стороне хоста это переводится в 127.0.0.1. Для подключения:

sudo mount -vvvt nfs4 -o clientaddr=127.0.0.1 10.0.2.2:/srv /mnt

Я указал clientaddr, потому что решил, что проблема может быть в том, что адреса не совпадают, но это ничего не меняет. Через несколько минут клиент возвращает обычное сообщение Permission Denied, доступ запрещен сервером.

На стороне сервера я запускаю

# rpc.mountd -d all -F
# rpc.idmapd -vvvf
# rpc.nfsd -d

Я использую systemd, поэтому я также слежу за журналом на предмет любых выходных данных. Когда я делаю запрос на монтирование, по сети видно следующее:

reply ERR 20: Auth Bogus Credentials (seal broken)

но ничего не отображается в журнале (который должен иметь вывод rpc.nfsd) или в выводе rpc.mountd или rpc.idmapd, кроме некоторых сообщений запуска. На самом деле, в случае с rpc.mountd я иногда получаю следующее:

rpc.mountd: auth_unix_ip: inbuf 'nfsd 127.0.0.1' 
rpc.mountd: auth_unix_ip: client (nil) 'DEFAULT'

Насколько мне известно (пожалуйста, поправьте меня!), Нет другого источника информации о функционировании NFS, а также нет никакой конфигурации. Я указал подробные режимы для каждой команды, поэтому я не понимаю, как я должен диагностировать эту проблему.

Я предполагаю, что это проблема с моим файлом экспорта, который выглядит следующим образом:

/srv 127.0.0.1(rw,sync,no_subtree_check,no_root_squash)

Но я бы предпочел получить обратную связь от системы о том, что идет не так, чем возиться с моим файлом экспорта методом проб и ошибок. Итак, кто-нибудь знает, где я могу узнать больше о том, что происходит?

Спасибо!

РЕДАКТИРОВАТЬ

Недавно я запустил exportfs -rav

и теперь клиент сразу же возвращает «Операция запрещена», а rpc.mountd выводит:

rpc.mountd: auth_unix_ip: inbuf 'nfsd 127.0.0.1'
rpc.mountd: v4root_create: path '/' flags 0x12401
rpc.mountd: v4root_create: path '/srv' flags 0x10401
rpc.mountd: auth_unix_ip: client 0x1d69d70 '127.0.0.1'
rpc.mountd: nfsd_fh: inbuf '127.0.0.1 1 \x00000000'
rpc.mountd: nfsd_fh: found 0x1d73e90 path / 

но этот вывод может быть связан только с запуском exportfs. (Обратите внимание, что я перезапускал демонов несколько раз раньше, поэтому я не знаю, как exportfs изменил ситуацию)

Хорошо, похоже, добавление опции 'небезопасный' исправило это:

secure This option requires that requests originate on an  Internet  port  less  than
       IPPORT_RESERVED. (1024). This option is on by default. To turn it off, specify 
       insecure.

Это странно, поскольку я запускал клиент NFS как root.

В любом случае, почему эта проблема не была очевидна для оператора (меня)? Я не понимаю, как часть программного обеспечения может считаться пригодным для производственного использования, если его диагностика полностью скрыта, чтобы сделать ее недоступной для неспециалистов ... Я не собираюсь обижать NFS здесь, но кажется как заведомо запутанная система, которая действительно могла бы использовать немного больше прозрачности, учитывая, как часто она используется ... В любом случае, спасибо за чтение.

Одна вещь, которую нужно попробовать, - проверить широко открытые разрешения в /etc/exports (0.0.0.0/0, вероятно, правильный широко открытый). Если это работает, то, вероятно, это связано с тем, что NFS не совсем понимает, откуда исходит клиентский запрос, хотя я заметил, что вы упомянули, что сетевой трафик является NAT.