У меня есть две машины, 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)
Что мне здесь не хватает? Как мне отладить это?
Я видел это, если ваши /etc/hosts.allow и /etc/hosts.deny неверны; проверьте эти файлы на наличие строки с картой портов в ней и либо закомментируйте ее (небезопасно, если вы не находитесь за брандмауэром), либо установите строку на клиенте / сервере как вашу конкретную подсеть.
Так, например, в /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
К сожалению, перезагрузка сервера решила проблему, поэтому я до сих пор не знаю Зачем это происходило, но этого больше нет.
На всех машинах сломано или только на одной? Псевдо-файловая система nfsd смонтирована на /proc/fs/nfsd
на сервере?
Я столкнулся с той же проблемой, мой сервер - это машина 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
.
Я столкнулся с той же проблемой на сервере Debian 10.2 с клиентом macOS. Мое решение:
На сервере NFS добавьте insecure
опцион на долю в /etc/exports
и повторно запустить exportfs -r