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.