NFS에서 공유 마운트를 허용하지 않는 이유는 무엇입니까?

NFS에서 공유 마운트를 허용하지 않는 이유는 무엇입니까?

주인

에 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.40이는 MattDev로 알려진 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의 사용자 matt와 다릅니다. 그래서 나는 IP 주소와 uid를 일치시켜 NFS 액세스가 제어된다는 것을 읽었으므로 vagrant의 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. 10.0.0.28uid 부분이 올바른 경우 NFS 서버 시스템이 허용 범위에 없는 다른 IP가 아닌 에서 내 액세스 시도를 보고 있는지 확인할 수 있는 방법이 있습니까 ?

답변1

좋습니다. 문제를 해결했습니다(또는 적어도 문제를 해결했으며 원인이 무엇인지 알 것 같습니다).

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

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

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

이제 마운트 명령이 작동합니다.

플래그가 없는 것이 insecure문제인 이유는 VirtualBox가 NAT를 사용하여 요청을 물리적 네트워크로 전달했기 때문에 Ubuntu 게스트(AlexDevGuest)의 포트가 1024 미만일 수 있지만 변환된 포트는 다음과 같습니다. Windows 7 호스트(AlexDevHost)는 아마도 1024보다 높으므로 차단되었습니다. 플래그 를 설정한다는 것은 insecure그것이 허용된다는 것을 의미했습니다.

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

관련 정보