У меня проблема с подключением общего ресурса NFS, который я не могу решить, что сводит меня с ума. Это ситуация:
Вовлекаются три машины:
Хост A: Mandrake, 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
Portmapper работает, экспорт известен и смонтирован хостом 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 видит сервер, достигает portmapper и 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
Ни на хосте А:
[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 net плюс полный IP-адрес в списке, и хост C может монтироваться. Еще не пробовали хост B. Есть идеи, почему это так? Я заметил, что хост B (рабочий) действительно использовал вызов MNT версии 2, в то время как хост C прибегал к вызову MNT версии 1.