NFS: сервер говорит "запрос на монтирование", но клиент видит "доступ запрещен"
У меня есть две машины, NFS-сервер (RHEL) и клиент (Debian). На сервере настроена NFS, экспортирующая определенный каталог:
server:~$ sudo /usr/sbin/rpcinfo -p localhost
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 910 status
100024 1 tcp 913 status
100021 1 udp 53391 nlockmgr
100021 3 udp 53391 nlockmgr
100021 4 udp 53391 nlockmgr
100021 1 tcp 32774 nlockmgr
100021 3 tcp 32774 nlockmgr
100021 4 tcp 32774 nlockmgr
100007 2 udp 830 ypbind
100007 1 udp 830 ypbind
100007 2 tcp 833 ypbind
100007 1 tcp 833 ypbind
100011 1 udp 999 rquotad
100011 2 udp 999 rquotad
100011 1 tcp 1002 rquotad
100011 2 tcp 1002 rquotad
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100005 1 udp 1013 mountd
100005 1 tcp 1016 mountd
100005 2 udp 1013 mountd
100005 2 tcp 1016 mountd
100005 3 udp 1013 mountd
100005 3 tcp 1016 mountd
server$ cat /etc/exports
/dir *.my.domain.com(ro)
client$ grep dir /etc/fstab
server.my.domain.com:/dir /dir nfs tcp,soft,bg,noauto,ro 0 0
Все вроде хорошо, но когда я пытаюсь смонтировать, я вижу следующее:
client$ sudo mount /dir
mount.nfs: access denied by server while mounting server.my.domain.com:/dir
И на сервере я вижу:
server$ tail /var/log/messages
Mar 15 13:46:23 server mountd[413]: authenticated mount request from client.my.domain.com:723 for /dir (/dir)
Что мне здесь не хватает? Как я должен отлаживать это?
6 ответов
Я видел это, если ваши /etc/hosts.allow и /etc/hosts.deny не верны; проверьте эти файлы на наличие строки с portmap в ней и либо закомментируйте ее (небезопасно, если вы не находитесь за брандмауэром), либо установите строку на клиент-сервере в качестве вашей конкретной подсети.
Так, например, в /etc/hosts.allow:
portmap: 192.168.0.0/16
... и закомментируйте все, что находится в /etc/hosts.deny, чтобы сделать только hosts.allow активным. NFS использует tcpwrappers и эти файлы для управления доступом вместе с тем, что находится в /etc/exports.
Ваш rpcinfo
указывает, что NFS пытается подключиться через UDP. оказалось, что NFSv4 больше не работает по протоколу UDP, но ожидает использования TCP.
ядро linux, например, пытается смонтировать rootfs поверх UDP даже для NFSv4, и ему нужно было добавить специальный аргумент в конце nfsroot
, пример: nfsroot=192.79.143.131:/diskless/client01,tcp
Я столкнулся с той же проблемой на сервере Debian 10.2 с клиентом macOS. Мое решение:
На сервере NFS добавьте
insecure
опцион на долю в
/etc/exports
и повторно запустить
exportfs -r
Я столкнулся с той же проблемой, мой сервер - машина с Ubuntu, а мой клиент - MacBook Air. В прошлом было решение перезапустить серверную машину, но поскольку я использую ее в качестве медиацентра, это не всегда весело. Итак, что я сделал, чтобы исправить это было:
на сервере отредактируйте / etc / exports
pico /etc/exports
тогда я смываю это
exportfs
и добавьте новую строку с указанным IP-адресом клиента, с которым возникла проблема (моя обычная общая папка - для всей сети), затем я размонтирую общий ресурс на клиенте и заново смонтирую его, и теперь он работает.
PS: но он не показывался как ярлык слева в моем искателе, как обычно, я должен был найти его в точке монтирования
(лучше поздно, чем никогда)
Я испытал тот же и очень специфический сценарий, пытаясь загрузить ядро с помощью загрузчика netbsd pxeboot. Это на самом деле говорит NFSv2. 8 лет назад это также могло быть основной причиной: ваш клиент Debian и сервер rhel не говорили на одном языке. Вы могли бы включить NFSv2, добавив -V2
в качестве аргумента rpc.mountd
, Вы также можете в конечном итоге отключить v3 и v4 с помощью -N3,4
,
К сожалению, перезагрузка сервера решила проблему, поэтому я до сих пор не знаю, почему это произошло, но это больше не так.
Это сломано от всех машин или только один? Монтируется ли псевдофайловая система nfsd на /proc/fs/nfsd
на сервере?