У мене проблема з монтажем частки NFS, яку я не можу вирішити, що викликає гайки. Це ситуація:
Задіяно три машини:
Хост A: мандрагора, IP 192.168.1.4, сервер NFS
Хост B: athlon64, IP 192.168.1.64, клієнт NFS
Хост C: lap-fzs-2, IP 192.168.1.27, клієнт NFS
Хост A має сервер NFS, який експортує каталог, який встановлюється хостом B. Це працює бездоганно і працює з віків. Ніяких проблем. Тепер хост C виходить на знімок. Ubuntu 12.04 LTS, сучасна система. Я намагався змонтувати ту саму частку від хоста A, але отримати дозвіл відхилено помилку:
root@lap-fzs-2:~# mount -t nfs mandrake:/data /data -onfsvers=2
mount.nfs: access denied by server while mounting mandrake:/data
Той факт, що він працює між хостами A і B, повинен підтверджувати, що експорт NFS сам по собі працює. Ось інформація, яку я можу дати, що змушує мене думати, що це має працювати. Можливо, хтось бачить те, чого я не знаю, і знає, чому це не вдається новому господареві C.
Експорт сервера:
[root@mandrake /root]# cat /etc/exports
/suse 192.168.1.0/16(ro,no_root_squash)
/data 192.168.1.0/24(rw)
#/data3 192.168.2.0/24(rw)
#/data 192.168.2.0/16(rw,all_squash,anonuid=500,anongid=500)
#/data3 192.168.2.0/16(rw,all_squash,anonuid=500,anongid=500)
[root@mandrake /root]# exportfs
/suse 192.168.1.0/16
/data 192.168.1.0/24
Портмейпер працює, експорт відомий і встановлений хостом B "athlon64".
[root@mandrake /root]# showmount -e
Export list for mandrake:
/data 192.168.1.0/24
/suse 192.168.1.0/16
[root@mandrake /root]# showmount -a
All mount points on mandrake:
atlhon64.acme.local:/data
Коли хост athlon64 монтує загальну частку NFS, журнал сервера показує успіх:
Feb 11 20:06:46 mandrake mountd[460]: authenticated mount request from atlhon64.acme.local:770 for /data (/data)
Але коли хост C намагається встановити ту саму спільну частину, журнал сервера показує:
Feb 11 20:12:42 mandrake mountd[460]: refused mount request from lap-fzs-2 for /data (/): no export entry
Хост C бачить сервер, доходить до портмейпера і nfsd, але не працює в дозволах.
root@lap-fzs-2:~# showmount -e 192.168.1.4
Export list for 192.168.1.4:
/data 192.168.1.0/24
/suse 192.168.1.0/16
root@lap-fzs-2:~# mount -t nfs -v mandrake:/data /data -onfsvers=2,proto=udp
mount.nfs: timeout set for Mon Feb 11 21:49:23 2013
mount.nfs: trying text-based options 'nfsvers=2,proto=udp,addr=192.168.1.4'
mount.nfs: prog 100003, trying vers=2, prot=17
mount.nfs: trying 192.168.1.4 prog 100003 vers 2 prot UDP port 2049
mount.nfs: prog 100005, trying vers=1, prot=17
mount.nfs: trying 192.168.1.4 prog 100005 vers 1 prot UDP port 636
mount.nfs: mount(2): Permission denied
mount.nfs: access denied by server while mounting mandrake:/data
Я повинен використовувати NFSv2 на клієнті. Використання NFSv4 не вдасться, оскільки сервер його не підтримує. Він не вдається, оскільки він намагається підключитися через TCP безпосередньо до 2049, але порт не відкритий. Жодного запасного не відбувається. Використання NFSv3 призведе до невідповідності програми / версії RPC.
Що я пропускаю?
Оновлення:
Усі три машини працюють в одній локальній мережі, на одному і тому ж комутаторі. На хості C не існує активного брандмауера:
root@lap-fzs-2:~# iptables -vnL
Chain INPUT (policy ACCEPT 17 packets, 1853 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 20 packets, 5611 bytes)
pkts bytes target prot opt in out source destination
Ні в хості A:
[root@mandrake /root]# ipchains -L
Chain input (policy ACCEPT):
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):
exportfs -a
команду на хості A, а потім спробуйте mount
команду на хості C. Спробуйте явне ім'я хоста або повну IP-адресу в /etc/exports
.
exportfs -a
завантаження, і оскільки це не новий запис, він вже експортується. Файл експорту не змінився, це лише новий хост, який повинен його встановити, а не може.
/etc/exports
фактично змушує її працювати. Зараз у мене нетто / 24 плюс повний перелік IP, і хост C може монтуватися. Ще не пробував господар B. Будь-яка ідея, чому це? Я помітив, що хост B (робочий) використовував виклик MNT версії 2, тоді як хост C вдався до виклику MNT версії 1.