mount.nfs: доступ запрещен сервером при монтаже

5

У меня есть проблема, по которой я работал не менее 6 часов 28 часов без везения. Всякий раз, когда я пытаюсь установить каталог, я получаю следующую ошибку (завершенная версия в конце):

mount.nfs: access denied by server while mounting :

Изначально я использовал computer1 в качестве сервера nfs, но я переместил его на computer2 , и я пытаюсь установить computers3-8 . В качестве дополнительного примечания, computer2 теперь действует как маршрутизатор dhcp для всех других компьютеров (даже computer1 ), но я почти уверен, что проблема связана с настройками nfs computer2 , поскольку я попытался следующее:

  1. Попробуйте установить папку с исходного сервера computer1 на одного из клиентов computers3-8 - УСПЕХ
  2. Попробуйте установить папку с исходного сервера computer1 на новый сервер computer2 - УСПЕХ
  3. Попробуйте установить папку с нового сервера computer2 на одного из клиентов computers3-8 - FAILURE
  4. Попробуйте установить папку с нового computer2 сервера на старый сервер computer1 - FAILURE
  5. Попробуйте экспортировать, а затем установить любую другую папку на computer2 - FAILURE
  6. ssh to и from computer2 - УСПЕХ

В дополнение к этому, я также проверил, чтобы убедиться, что в соответствующих частях файла /etc/exports нет ошибок. Поэтому я почти абсолютно уверен, что это не проблема разрешения.

Вопрос: Учитывая, что это не сетевая ошибка, кто-нибудь может мне посоветовать, как я могу начать отладку этой проблемы.

Подробный вывод:

mount: proc already mounted on /proc
mount: /dev/mmcblk0p5 already mounted on /boot
mount: tmpfs already mounted on /var/tmp
mount: tmpfs already mounted on /var/log
mount.nfs: timeout set for Fri Nov 15 07:27:02 2013
mount.nfs: trying text-based options 'vers=3,rsize=8192,wsize=8192,nolock,addr=192.168.7.1'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 192.168.7.1 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 192.168.7.1 prog 100005 vers 3 prot UDP port 37300
mount.nfs: mount(2): Permission denied
mount.nfs: access denied by server while mounting 192.168.7.1:/home/raspi/Documents/raspi/raspi

Подробный вывод2:

Вот более прямой подход, который изолирует монтирование только от рассматриваемого каталога:

$ sudo mount -v -o "vers=3" 192.168.7.1:/home/raspi/Documents/raspi/raspi /home/raspi/test
mount: no type was given - I'll assume nfs because of the colon
mount.nfs: timeout set for Fri Nov 15 07:47:38 2013
mount.nfs: rpc.statd is not running but is required for remote locking.
mount.nfs: Either use '-o nolock' to keep locks local, or start statd.
mount.nfs: an incorrect mount option was specified

Я столкнулся с этой ошибкой rpc.statd is not running but is required for remote locking раньше, но весь поиск в мире не помог мне вообще ...

ИЗМЕНИТЬ

Хаос попросил меня выполнить следующие команды и отобразить результаты:

Сначала на сервере:

SERVER$ sudo exportfs -rv
exporting raspi1:/home/raspi/Documents/raspi/raspi
exporting raspi2:/home/raspi/Documents/raspi/raspi
exporting raspi3:/home/raspi/Documents/raspi/raspi
exporting raspi4:/home/raspi/Documents/raspi/raspi
exporting raspi5:/home/raspi/Documents/raspi/raspi
exporting raspi6:/home/raspi/Documents/raspi/raspi
exporting raspi7:/home/raspi/Documents/raspi/raspi
exporting raspi8:/home/raspi/Documents/raspi/raspi
exporting raspi9:/home/raspi/Documents/raspi/raspi
exporting raspi10:/home/raspi/Documents/raspi/raspi
exporting raspi11:/home/raspi/Documents/raspi/raspi
exporting raspi12:/home/raspi/Documents/raspi/raspi
exporting raspi13:/home/raspi/Documents/raspi/raspi
exporting raspi14:/home/raspi/Documents/raspi/raspi
exporting raspi15:/home/raspi/Documents/raspi/raspi
exporting raspi16:/home/raspi/Documents/raspi/raspi
exporting raspi17:/home/raspi/Documents/raspi/raspi
exporting raspi18:/home/raspi/Documents/raspi/raspi
exporting raspi19:/home/raspi/Documents/raspi/raspi
exporting raspi20:/home/raspi/Documents/raspi/raspi
exporting raspi21:/home/raspi/Documents/raspi/raspi
exporting raspi22:/home/raspi/Documents/raspi/raspi
exporting raspi23:/home/raspi/Documents/raspi/raspi
exporting raspi24:/home/raspi/Documents/raspi/raspi
exporting raspi25:/home/raspi/Documents/raspi/raspi
exporting raspi26:/home/raspi/Documents/raspi/raspi
exporting raspi27:/home/raspi/Documents/raspi/raspi
exporting raspi28:/home/raspi/Documents/raspi/raspi
exporting raspi29:/home/raspi/Documents/raspi/raspi
exporting raspi30:/home/raspi/Documents/raspi/raspi
exporting raspi5:/home/raspi/Downloads
exporting 192.168.7.105:/home/raspi/Documents/raspi

