NFS에서 공유를 마운트 할 수없는 이유는 무엇입니까?


14

주인

에 Ubuntu 12.04를 실행하는 호스트가 10.0.0.202있습니다. 네트워크의 다른 시스템에 NFS 공유를 제공합니다. 내용은 다음과 같습니다 /etc/exports.

/media/storagedrive 10.0.0.0/24(rw,sync,no_subtree_check)

여기서 의도 /media/storagedrive는 IP 범위의 네트워크에있는 다른 시스템 과 내용을 공유하는 것 10.0.0.0 - 10.0.0.255입니다.

일하는 클라이언트

이것은 10.0.0.40MattDev로 알려진 Ubuntu 13.10을 실행 하는 클라이언트 시스템에서 올바르게 작동합니다 . 그 기계는 /etc/fstab다음과 같습니다.

UUID=8f8c838e-3ea2-457a-87f0-57b12dfab06c /               ext4    errors=remount-ro 0       1
UUID=427089d4-46a2-432d-9df4-7016bdfc7df2 none            swap    sw              0       0
10.0.0.202:/media/storagedrive /mnt/NetworkStorageDrive nfs rsize=8192,wsize=8192,timeo=14,intr

그리고 ls -al /mnt/그 기계에서 다음과 같이 보입니다 :

total 12K
drwxr-xr-x  3 root root    4.0K Feb  4 17:48 .
drwxr-xr-x 23 root root    4.0K Feb  5 08:44 ..
drwxrwxr-x  7 root plugdev 4.0K Feb  5 11:43 NetworkStorageDrive

출력 결과는 id다음과 같습니다.

uid=1000(matt) gid=1000(matt) groups=1000(matt),4(adm),24(cdrom),27(sudo),30(dip),33(www-data),46(plugdev),112(lpadmin),124(sambashare)

작동하지 않는 가상 클라이언트

Windows 7 호스트 컴퓨터에서 게스트 OS로 Ubuntu 12.10을 실행하는 두 번째 클라이언트 컴퓨터가 있습니다. 호스트 시스템은 네트워크에로 10.0.0.28있습니다. 게스트 컴퓨터는 VirtualBox 4.3.6을 공급자로 사용하여 Vagrant에서 관리합니다. Windows 7 호스트 AlexDevHost와 Ubuntu 게스트 AlexDevGuest를 호출합니다.

showmount -e 10.0.0.202AlexDevGuest에서 실행 하면 다음이 생성됩니다.

Export list for 10.0.0.202:
/media/storagedrive 10.0.0.0/24

그러나 공유를 마운트하려고하면 실패합니다.

$ sudo mount 10.0.0.202:/media/storagedrive /mnt/NetworkStorageDrive
mount.nfs: access denied by server while mounting 10.0.0.202:/media/storagedrive

그래서 문제를 찾기 시작했습니다.

$ ls -alh /mnt/
total 12K
drwxr-xr-x  3 root root 4.0K Feb  5 12:23 .
drwxr-xr-x 26 root root 4.0K Feb  5 12:23 ..
drwxr-xr-x  2 root root 4.0K Feb  5 12:23 NetworkStorageDrive
$ id
uid=1001(vagrant) gid=1001(vagrant) groups=1001(vagrant)
$

그 uid와 gid는 MattDev의 사용자 매트와 다릅니다. 그래서 IP 주소와 uid를 일치시켜 NFS 액세스가 제어된다는 것을 읽었으므로 나는 유랑자를위한 uid에 대해 저글링했습니다. 그래서 지금:

$ id
uid=1000(vagrant) gid=1001(vagrant) groups=1001(vagrant)
$ sudo mount 10.0.0.202:/media/storagedrive /mnt/NetworkStorageDrive
mount.nfs: access denied by server while mounting 10.0.0.202:/media/storagedrive
$

여전히 성공하지 못했습니다. 그래서 지금 아이디어가 부족합니다.

  1. 내가 도대체 ​​뭘 잘못하고있는 겁니까?
  2. uid 부분이 올 바르면 NFS 서버 시스템이 내 액세스 시도가에서 오는 것으로 인식 10.0.0.28되고 허용 범위에없는 다른 IP가 아닌지 확인할 수있는 방법이 있습니까?

답변:


16

좋아, 나는 그것을 해결했다. (또는 적어도 그것을 만들었고, 나는 그것을 일으키는 원인을 알고 있다고 생각한다.)

NFS 서버 insecure/etc/exports줄에 플래그를 추가 했으므로 이제 다음과 같습니다.

/media/storagedrive 10.0.0.0/24(rw,sync,no_subtree_check,insecure)

이 플래그를 사용하면 IPPORT_RESERVED (1024) 이상의 클라이언트 포트에서 연결을 시작할 수 있습니다.

mount 명령이 작동합니다.

insecure플래그가 없는 이유에 대한 내 추측 은 VirtualBox가 NAT를 사용하여 요청을 물리적 네트워크로 전달했기 때문에 Ubuntu 게스트 (AlexDevGuest)의 포트가 1024 아래에있을 때 Windows 7 호스트 (AlexDevHost)는 아마도 1024 이상이므로 차단되었습니다. insecure플래그를 설정하면 허용되었다는 의미입니다.

이 문제는 분명히 비가 상 머신 DevMatt에 영향을 미치지 않습니다.


이것에 대한 환상적인 탐정 작품. 나는 Unbuntu의 VirtualBox VM을“샌드 박스”환경으로 일상적으로 사용합니다. 프로덕션 레벨 서버 나 단계적 개발 서버 대신에 던지거나 테스트 할 수 있습니다.
JakeGould

무한 루프에서 당신에게 말하고 싶습니다. 오래부터 이것을 찾고 도움을주십시오. 왜 이러한 제한을 적용했는지 알면 어떤 포트 번호에서 연결이 포트 번호에 어떤 영향을 미치는지 알 수 없습니다. 어쨌든 큰 감사합니다.
mSatyam

@mSatyam 1024 미만의 포트에 바인딩하려면 루트 여야하므로 NFS 항목이 적어도 기본적으로 루트로 실행되는 것이 좋습니다. 내가했던 포트 포워딩은 다소 "특별한 경우"였다.
Alex

그러나 어떻게 VirtualBox의 네트워킹이 1024 이하의 포트를 사용하도록 설득 할 수 있을까요? ..
Mikhail T.

정말 고마워요 ..
johnmin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.