Mengapa NFS tidak mengizinkan saya untuk memasang saham?

14

Sang penyelenggara

Saya memiliki host, menjalankan Ubuntu 12.04, di 10.0.0.202. Ini memberikan pangsa NFS untuk mesin lain di jaringan. Berikut isinya /etc/exports:

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

Tujuannya di sini adalah untuk membagikan konten /media/storagedriveke mesin lain di jaringan dalam rentang IP 10.0.0.0 - 10.0.0.255.

Klien yang Bekerja

Ini berfungsi dengan benar dengan mesin klien di 10.0.0.40, menjalankan Ubuntu 13.10, yang dikenal sebagai MattDev. Mesin itu /etc/fstabterlihat seperti ini:

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

Dan ls -al /mnt/pada mesin itu terlihat seperti ini:

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

Output idterlihat seperti ini:

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)

Klien Virtual Tidak Bekerja

Saya memiliki mesin klien kedua, menjalankan Ubuntu 12.10, sebagai OS tamu di mesin host Windows 7. Mesin host ada di jaringan sebagai 10.0.0.28. Mesin tamu dikelola oleh Vagrant, menggunakan VirtualBox 4.3.6 sebagai penyedia. Saya akan memanggil host Windows 7 AlexDevHost dan tamu Ubuntu AlexDevGuest.

Berjalan showmount -e 10.0.0.202di AlexDevGuest menghasilkan:

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

Namun, ketika saya mencoba untuk me-mount berbagi, itu gagal:

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

Jadi saya mulai mencari masalah:

$ 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 dan gid itu berbeda dengan matt pengguna di MattDev. Jadi saya juggled tentang cairan untuk gelandangan, karena saya telah membaca bahwa akses NFS dikendalikan dengan mencocokkan alamat IP dan cairan. Jadi sekarang:

$ 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
$

Masih belum berhasil. Jadi sekarang saya kehabisan ide.

  1. Apa yang saya lakukan salah?
  2. Jika bagian uid benar, apakah ada cara saya dapat memverifikasi bahwa mesin server NFS melihat upaya akses saya berasal 10.0.0.28, dan bukankah beberapa IP lain tidak berada dalam rentang yang diizinkan?
Alex
sumber

Jawaban:

16

Oke, saya sudah berhasil (atau setidaknya, saya sudah membuatnya bekerja, dan saya pikir saya tahu apa yang menyebabkannya).

Saya menambahkan insecurebendera ke /etc/exportsbaris di server NFS, jadi sekarang tampilannya seperti ini:

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

Bendera ini memungkinkan koneksi berasal dari port klien di atas IPPORT_RESERVED (1024).

Perintah mount sekarang berfungsi.

Dugaan saya mengapa kekurangan insecurebendera adalah masalahnya adalah bahwa VirtualBox menggunakan NAT untuk mengirimkan permintaan ke jaringan fisik, jadi sementara port pada tamu Ubuntu (AlexDevGuest) mungkin di bawah 1024, port yang diterjemahkan pada host Windows 7 (AlexDevHost) mungkin di atas 1024, dan karenanya diblokir. Mengatur insecurebendera berarti diizinkan.

Masalah ini jelas tidak memengaruhi DevMatt mesin non-virtual.

Alex
sumber
Pekerjaan detektif yang luar biasa dalam hal ini. Saya secara rutin menggunakan VM VirtualBox Unbuntu sebagai lingkungan "kotak pasir" yang dapat saya lempar atau uji alih-alih menggunakan server tingkat produksi atau bahkan server dev yang dipentaskan & ini sangat membantu.
JakeGould
Ingin mengucapkan terima kasih kepada Anda dalam loop yang tak terbatas, mencari ini dari lama dan Anda membantu. Ada ide mengapa pembatasan seperti yang mereka lakukan mengapa mereka tidak bisa membiarkan koneksi datang dari nomor port apa pun bagaimana nomor port akan mempengaruhi apa pun. Cara apa pun terima kasih.
mSatyam
@ mSatyam Ini karena Anda harus menjadi root untuk mengikat ke port di bawah 1024, dan mungkin lebih bijaksana untuk mengharapkan hal-hal NFS berjalan sebagai root, setidaknya secara default. Penerusan port yang saya lakukan agak "kasus khusus".
Alex
Tapi bagaimana saya bisa meyakinkan jaringan VirtualBox untuk menggunakan port di bawah 1024? ..
Mikhail T.
Terima kasih banyak ..
johnmin