А затем на клиенте

CLIENT$ showmount -e 192.168.7.1
Export list for 192.168.7.1:
/home/raspi/Documents/raspi       192.168.7.105
/home/raspi/Documents/raspi/raspi raspi30,raspi29,raspi28,raspi27,raspi26,raspi25,raspi24,raspi23,raspi22,raspi21,raspi20,raspi19,raspi18,raspi17,raspi16,raspi15,raspi14,raspi13,raspi12,raspi11,raspi10,raspi9,raspi8,raspi7,raspi6,raspi5,raspi4,raspi3,raspi2,raspi1
/home/raspi/Downloads             raspi5

CLIENT$ sudo mount -a
mount.nfs: access denied by server while mounting 192.168.7.1:/home/raspi/Documents/raspi/raspi

CLIENT$ sudo tail -f /var/log/daemon.log 2>&1
Nov 15 21:35:55 raspi5 dhclient: bound to 192.168.7.105 -- renewal in 250 seconds.
Nov 15 21:40:05 raspi5 dhclient: DHCPREQUEST on eth0 to 192.168.7.1 port 67
Nov 15 21:40:05 raspi5 dhclient: DHCPACK from 192.168.7.1
Nov 15 21:40:05 raspi5 dhclient: bound to 192.168.7.105 -- renewal in 294 seconds.
Nov 15 21:44:59 raspi5 dhclient: DHCPREQUEST on eth0 to 192.168.7.1 port 67
Nov 15 21:44:59 raspi5 dhclient: DHCPACK from 192.168.7.1
Nov 15 21:44:59 raspi5 dhclient: bound to 192.168.7.105 -- renewal in 262 seconds.
Nov 15 21:49:21 raspi5 dhclient: DHCPREQUEST on eth0 to 192.168.7.1 port 67
Nov 15 21:49:21 raspi5 dhclient: DHCPACK from 192.168.7.1
Nov 15 21:49:21 raspi5 dhclient: bound to 192.168.7.105 -- renewal in 273 seconds.

РЕДАКТИРОВАТЬ 2 :

Хаос попросил меня выполнить следующие команды и отобразить результаты:

SERVER$ ping raspi5
PING raspi5 (192.168.7.105) 56(84) bytes of data.
64 bytes from raspi5 (192.168.7.105): icmp_seq=1 ttl=64 time=0.699 ms
64 bytes from raspi5 (192.168.7.105): icmp_seq=2 ttl=64 time=0.683 ms

SERVER$ sudo tail -f /var/log/daemon.log
tail: cannot open ‘/var/log/daemon.log’ for reading: No such file or directory

Вот мой файл /etc/exports на сервере. Как вы можете видеть, я пытаюсь использовать его имя, как определено в /etc/hosts , его ip-адрес, и я также пытаюсь экспортировать разные папки. Все остальные строки я пропустил, поскольку они являются просто дубликатами последней строки, просто перенаправлены на разные расы.

# /etc/exports: the access control list for filesystems which may be exported
#       to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#

/home/raspi/Downloads raspi5(rw,sync,no_subtree_check,no_root_squash)
/home/raspi/Documents/raspi/ 192.168.7.105(rw,sync,no_subtree_check,no_root_squash,fsid=0)
/home/raspi/Documents/raspi/raspi raspi5(rw,sync,no_subtree_check,no_root_squash,fsid=0)

Вот мой файл /etc/fstab на моем клиенте raspi5

