Tại sao NFS không cho phép tôi gắn kết một chia sẻ?


14

Máy chủ

Tôi có một máy chủ lưu trữ, chạy Ubuntu 12.04, tại 10.0.0.202. Nó cung cấp một chia sẻ NFS cho các máy khác trên mạng. Dưới đây là nội dung của /etc/exports:

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

Mục đích ở đây là chia sẻ nội dung của /media/storagedrivecác máy khác trên mạng trong dải IP 10.0.0.0 - 10.0.0.255.

Khách hàng làm việc

Điều này hoạt động chính xác với một máy khách tại 10.0.0.40, chạy Ubuntu 13.10, được gọi là MattDev. Cái máy đó /etc/fstabtrông như thế này:

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/trên máy đó trông như thế này:

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

Đầu ra của idhình như thế này:

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)

Máy khách ảo không hoạt động

Tôi có một máy khách thứ hai, chạy Ubuntu 12.10, với tư cách là một hệ điều hành khách trên máy chủ Windows 7. Máy chủ lưu trữ trên mạng như 10.0.0.28. Máy khách đang được Vagrant quản lý, sử dụng VirtualBox 4.3.6 làm nhà cung cấp. Tôi sẽ gọi máy chủ lưu trữ Windows 7 AlexDevhost và khách AlexDevGuest của Ubuntu.

Chạy showmount -e 10.0.0.202trên AlexDevGuest tạo ra:

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

Tuy nhiên, khi tôi cố gắn kết chia sẻ, nó thất bại:

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

Vì vậy, tôi bắt đầu tìm kiếm các vấn đề:

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

Đó là uid và gid khác với người dùng matt trên MattDev. Vì vậy, tôi đã nói đùa về uid cho người lang thang, vì tôi đã đọc rằng truy cập NFS được kiểm soát bằng cách khớp địa chỉ IP và uids. Vậy bây giờ:

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

Vẫn không thành công. Vì vậy, bây giờ tôi đang cạn kiệt ý tưởng.

  1. Tôi đang làm gì sai?
  2. Nếu phần uid là chính xác, có cách nào để tôi có thể xác minh rằng máy chủ NFS đang thấy nỗ lực truy cập của tôi đến từ không 10.0.0.28, và một số IP khác không nằm trong phạm vi cho phép?

Câu trả lời:


16

Được rồi, tôi đã giải quyết nó (hoặc ít nhất, tôi đã làm cho nó hoạt động và tôi nghĩ tôi biết điều gì đã gây ra nó).

Tôi đã thêm insecurecờ vào /etc/exportsdòng trên máy chủ NFS, vì vậy bây giờ nó trông như thế này:

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

Cờ này cho phép các kết nối bắt nguồn từ các cổng máy khách phía trên IPPORT_RESERVED (1024).

Lệnh mount bây giờ hoạt động.

Tôi đoán tại sao thiếu insecurecờ là vấn đề là VirtualBox đã sử dụng NAT để chuyển yêu cầu qua mạng vật lý, do đó, cổng trên máy khách Ubuntu (AlexDevGuest) có thể ở dưới 1024, cổng được dịch trên máy chủ Windows 7 (AlexDevhost) có thể cao hơn 1024 và do đó bị chặn. Đặt insecurecờ có nghĩa là nó được cho phép mặc dù.

Vấn đề này rõ ràng không ảnh hưởng đến DevMatt của máy không ảo.


Thám tử tuyệt vời làm việc này. Tôi thường xuyên sử dụng các máy ảo VirtualBox của Unbfox dưới dạng các hộp cát Sand của trực tuyến. Tôi có thể ném hoặc kiểm tra thay vì sử dụng các máy chủ mức sản xuất hoặc thậm chí là một máy chủ dev được tổ chức
JakeGould

Muốn nói lời cảm ơn bạn trong một vòng lặp vô tận, tìm kiếm điều này từ lâu và bạn đã giúp đỡ. Bất kỳ ý tưởng tại sao hạn chế như vậy họ đã đặt ra tại sao họ không thể để các kết nối đến từ bất kỳ số cổng nào, số cổng sẽ ảnh hưởng đến bất cứ điều gì. Bất kỳ cách cảm ơn lớn.
mSatyam

@mSatyam Đó là vì bạn phải root để liên kết với một cổng dưới 1024 và có lẽ nên thận trọng khi mong đợi các công cụ NFS sẽ chạy dưới quyền root, ít nhất là theo mặc định. Chuyển tiếp cổng tôi đang làm là một phần của "trường hợp đặc biệt".
Alex

Nhưng làm cách nào tôi có thể thuyết phục được mạng của VirtualBox sử dụng một cổng dưới 1024? ..
Mikhail T.

Cảm ơn bạn rất nhiều ..
johnmin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.