Чому 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.40Ubuntu 13.10, відомого як MattDev. Ця машина /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)

Непрацюючий віртуальний клієнт

У мене є друга клієнтська машина, що працює під управлінням Ubuntu 12.10, як гостьова ОС на хост-машині Windows 7. Хост-машина знаходиться в мережі як 10.0.0.28. Гостевою машиною керує Vagrant, використовуючи VirtualBox 4.3.6 в якості постачальника. Я зателефоную хосту Windows 7 AlexDevHost та гостю Ubuntu AlexDevGuest.

Запуск showmount -e 10.0.0.202на AlexDevGuest виробляє:

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 відрізняється від користувача matt на MattDev. Тому я жонглював про uid для бродячого, оскільки я прочитав, що доступ до NFS контролюється шляхом узгодження IP-адреси та uids. Так що тепер:

$ 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

Гаразд, я це розробив (або, принаймні, змусив його працювати, і я думаю, я знаю, що це спричинило).

Я додав insecureпрапор до /etc/exportsрядка на сервері NFS, тож він виглядає приблизно так:

/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 як середовищі «пісочниці», на яку я можу кидати або перевіряти замість того, щоб використовувати сервери виробничого рівня або навіть поетапний сервер розробників, і це дуже допомагає.
JakeGould

Хочете сказати спасибі вам у нескінченному циклі, шукаючи це довго і вам допомогли. Будь-яка ідея, чому таке обмеження вони поставили, чому вони не можуть дозволити з'єднанням, що надходять з будь-якого номера порту, як номер порту вплине на що-небудь. Будь-які способи велике спасибі
mSatyam

@mSatyam Це буде тому, що ви повинні мати root, щоб прив'язати до порту нижче 1024, і, ймовірно, доцільно очікувати, що NFS буде запущено як root, принаймні за замовчуванням. Переадресація порту, яку я робив, була дещо "особливим випадком".
Олексій

Але як я можу переконати мережу VirtualBox використовувати порт нижче 1024? ..
Михайло Т.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.