NFS V4 на хосте FreeBSD, как клиент, так и сервер, монтируется нормально, но в файловой системе нет чтения или записи, сообщает об ошибке ввода-вывода.

Я успешно смонтировал и использовал NFS версии 4 с сервером Solaris и клиентом FreeBSD. Проблема в том, что сервер FreeBSD и клиент FreeBSD версии 4. Версия 3 работает отлично.

Я использую сервер FreeBSD NFS, начиная с FreeBSD версии 4.5 (тогда у меня были клиенты IBM AiX).

Проблема: монтируется нормально, но в кеше kerberos нет участников, и при попытке чтения или записи в смонтированной файловой системе я получаю ошибку: Ошибка ввода/вывода

Принципы nfs/server-fqdn@REALM и nfs/client-fqdn@REALM создаются на сервере kerberos и правильно хранятся в файлах keytab с обеих сторон.

Я выдаю билеты tgt из KDC, используя описанное выше для обеих сторон для корневого кэша kerberos.

Я запускаю службы правильно: файл /etc/rc.conf

rpcbind_enable="YES"
gssd_enable="YES"
rpc_statd_enable="YES"
rpc_lockd_enable="YES"
mountd_enable="YES"
nfsuserd_enable="YES"
nfs_server_enable="YES"
nfsv4_server_enable="YES"

затем я запускаю службы на клиенте: rpcbind, gssd, nfsuserd, на сервере все вышеперечисленное имеет файл экспорта:

V4: /marble/nfs   -sec=krb5:krb5i:krb5p -network 10.20.30.0 -mask 255.255.255.0

я монтирую:

# mount_nfs -o nfsv4 servername:/ /my/mounted/nfs
# 
# mkdir /my/mounted/nfs/e
# mkdir: /my/mounted/nfs/e: Input/output error
#

Тот же результат даже для команды ls. klist не показывает никаких новых принципалов в корневом кеше или любом другом кеше. Удивительная производительность в версии 3 мне нравится, но мне нужна функция локальной блокировки файлов NFS4. Вторая причина — безопасность. Мне нужны RPC-вызовы с поддержкой Kerberos (-sec=krbp).

Если кто-то из вас добился этого с помощью сервера FreeBSD для NFS версии 4, пожалуйста, дайте ответ на этот вопрос, я буду рад, если вы это сделаете.


person Alexandros Perdikomatis    schedule 09.05.2016    source источник
comment
Я использую клиент/сервер V4 на FreeBSD, но без аутентификации Kerberos. Для моих целей достаточно -mapall=1001:1001. Это, вероятно, не имеет значения, но я перечисляю общие ресурсы перед строкой V4: (т. е. одна строка для каждого общего ресурса для V3, а затем одна строка для конфигурации V4 для родительской папки всех общих ресурсов V3). Может быть, вы сначала попытаетесь заставить его работать без kerberos? Например. V4: /marble/ -sec=sys 192.168.2.200 тогда, если получится, попробовать добавить Kerberos?   -  person Greg    schedule 09.05.2016
comment
Большое спасибо, что нашли время ответить на мой вопрос.   -  person Alexandros Perdikomatis    schedule 10.05.2016
comment
Большое спасибо, что нашли время ответить на мой вопрос. К сожалению, даже имея -sec=sys при экспорте файла тот же результат :( root@lucy # mount -o nfsv4 lynx:/ /root/ela/ root@lucy # mkdir /root/ela/a mkdir: /root/ela/a: Input/output error но спасибо за ответ. Я не хочу использовать Solaris (который отлично работает) из-за сопоставления пользователей с NIS, NIS на Solaris ужасен, ldap должен делать но этот сценарий предназначен для небольших сетей, использующих NIS.NIS во FreeBSD великолепна.СПАСИБО   -  person Alexandros Perdikomatis    schedule 10.05.2016


Ответы (1)


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

Сервер rc.conf:

nfs_server_enable="YES"
nfs_server_flags="-u -t -n 4"
nfsv4_server_enable="YES"
nfsuserd_enable="YES"
mountd_flags="-r"

Сервер /etc/exports:

/parent/path1 -mapall=1001:1001 192.168.2.200
/parent/path2 -mapall=1001:1001 192.168.2.200
... (more shares)
V4: /parent/ -sec=sys 192.168.2.200

Клиент rc.conf:

nfs_client_enable="YES"
nfs_client_flags="-n 4"
rpc_lockd_enable="YES"
rpc_statd_enable="YES"

Клиент fstab:

192.168.2.100:/path1/  /mnt/path1/  nfs rw,bg,late,failok,nfsv4  0 0
192.168.2.100:/path2/  /mnt/path2/  nfs rw,bg,late,failok,nfsv4  0 0
... (more shares)

Как вы видите, клиент пытается смонтировать только то, что находится после пути /parent/, указанного в строке V4 на сервере. 192.168.2.100 — это IP-адрес сервера, а 192.168.2.200 — это IP-адрес клиента. Эта настройка позволит только одному клиенту подключаться к серверу.

Надеюсь, я ничего не пропустил. Кстати, пожалуйста, поднимайте подобные вопросы в SuperUser или ServerFault, а не в StackOverflow. Я удивлен, что этот вопрос еще не закрыт из-за этого;)

person Greg    schedule 10.05.2016
comment
Не обращайте внимания на неудачную попытку моей настройки, даже если уровень безопасности снижен до «sys», я хочу еще раз поблагодарить вас за ваш ответ. Я не знаю, что я делаю неправильно. Спасибо за советы по сайту ;) - person Alexandros Perdikomatis; 11.05.2016
comment
Добро пожаловать, вы всегда можете попробовать forums.freebsd.org, если есть что-то очевидное, что я пропустил . - person Greg; 11.05.2016