proc            /proc           proc    defaults          0       0
/dev/mmcblk0p5  /boot           vfat    defaults          0       2
/dev/mmcblk0p6 /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, so no using swapon|off from here on, use  dphys-swapfile swap[on|off]  for that

#automatically mount the shared raspi folder(s)
# Remember that NFS4 is AIDS, so use NFS3
192.168.7.1:/home/raspi/Documents/raspi/raspi /home/raspi/ nfs nfsvers=3,rsize=8192,wsize=8192,rw,auto,nolock 0 0

# Move highly used directories to RAM
tmpfs /var/tmp tmpfs nodev,nosuid,size=50M 0 0
tmpfs /var/log tmpfs nodev,nosuid,size=50M 0 0

ИЗМЕНИТЬ 3:

Следуя некоторым советам здесь , я также установил флаг insecure в экспорте , но безрезультатно, и вот результат rpcinfo -p на клиенте и сервере:

CLIENT$ sudo rpcinfo -p
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  53553  status
    100024    1   tcp  60026  status

SERVER$ rpcinfo -p
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  42430  status
    100024    1   tcp  49377  status
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    2   tcp   2049
    100227    3   tcp   2049
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    2   udp   2049
    100227    3   udp   2049
    100021    1   udp  33106  nlockmgr
    100021    3   udp  33106  nlockmgr
    100021    4   udp  33106  nlockmgr
    100021    1   tcp  47922  nlockmgr
    100021    3   tcp  47922  nlockmgr
    100021    4   tcp  47922  nlockmgr
    100005    1   udp  50875  mountd
    100005    1   tcp  53329  mountd
    100005    2   udp  53583  mountd
    100005    2   tcp  42062  mountd
    100005    3   udp  36556  mountd
    100005    3   tcp  39984  mountd

РЕДАКТИРОВАТЬ 4:

Далее следуя некоторым советам здесь , я получил следующие журналы отладки:

[ 2233.803852] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
[ 2233.803885] NFSD: starting 90-second grace period (net ffffffff81cd29c0)
[ 3261.750455] nfsd: last server has exited, flushing export cache
[ 3262.912654] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
[ 3262.912688] NFSD: starting 90-second grace period (net ffffffff81cd29c0)
[ 5231.798334] nfsd: last server has exited, flushing export cache
[ 5232.956633] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
[ 5232.956668] NFSD: starting 90-second grace period (net ffffffff81cd29c0)
[ 5350.889640] nfsd: last server has exited, flushing export cache
[ 5352.023534] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
[ 5352.023577] NFSD: starting 90-second grace period (net ffffffff81cd29c0)
[ 5517.837425] nfsd: last server has exited, flushing export cache
[ 5518.987793] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
[ 5518.987826] NFSD: starting 90-second grace period (net ffffffff81cd29c0)
[56604.080162] Netfilter messages via NETLINK v0.30.
[56707.453535] nfsd: last server has exited, flushing export cache
[56708.605020] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
[56708.605057] NFSD: starting 90-second grace period (net ffffffff81cd29c0)
[57338.926093] NFSD: laundromat service - starting
[57338.926105] NFSD: laundromat_main - sleeping for 90 seconds
[57363.216188] nfsd: freeing readahead buffers.
[57363.216244] nfsd: last server has exited, flushing export cache
[57364.351041] set_max_drc nfsd_drc_max_mem 6008832 
[57364.354764] nfsd: creating service
[57364.354771] nfsd: allocating 32 readahead buffers.
[57364.356023] nfsd4_umh_cltrack_upcall: cltrack_prog is disabled
[57364.356040] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
[57364.356072] NFSD: starting 90-second grace period (net ffffffff81cd29c0)
[57364.369688] nfsd_dispatch: vers 3 proc 0
[57372.738225] nfsd_dispatch: vers 4 proc 0
[57372.753507] nfsd_dispatch: vers 4 proc 1
[57372.753521] nfsv4 compound op #1/3: 24 (OP_PUTROOTFH)
[57372.755550] exp_export: export of invalid fs type.
[57372.755679] found domain 192.168.7.105,raspi5
[57372.755685] found fsidtype 1
[57372.755690] found fsid length 4
[57372.755695] Path seems to be <>
[57372.755722] nfsv4 compound op ffff8801a47ec080 opcnt 3 #1: 24: status 2
[57372.755731] nfsv4 compound returned 2
[57372.779429] nfsd_dispatch: vers 3 proc 0
[57372.792595] exp_export: export of invalid fs type.

