Вопрос или проблема
Внутри виртуальной машины адрес хоста – 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, и никаких конфигураций тоже нет. Я указал режимы подробного вывода для каждой команды, поэтому не знаю, как мне диагностировать эту проблему.
Я предполагаю, что проблема в моем файле exports, который выглядит следующим образом:
/srv 127.0.0.1(rw,sync,no_subtree_check,no_root_squash)
Но мне бы хотелось получить отзыв от системы о том, что идет не так, вместо того чтобы возиться с моим файлом exports методом проб и ошибок. Так что, знает ли кто-нибудь, где я могу узнать больше о том, что происходит?
Спасибо!
ИЗМЕНЕНИЕ
Недавно я выполнил
exportfs -rav
и теперь клиент сразу возвращает ‘Операция не разрешена’, а rpc.mountd выводит:
rpc.mountd: auth_unix_ip: inbuf 'nfsd 127.0.0.1'
rpc.mountd: v4root_create: path "https://serverfault.com/" 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 повлияло на ситуацию)
ХОРОШО, похоже, что добавление параметра ‘insecure’ решило проблему:
secure Этот параметр требует, чтобы запросы исходили с интернет-порта ниже
IPPORT_RESERVED. (1024). Этот параметр включён по умолчанию. Чтобы отключить его, укажите
insecure.
Это странно, поскольку я запускал NFS-клиент от имени root.
В любом случае, почему эта проблема не была явно указана оператору (мне)? Я не понимаю, как программное обеспечение может считаться пригодным для использования в производстве, если его диагностика полностью скрыта, что делает ее недоступной для неспециалистов.. Я не собираюсь критиковать NFS, но это кажется notoriously obfuscated системой, которой действительно нужна большая прозрачность, учитывая, как часто она используется.. В любом случае, спасибо за внимание.
Одно из решений – протестировать открытые права в /etc/exports
(0.0.0.0/0, вероятно, самый правильный вариант). Если это сработает, то, возможно, дело в том, что NFS не совсем понимает, откуда поступает запрос клиента, хотя я заметил, что вы упомянули, что сетевой трафик NAT’ится.
Это может не решить проблему других пользователей, но вот что сработало для меня. После изменения имени хоста сервера и перезагрузки я получал этот “Богусный учетные данные” бред.
-
Убедитесь, что вы выполнили свою привязку. Для меня мой экспорт был /srv/nfs4/foo, поэтому я сделал
sudo mount –bind /home/jay/foo /srv/nfs4/foo
-
Очистите кеш nfs etab и переэкспортируйте свои экспорты
exportfs -rav
Как по волшебству, это снова работает. Я поместил эти две вещи в скрипт, чтобы, если они мне снова понадобятся, мне не пришлось бы охотиться и ругаться.
#!/bin/bash
sudo mount --bind /home/jay/foo /srv/nfs4/foo
exportfs -rav
Ответ или решение
Ответ на вопрос: Ошибка прав доступа NFS4: "Auth Bogus Credentials (seal broken)" в NAT’ованной ВМ
Введение
Ошибка "Auth Bogus Credentials (seal broken)" при использовании NFS (Network File System) часто возникает из-за проблем с аутентификацией и разрешениями. В вашем случае, NAT-ированная виртуальная машина (ВМ) пытается подключиться к NFS-серверу через адреса, которые могут не подходить под ожидаемые параметры сервера. Мы детально рассмотрим вашу ситуацию и предложим проверенные решения для устранения данной проблемы.
Проблема
Согласно предоставленным данным, вы пытаетесь смонтировать NFS-ресурс с использованием следующей команды:
sudo mount -vvvt nfs4 -o clientaddr=127.0.0.1 10.0.2.2:/srv /mnt
При этом возникают ошибки доступа, связанные с аутентификацией. Вы также отметили, что на стороне сервера происходит вывод сообщения reply ERR 20: Auth Bogus Credentials (seal broken)
, что указывает на проблему с аутентификацией клиента.
Основные причины проблемы
-
Несоответствие адресов: Использование
clientaddr=127.0.0.1
может вызвать проблемы, если конфигурация сервера не позволяет подключаться к NFS с данного IP-адреса, поскольку клиентская сторона фактически находится на виртуальном адресе10.0.2.15
. -
Неправильная настройка /etc/exports: Ваша запись в файле
/etc/exports
:/srv 127.0.0.1(rw,sync,no_subtree_check,no_root_squash)
допускает доступ только с IP-адреса
127.0.0.1
. Это ограничивает возможность подключения с других адресов, даже если вы используете NAT. -
Проблемы с безопасностью: Параметры безопасности, такие как использование опции
secure
, могут препятствовать подключению с портов, превышающих 1024, что приводит к дополнительным проблемам с аутентификацией при выполнении операций от имени root.
Рекомендуемые решения
-
Широкие права доступа: Рассмотрите возможность временного изменения конфигурации в
/etc/exports
, чтобы дать доступ всем IP-адресам:/srv *(rw,sync,no_subtree_check,no_root_squash)
После изменения не забудьте выполнить:
exportfs -rav
Это позволит проверить, не связано ли отсутствие доступа с ограничениями по IP-адресам.
-
Использование параметра
insecure
: Как вы уже выяснили, добавление опцииinsecure
в экспорт позволяет более свободно работать с NFS:/srv *(rw,sync,no_subtree_check,no_root_squash,insecure)
Это разрешает подключения с высоких портов (выше 1024).
-
Проверка аутентификации и хостов: Убедитесь, что DNS и имена хостов правильно сконфигурированы. Запустите команду:
hostname
и проверьте, не возникает ли конфликтов с разрешением имен.
-
Мониторинг сетевых подключений: Используйте инструменты мониторинга сетевых соединений, такие как
tcpdump
, для отслеживания запросов и ответов NFS. Это может дать вам дополнительную информацию о том, что происходит на уровне сети.
Заключение
Данная ошибка может быть результатом нескольких факторов, связанных как с конфигурацией сервера, так и с особенностями NAT. Применяя предложенные решения, вы сможете устранить проблему доступа к NFS и улучшить взаимодействие виртуальной машины с сервером. Наконец, важно помнить, что правильная настройка и адекватная документация являются основой эффективной работы с NFS, что также поможет в будущем избежать подобных проблем.
Если у вас будут дополнительные вопросы, не стесняйтесь обращаться.