Почему 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.40работает Ubuntu 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 для vagrant, поскольку я читал, что доступ к NFS контролируется путем сопоставления IP-адреса и идентификаторов 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-адрес вне допустимого диапазона?
Alex
источник

Ответы:

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.

Alex
источник
Фантастическая детективная работа над этим. Я обычно использую виртуальные машины VirtualBox Unbuntu в качестве среды «песочницы», которую я могу бросить или протестировать вместо использования серверов производственного уровня или даже поэтапного сервера разработки, и это очень помогает.
JakeGould
Хочу сказать спасибо тебе в бесконечном цикле, долго искал и ты помог. Любая идея, почему такое ограничение они наложили, почему они не могут позволить соединениям с любого номера порта влиять на номер порта. Любыми способами большое спасибо.
mSatyam
@mSatyam Это будет потому, что вам нужно быть пользователем root, чтобы связываться с портом ниже 1024, и, вероятно, разумно ожидать, что NFS будет работать от имени пользователя root, по крайней мере по умолчанию. Переадресация портов, которую я делал, была чем-то вроде «особого случая».
Алекс
Но как я мог убедить сеть VirtualBox использовать порт ниже 1024? ..
Михаил Т.
Большое вам спасибо ..
Джонмин