Еще одна ошибка разрешений NFS: Linux NFS4 отказано в доступе ('подлинные поддельные учетные данные (печать нарушена)') с виртуальной машины NAT'd

Внутри виртуальной машины адрес хоста - 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, потому что полагал, что проблема может быть в том, что адреса не совпадают, но это ничего не меняет. Через несколько минут клиент возвращает обычное сообщение "Отказано в доступе", доступ запрещен сервером.

На стороне сервера я бегу

# 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, но, похоже, как заведомо запутанная система, которая могла бы действительно использовать некоторую прозрачность, учитывая, как часто она используется.. В любом случае, спасибо за чтение.

2 ответа

Возможно, это не решит чью-либо проблему, но вот что сработало у меня. После изменения имени хоста сервера и перезагрузки я получил эту чушь «Auth Bogus Credential».

  1. Убедитесь, что вы выполнили монтирование привязки. Для меня экспорт был /srv/nfs4/foo, поэтому я так и сделал.

    sudo mount --bind /home/jay/foo /srv/nfs4/foo

  2. Очистите кэш nfs etab и повторно экспортируйте экспортированные данные.

    экспортфс -рав

Как по волшебству, оно снова работает. Я записал эти две вещи в сценарий, чтобы, если они мне понадобятся снова, мне не пришлось ходить на охоту и ругаться.

      #!/bin/bash
sudo mount --bind /home/jay/foo /srv/nfs4/foo
exportfs -rav

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

Другие вопросы по тегам