NFS 마운트 실패, 권한 거부, 내보내기 항목 없음


10

해결할 수없는 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에는 호스트 B에 의해 마운트 된 디렉토리를 내보내는 NFS 서버가 실행 중입니다. 이는 완벽하게 작동하며 오래 전부터 작동 해 왔습니다. 문제 없습니다. 이제 호스트 C가 그림에 들어옵니다. 우분투 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 프로그램 / 버전 불일치가 발생합니다.

내가 무엇을 놓치고 있습니까?

업데이트 :
세 대의 컴퓨터가 모두 하나의 LAN에 있고 동일한 스위치에 있습니다. 호스트 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):

호스트 C의 방화벽 (또는 호스트 A보다 적음) (/ sbin / iptables -vnL은 무엇을 보여줍니까?)
davidgo

아니, 방화벽, 하나의 LAN 세그먼트.
Florian

1
시도 exportfs -a후 시도, 호스트 A에서 명령을 mount명시 적으로 호스트 이름 또는 전체 IP 주소를 시도 호스트 C.에 명령을 /etc/exports.
톱밥

1
어떻게 도움이 되나요? 서버는 exportfs -a부팅시 수행하며 새 항목이 아니므로 이미 내 보냅니다 . 내보내기 파일은 변경되지 않았으며 마운트해야하는 새로운 호스트 일뿐입니다.
Florian

@sawdust에는 편집에 올바른 힌트가 포함되어 있습니다. 전체 IP 주소를 사용하면 /etc/exports실제로 작동합니다. 이제 / 24 net과 전체 IP가 나열되고 호스트 C를 마운트 할 수 있습니다. 아직 호스트 B를 시도하지 않았습니다. 이것이 왜 그런지 아십니까? 호스트 B (작업중인 호스트)는 버전 2 MNT 호출을 사용하는 반면 호스트 C는 버전 1 MNT 호출에 의존했습니다.
Florian

답변:


0

2 월 11 일 20:12:42 mandrake mountd [460] : / data (/)에 대한 lap-fzs-2의 마운트 요청을 거부했습니다 : 내보내기 항목이 없습니다.

서버의 거부 통지 에서 호스트 C에 대한 "내보내기 항목이 없다"고 주장 /etc/exports하므로 명시 적 호스트 이름 또는 C의 전체 IP 주소를 사용 하여 파일 에서 분명한 행을 시도해야 합니다.

또한 exportfs -a서버에서 명령을 실행 하십시오.
재부팅 후에도 종종 NFS 서버에 액세스하는 데 문제가 있습니다. 명백하게 exportfs -a명령을 내리는 것은 신뢰할 수있는 솔루션입니다 (나에게).


명시적이고 반복적 인 exportfs -a것이 나에게 아무런 변화가 없었습니다. 문제가있는 한 호스트의 전체 IP 주소를 사용하면 문제가 해결되었습니다. 그래서 이것은 설명하지 않고 이해하지 못하지만, 내 문제에 대한 답이었고 같은 문제가있는 다른 사람들을 위해 시도해 볼 수있는 것이 었습니다.
Florian

/ etc / exports에 문제가있는 IP 주소에 대한 항목을 추가하면 문제가 해결되었습니다. 기묘한.
PLA

1

NFS 사용자의 UID 및 GUID가 서버 및 클라이언트에서 동일한 지 확인하십시오. 또한 서버에서 폴더가 권한 777인지 확인하십시오. 이것은 클라이언트가 액세스 할 수있는 서버의 / etc / exports입니다.

NFS 공유 디렉토리 생성 : (IP가 분리 된 각 서버 생성, 공간 분리)

mkdir / var / nfs vim / etc / exports / var / nfs 10.180.82.250 (rw, sync, root_squash, anonuid = 530, anongid = 530, no_subtree_check)


UID와 GID가 동일하지 않습니다. NFS 클라이언트에 공유가 마운트되면 작동합니다. 그리고 마운트 조작의 경우 사용자의 UID는 관련이 없습니다. 특히 사용자가 서버에 로그온 할 수있는 경우 폴더를 777로 설정하는 것이 좋습니다. 다시 말하지만, 일단 마운트하면 작동하지 않았습니다.
Florian

1

제 경우에는 -o vers = 3이 답입니다.

$ sudo mount -o vers=3 192.168.172.1:/A/DIR /mnt
  • NFS 서버 : Ubuntu 데스크톱 12.04 32 비트 vmware 호스트
  • NFS 클라이언트 : Ubuntu 서버 12.04 64 비트 vmware 게스트 (호스트 전용 모드)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.