ทำไม 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กับเครื่องอื่น ๆ 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 เป็นผู้ให้บริการ ฉันจะโทรหา AlexDevHost โฮสต์ Windows 7 และแขก AlexDevGuest ของ Ubuntu

ทำงาน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 นั้นแตกต่างจากผู้ใช้ใน 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 ของเครื่องที่ไม่ใช่เสมือน


งานนักสืบที่ยอดเยี่ยมในเรื่องนี้ ฉันใช้ VirtualBox VMs ของ Unbuntu เป็นประจำในสภาพแวดล้อม“ sandbox” ฉันสามารถโยนหรือทดสอบแทนการใช้เซิร์ฟเวอร์ระดับการผลิตหรือแม้แต่เซิร์ฟเวอร์ dev ที่จัดฉากและสิ่งนี้ช่วยได้อย่างมาก
JakeGould

ต้องการพูดขอบคุณกับคุณในวงวนไม่สิ้นสุดมองหาสิ่งนี้จากความยาวและคุณช่วย ความคิดใด ๆ ว่าทำไมถึงมีข้อ จำกัด เช่นนี้ทำไมพวกเขาถึงไม่ยอมให้การเชื่อมต่อมาจากหมายเลขพอร์ตใด ๆ ว่าหมายเลขพอร์ตจะมีผลกับอะไร ขอบคุณมาก ๆ
mSatyam

@mSatyam อาจเป็นเพราะคุณต้องรูทเพื่อที่จะผูกกับพอร์ตที่ต่ำกว่า 1024 และอาจเป็นไปได้ที่คุณจะคาดหวังว่าไฟล์ NFS จะทำงานเป็นรูทอย่างน้อยโดยค่าเริ่มต้น การส่งต่อพอร์ตที่ฉันทำนั้นค่อนข้างจะเป็น "กรณีพิเศษ"
อเล็กซ์

แต่ฉันจะโน้มน้าวให้เครือข่ายของ VirtualBox ใช้พอร์ตที่ต่ำกว่า 1024 ได้อย่างไร ..
มิคาอิลต.

ขอบคุณมาก ..
johnmin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.