Mam problem z zamontowaniem udziału NFS, którego nie mogę rozwiązać, co doprowadza mnie do szału. Oto sytuacja:
Zaangażowane trzy maszyny:
Host A: mandrake, IP 192.168.1.4, serwer NFS
Host B: athlon64, IP 192.168.1.64, klient NFS
Host C: lap-fzs-2, IP 192.168.1.27, klient NFS
Host A ma uruchomiony serwer NFS, który eksportuje katalog montowany przez host B. Działa to bezbłędnie i działa od wieków. Bez problemu. Teraz host C pojawia się na zdjęciu. Ubuntu 12.04 LTS, nowoczesny system. Próbowałem zamontować ten sam udział z hosta A, ale dostałem błąd odmowy uprawnień:
root@lap-fzs-2:~# mount -t nfs mandrake:/data /data -onfsvers=2
mount.nfs: access denied by server while mounting mandrake:/data
Fakt, że działa między hostami A i B, powinien udowodnić, że sam eksport NFS działa. Oto informacje, które mogę podać, które sprawiają, że myślę, że powinno działać. Może ktoś zobaczy to, czego ja nie, i wie, dlaczego nie udaje się to na nowym hoście C.
Eksport serwerów:
[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 jest uruchomiony, eksport jest znany i montowany przez hosta 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
Gdy host athlon64 montuje udział NFS, dziennik serwera pokazuje sukces:
Feb 11 20:06:46 mandrake mountd[460]: authenticated mount request from atlhon64.acme.local:770 for /data (/data)
Ale gdy host C próbuje zamontować ten sam udział, dziennik serwera pokazuje:
Feb 11 20:12:42 mandrake mountd[460]: refused mount request from lap-fzs-2 for /data (/): no export entry
Host C widzi serwer, osiąga portmapper i nfsd, ale kończy się niepowodzeniem na uprawnieniach.
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
Muszę użyć NFSv2 na kliencie. Korzystanie z NFSv4 zakończy się niepowodzeniem, ponieważ serwer go nie obsługuje. Nie udaje się, ponieważ próbuje połączyć się bezpośrednio przez TCP z 2049, ale port nie jest otwarty. Nie następuje awaria. Użycie NFSv3 spowoduje niezgodność programu / wersji RPC.
czego mi brakuje?
Aktualizacja:
Wszystkie trzy maszyny są w jednej sieci LAN, na tym samym przełączniku. Na hoście C nie ma aktywnej zapory ogniowej:
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
Ani na hoście A:
[root@mandrake /root]# ipchains -L
Chain input (policy ACCEPT):
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):
exportfs -a
polecenia na hoście A, a następnie spróbuj mount
polecenia na hoście C. Spróbuj podać jawną nazwę hosta lub pełny adres IP w /etc/exports
.
exportfs -a
podczas rozruchu, a ponieważ nie jest to nowy wpis, został już wyeksportowany. Plik eksportu nie zmienił się, to tylko nowy host, który powinien go zamontować i nie może.
/etc/exports
rzeczywistości sprawia, że działa. Mam teraz sieć / 24 plus pełny adres IP na liście, a host C może zostać zamontowany. Nie próbowałem jeszcze hosta B. Wiesz, dlaczego to jest? Zauważyłem, że host B (działający) używał wywołania MNT w wersji 2, a host C uciekł się do wywołania MNT w wersji 1.