РЕДАКТИРОВАТЬ 5:

Я сделал некоторый прогресс и вывел следующие

  1. Это не проблема порта, так как клиент может telnet в хост telnet 192.168.7.1 2049
  2. возможно не проблема сети, поскольку сервер не может даже подключиться к себе
  3. В старой версии, которая поддерживала (и все еще поддерживает) установку, работало nfs-kernel-server 1:1.2.4-1 , тогда как новый сервер, который не поддерживает установку, работает nfs-kernel-server 1:1.2.8-2
  4. Команда sudo /etc/init.d/portmap restart работает на старом сервере, но не на новом сервере, который говорит мне, что мне не хватает портмапа на новом сервере. Однако, когда я пытаюсь установить его через sudo apt-get install portmap , он сообщает мне, что Note, selecting 'rpcbind' instead of 'portmap', and that rpcbind - это уже самая новая версия

Изменить 6:

Вот результат iptables -L на моем сервере:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
LOG        all  --  anywhere             anywhere             LOG level warning

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

и правильные порты открыты:

CLIENT$ nmap -P0 192.168.7.1

Starting Nmap 6.00 ( http://nmap.org ) at 2013-11-16 06:44 UTC
Nmap scan report for raspiserver (192.168.7.1)
Host is up (0.0095s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
111/tcp  open  rpcbind
2049/tcp open  nfs

Nmap done: 1 IP address (1 host up) scanned in 1.55 seconds
    
задан puk 13.04.2017 в 14:23
источник

5 ответов

4

У меня была такая же проблема, как и у OP. Раньше это работало для меня, но потом после обновления это не помогло. Решение заключалось в том, чтобы добавить опцию «nfsvers = 3».

    
ответ дан Joe O 09.12.2014 в 12:58
1

Мои два коллеги на работе просто решили аналогичную проблему в Vagrant. AppArmor был виновником, решение можно найти здесь , ссылаясь на:

mount: cannot mount block device /some/path read-only

и dmesg показывает:

[ 6944.194280] type=1400 audit(1385049795.420:32): apparmor="DENIED" operation="mount" info="failed type match" error=-13 parent=6631 profile="lxc-container-default" name="/some/other/path" pid=6632 comm="mount" srcname="/some/path" flags="rw, bind"

AppArmor блокирует привязку mount -o внутри контейнера LXC.

Чтобы включить id add в /etc/apparmor.d/lxc/lxc-default :

profile lxc-container-default flags=(attach_disconnected,mediate_deleted) {
  ...
    mount options=(rw, bind),
  ...

Перезагрузка apparmor:

# /etc/init.d/apparmor reload
    
ответ дан dhill 19.03.2016 в 16:14
0

Сначала возникает ошибка rpc.statd, потому что демон не запущен. Запустите демон:

sudo service statd start

Во-вторых, опция монтирования vers=3 неверна, она должна быть

nfsvers=3
    
ответ дан chaos 15.11.2013 в 09:17
0

Можно было бы упомянуть (даже если это, вероятно, не так), если вы вдруг получаете эту ошибку после переименования папки или попытки получить доступ к новой, возможно, вы забыли, что на самом деле вам нужно указать сервер - какие общие папки и что не в /etc/exports - это было проблемой в моем случае.

После того как вы изменили этот файл, вам также нужно выполнить sudo service nfs-kernel-server restart

    
ответ дан pzkpfw 19.12.2014 в 18:49
0

Если сервер не монтируется на локальном хосте, проблема не в сети.

Взгляните на /etc/hosts.deny и /etc/hosts.allow.

Только для дальнейших проблем ...: Я играл в эти дни со старой версией NFS. У меня был промежуточный коммутатор между двумя хостами, который разрешал все TCP и UDP-связи от ServerIP < - > ClientIP, telnet работал на каждом порту ... но rpcinfo -p не делал.

Мы обнаружили, что у коммутатора была функция «проверка», которая проверила все пакеты «sunrpc», и если версия не находилась в «разрешенных» версиях, они потеряли пакеты, не запустив ничего. Он называется «Проверка протокола уровня приложений». Ссылка

После этого мы также обнаружили, что нам нужно настроить статические порты для межсетевого экрана, но это еще одна проблема.

    
ответ дан LiPi 18.06.2015 в 12:25