كيفية إعداد اتصال NFS على Ubuntu 18.04

المقدمة

NFS، أو نظام الملفات الشبكي، هو بروتوكول نظام ملفات موزع يتيح لك توصيل الدلائل البعيدة على خادمك. يتيح لك هذا إدارة مساحة التخزين في موقع مختلف والكتابة إلى تلك المساحة من عدة عملاء. يوفر NFS طريقة موحدة وفعالة نسبيًا للوصول إلى الأنظمة البعيدة عبر الشبكة ويعمل بشكل جيد في الحالات التي يجب فيها الوصول إلى الموارد المشتركة بانتظام.

في هذا الدليل، ستتعلم كيفية تثبيت البرمجيات اللازمة لوظيفة NFS على Ubuntu 18.04، وتكوين توصيلات NFS على خادم وعميل، وتوصيل وفصل الأسهم البعيدة.

المتطلبات المسبقة

سنستخدم خادمين في هذا البرنامج التعليمي، حيث يقوم أحدهما بمشاركة جزء من نظام ملفاته مع الآخر. لإكمال هذا البرنامج التعليمي، ستحتاج إلى:

  • اثنين من خوادم Ubuntu 18.04. يجب أن يكون لكل من هذه مستخدم غير root مع تكوين sudo الأماني، وفتح البوابة مع UFW، والشبكة الخاصة إذا كانت متاحة لك.

طوال هذا البرنامج التعليمي، نشير إلى الخادم الذي يشارك مجلداته على أنه المضيف والخادم الذي يعلن عن هذه المجلدات على أنه العميل. سنستخدم العناوين الفئوية التالية كبديل لقيم المضيف و العميل:

  • المضيف: 203.0.113.0
  • العميل: 203.0.113.24

عندما تظهر هذه العناوين في الأوامر وملفات التكوين، استبدلها بعناوين المضيف و العميل الخاصة بك.

الخطوة 1 – تنزيل وتثبيت المكونات

ابدأ أولاً بتثبيت المكونات اللازمة على كل خادم.

على المضيف

على خادم المضيف، قم بتثبيت حزمة nfs-kernel-server، والتي ستتيح لك مشاركة الدلائل الخاصة بك. نظرًا لأن هذه هي العملية الأولى التي تقوم بها مع apt في هذه الجلسة، قم بتحديث فهرس الحزم المحلي الخاص بك قبل التثبيت:

  1. sudo apt update

بعد ذلك، قم بتثبيت الحزمة:

  1. sudo apt install nfs-kernel-server

بمجرد تثبيت هذه الحزم، انتقل إلى خادم العميل.

على العميل

على خادم العميل، قم بتثبيت حزمة تسمى nfs-common، والتي توفر وظائف NFS دون تضمين مكونات الخادم. مرة أخرى، قم بتحديث فهرس الحزم المحلي قبل التثبيت للتأكد من أن لديك معلومات حديثة:

  1. sudo apt update

ثم، قم بتثبيت الحزمة:

  1. sudo apt install nfs-common

الآن بعد أن أصبحت لديك حزمة الخوادم اللازمة، يمكنك البدء في تكوينهم.

الخطوة 2 – إنشاء الدلائل المشتركة على المضيف

سنشارك معلومات عن مجلدين منفصلين بإعدادات تكوين مختلفة لإثبات طريقتين رئيسيتين يمكن تكوين المصادر NFS بشأن الوصول للمسؤولين.

يمكن للمسؤولين القيام بأي شيء في أي مكان على أجهزتهم. ومع ذلك، لا تعتبر المجلدات المرتبطة بـ NFS جزءًا من النظام الذي تم توصيله به، لذا فإن الخادم NFS بشكل افتراضي يرفض القيام بالعمليات التي تتطلب صلاحيات المسؤول. يعني هذا القيد الافتراضي أن المسؤولين على العميل لا يستطيعون كتابة الملفات كمسؤول، أو إعادة التعيين للمالك، أو القيام بأي مهام أخرى للمسؤول على مصدر NFS.

ولكن في بعض الأحيان، هناك مستخدمون موثوقون على نظام العميل يحتاجون لأداء هذه الإجراءات على القرص المرتبط بالملفات ولكنهم لا يحتاجون للوصول للمسؤولين على المضيف. يمكنك تكوين خادم NFS للسماح بذلك، على الرغم من أن ذلك يعرض عاملاً من الخطر، حيث يمكن لهذا المستخدم الوصول لالمسؤول للنظام المضيف بأكمله.

مثال 1: تصدير تركيبة متعارف عليها

في المثال الأول، ستقوم بإنشاء تحميل NFS عام الغرض باستخدام سلوك NFS الافتراضي لجعل المستخدم ذو الأمانة العليا روت على جهاز العميل يجد صعوبة في التفاعل مع المضيف باستخدام تلك الأمانات العليا من العميل. قد تستخدم شيئًا مثل هذا لتخزين الملفات التي تم تحميلها باستخدام نظام إدارة المحتوى أو لإنشاء مساحة للمستخدمين لمشاركة ملفات المشاريع.

أولاً، أنشئ دليلًا مشتركًا:

  1. sudo mkdir /var/nfs/general -p

نظرًا لأنك تنشئه باستخدام sudo، يتم امتلاك الدليل بواسطة المضيف المستخدم روت:

  1. ls -la /var/nfs/general
Output
total 8 drwxr-xr-x 2 root root 4096 Feb 7 23:21 . drwxr-xr-x 3 root root 4096 Feb 7 23:21 ..

سيترجم NFS أي عمليات روت على العميل إلى صلاحيات nobody:nogroup كإجراء أماني. وبالتالي، تحتاج إلى تغيير امتلاك الدليل لتتناسب مع تلك الصلاحيات:

  1. sudo chown nobody:nogroup /var/nfs/general

أنت الآن جاهز لتصدير هذا الدليل.

المثال الثاني: تصدير دليل المنزل

في مثالنا الثاني، الهدف هو جعل دلائل منازل المستخدمين المخزنة على المضيف متاحة على خوادم العميل، مع السماح للمسؤولين الموثوقين من تلك العملاء بالوصول الذي يحتاجونه لإدارة المستخدمين بسهولة.

للقيام بذلك، ستقوم بتصدير الدليل /home. نظرًا لأنه موجود بالفعل، لست بحاجة إلى إنشائه. كما أنك لن تغير الأذونات أيضًا. إذا فعلت ذلك، قد يؤدي إلى مجموعة من المشاكل لأي شخص لديه دليل منزلي على جهاز المضيف.

الخطوة 3 – تكوين إخراج NFS على خادم المضيف

بعد ذلك، سنتعمق في ملف تكوين NFS لإعداد مشاركة هذه الموارد.

على جهاز المضيف، قم بفتح ملف /etc/exports في محرر النص المفضل لديك بأذونات الجذر. هنا سنستخدم nano:

  1. sudo nano /etc/exports

يحتوي الملف على تعليقات توضح الهيكل العام لكل سطر تكوين. يتبع البناء التركيبي التالي:

/etc/exports
directory_to_share    client(share_option1,...,share_optionN)

ستحتاج إلى إنشاء سطر لكل من الدلائل التي تنوي مشاركتها. نظرًا لأن جهاز العميل لدينا لديه عنوان IP يبدو كما يلي 203.0.113.24، ستبدو سطورنا كما يلي. تأكد من تغيير عنوان IP إلى عنوان IP جهاز العميل الخاص بك:

/etc/exports
/var/nfs/general    203.0.113.24(rw,sync,no_subtree_check)
/home       203.0.113.24(rw,sync,no_root_squash,no_subtree_check)

هنا، نستخدم نفس خيارات التكوين لكلا الدليلين باستثناء no_root_squash. دعونا نراجع معنى كل من هذه الخيارات:

  • rw: يمنح هذا الخيار جهاز العميل الحق في القراءة والكتابة إلى الحجرة.
  • تزامن: يجبر هذا الخيار NFS على كتابة التغييرات إلى القرص قبل الرد. وهذا يؤدي إلى بيئة أكثر استقرارًا واتساقًا حيث يعكس الرد الحالة الفعلية للحجم البعيد. ومع ذلك، فإنه يقلل من سرعة عمليات الملف.
  • لا_فرع_التحقق: يمنع هذا الخيار فحص الفرع، وهو عملية حيث يجب على المضيف التحقق مما إذا كان الملف لا يزال متاحًا في الشجرة المستعارة لكل طلب. يمكن أن يسبب العديد من المشاكل عندما يتم إعادة التسمية الملف حيث العميل لديه مفتوحة. في معظم الحالات، من الأفضل تعطيل فحص الفرع.
  • لا_تصغير_الجذر: بشكل افتراضي، يترجم NFS الطلبات من الجذر المستخدم عن بعد إلى مستخدم غير مسموح به على الخادم. كان هذا مقصودًا كميزة أمان لمنع حساب الجذر على العميل من استخدام نظام الملفات لالمضيف كما الجذر. لا_تصغير_الجذر يعترض هذا السلوك لعقد معينة.

عند الانتهاء من تغييراتك، احفظ الملف وأغلقه. إذا كنت تستخدم نانو، يمكنك القيام بذلك عن طريق الضغط على CTRL + X ثم Y وENTER. ثم، لجعل الأسهم المتاحة للعملاء الذين سجلتهم، أعد تشغيل خادم NFS باستخدام الأمر التالي:

  1. sudo systemctl restart nfs-kernel-server

قبل أن تتمكن بالفعل من استخدام الأسهم الجديدة، ستحتاج إلى التأكد من أن حركة المرور إلى الأسهم مصنفة بشكل صحيح بقواعد الحماية.

الخطوة 4 – تعديل جدار الحماية في المضيف

أولاً، تحقق من حالة جدار الحماية للتأكد من تمكينه، وإذا كان كذلك، فراجع ما يُسمح به حاليًا:

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)

في نظامنا، يتم السماح فقط بحركة المرور الخاصة بـ SSH، لذا سنحتاج إلى إضافة قاعدة لحركة المرور الخاصة بـ NFS.

مع العديد من التطبيقات، يمكنك استخدام sudo ufw app list وتمكينها باسم، لكن nfs ليست من تلك التطبيقات. ومع ذلك، لأن ufw يتحقق أيضًا من /etc/services للحصول على رقم المنفذ وبروتوكول الخدمة، يمكنك إلاّ إضافة NFS بالاسم. يوصى بالأفضلية بتمكين أكثر قاعدة تقييدًا التي ستسمح لكل ما تريد السماح به من الحركة، لذا بدلاً من تمكين الحركة من أي مكان، ستكون محددًا.

استخدم الأمر التالي لفتح المنفذ 2049 على المضيف، مع التأكد من استبدال عنوان IP العميل الخاص بك:

  1. sudo ufw allow from 203.0.113.24 to any port nfs

يمكنك التحقق من التغيير عن طريق تشغيل ما يلي:

  1. sudo ufw status

يجب أن تتلقى قائمة بالحركة المسموح بها من المنفذ 2049 في الناتج:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 2049 ALLOW 203.0.113.24 OpenSSH (v6) ALLOW Anywhere (v6)

هذا يؤكد أن UFW سيسمح فقط بحركة المرور الخاصة بـ NFS على المنفذ 2049 من جهاز العميل الخاص بك.

الخطوة 5 – إنشاء نقاط التثبيت وتثبيت الدلائل على العميل

الآن بعد أن تم تكوين المضيف وخدمة المشاريع الخاصة به، ستعد العميل.

لجعل المشاريع البعيدة متاحة على العميل، تحتاج إلى تثبيت الدلائل على المضيف التي تريد مشاركتها إلى الدلائل الفارغة على العميل.

ملاحظة: إذا كانت هناك ملفات ودلائل في نقطة التثبيت الخاصة بك، فسيصبحون مخفيين بمجرد تثبيت حصة الـ NFS. لتجنب فقدان الملفات الهامة، تأكد من أنك إذا قمت بتثبيت دليل موجود بالفعل، فإن الدليل فارغ.

قم بإنشاء دليلين للتثبيت الخاص بك. استخدم الأمر التالي لإنشاء الأول::

  1. sudo mkdir -p /nfs/general

ثم استخدم هذا الأمر لإنشاء الثاني::

  1. sudo mkdir -p /nfs/home

الآن بعد أن لديك مكان لوضع المشاريع البعيدة وفتحت جدران الحماية، يمكنك تثبيت المشاريع باستخدام عنوان IP لـ المضيف الخاص بك، وهو في هذا الدليل 203.0.113.0:

  1. sudo mount 203.0.113.0:/var/nfs/general /nfs/general
  2. sudo mount 203.0.113.0:/home /nfs/home

هذه الأوامر ستقوم بتوصيل المشاركات من جهاز المستخدم إلى جهاز العميل. يمكنك التحقق من نجاح توصيلها بعدة طرق. يمكنك التحقق من ذلك باستخدام الأمر mount أو findmnt ، لكن df -h يوفر نتائج أكثر قابلية للقراءة والتي توضح كيف يتم عرض استخدام القرص بشكل مختلف للمشاركات NFS:

  1. df -h
Output
Filesystem Size Used Avail Use% Mounted on udev 480M 0 480M 0% /dev tmpfs 99M 5.6M 94M 6% /run /dev/vda1 25G 1.3G 23G 6% / tmpfs 493M 0 493M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 493M 0 493M 0% /sys/fs/cgroup /dev/vda15 105M 4.4M 100M 5% /boot/efi tmpfs 99M 0 99M 0% /run/user/1000 203.0.113.0:/var/nfs/general 25G 1.3G 23G 6% /nfs/general 203.0.113.0:/home 25G 1.3G 23G 6% /nfs/home

تظهر كلا المشاركتين الموصولتين في الأسفل. نظرًا لأنها تم توصيلها من نفس نظام الملفات ، فإنها تظهر نفس استخدام القرص. للتحقق من المساحة التي يتم استخدامها بالفعل تحت كل نقطة توصيل ، استخدم أمر استخدام القرص du ومسار التوصيل. يوفر العلم -s ملخصًا للاستخدام بدلاً من عرض استخدام كل ملف. يطبع العلم -h نتائج قابلة للقراءة بشكل بشري:

  1. du -sh /nfs/home
Output
44K /nfs/home

هذا يوضح لك أن محتويات الدليل الرئيسي للمستخدم يستخدمون فقط 44 كيلو بايت من المساحة المتاحة.

الخطوة 6 – اختبار الوصول إلى NFS

بعد ذلك ، اختبر الوصول إلى المشاركات من خلال كتابة شيء على كل منهما.

المثال 1: المشاركة العامة

أولاً ، اكتب ملفًا اختباريًا في المشاركة /var/nfs/general:

  1. sudo touch /nfs/general/general.test

ثم ، تحقق من تملكه:

  1. ls -l /nfs/general/general.test
Output
-rw-r--r-- 1 nobody nogroup 0 Feb 7 23:53 /nfs/general/general.test

لأنك قمت بتثبيت هذا الحجم دون تغيير السلوك الافتراضي لـ NFS وأنشأت الملف بأنك مستخدم العميل على جهاز الجذر عبر الأمر sudo، يتحول مالك الملف إلى nobody:nogroup. لن يتمكن مستخدمو العميل المشرفون من إجراء إجراءات إدارية عادية، مثل تغيير مالك الملف أو إنشاء دليل جديد لمجموعة من المستخدمين، على هذا المشاركة المرفقة بـ NFS.

مثال 2: مشاركة الدليل المنزلي

لمقارنة الأذونات للمشاركة العامة بالمشاركة المنزلية، قم بإنشاء ملف في /nfs/home بنفس الطريقة:

  1. sudo touch /nfs/home/home.test

ثم قم بمراجعة مالك الملف:

  1. ls -l /nfs/home/home.test
Output
-rw-r--r-- 1 root root 0 Feb 7 23:56 /nfs/home/home.test

لقد قمت بإنشاء home.test بأنك الجذر باستخدام الأمر sudo، بنفس الطريقة التي قمت بإنشاء ملف general.test بها. ومع ذلك، في هذه الحالة يكون مالك الملف الجذر لأنك غيرت السلوك الافتراضي عندما حددت خيار no_root_squash لهذا التثبيت. هذا يسمح لمستخدمي الجذر على جهاز العميل بالتصرف كمستخدمين الجذر ويجعل إدارة الحسابات المستخدمين أكثر سهولة. في نفس الوقت، يعني أنك لست مضطرًا لمنح هؤلاء المستخدمين حقوق الجذر على جهاز المضيف.

الخطوة 7 – تثبيت المجلدات النصية البعيدة NFS عند التشغيل

يمكنك تثبيت المشاريع النصية البعيدة NFS تلقائيًا عند التشغيل عن طريق إضافتها إلى ملف /etc/fstab على العميل.

افتح الملف التالي بأمانة الجذر في محرر النص الذي تفضلت به:

  1. sudo nano /etc/fstab

في نهاية الملف، أضف سطرًا لكل من مشاريعك، مثل التالي:

/etc/fstab
. . .
203.0.113.0:/var/nfs/general    /nfs/general   nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
203.0.113.0:/home       /nfs/home      nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

ملاحظة: يمكنك الحصول على مزيد من المعلومات حول الخيارات المحددة هنا في صفحة NFS man. يمكنك الوصول إلى هذا عن طريق تشغيل الأمر التالي:

  1. man nfs

سيقوم العميل بتشغيل المجلدات البعيدة تلقائيًا عند التشغيل، على الرغم من أنه قد يستغرق بضعة ثوانٍ لإقامة الاتصال و لتوفر المشاريع.

الخطوة 8 – فك تثبيت حصة نصية NFS البعيدة

إذا لم تكن ترغب بعد في تثبيت المجلد البعيد على جهازك، يمكنك فك تثبيته عن طريق الانتقال إلى خارج بنية المجلد و فك تثبيته.

أولاً، انتقل إلى الدليل الرئيسي:

  1. cd ~

ثم قم بفك تركيب /nfs/home. لاحظ أن الأمر يسمى umount وليس unmount كما قد تتوقع:

  1. sudo umount /nfs/home

بعد ذلك، قم بفك تركيب /nfs/general:

  1. sudo umount /nfs/general

هذا سيزيل الشاحنات البعيدة، مما يترك فقط التخزين المحلي المتاح:

  1. df -h
Output
Filesystem Size Used Avail Use% Mounted on udev 480M 0 480M 0% /dev tmpfs 99M 5.5M 94M 6% /run /dev/vda1 25G 1.3G 23G 6% / tmpfs 493M 0 493M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 493M 0 493M 0% /sys/fs/cgroup /dev/vda15 105M 4.4M 100M 5% /boot/efi tmpfs 99M 0 99M 0% /run/user/1000

إذا كنت ترغب أيضًا في منعهم من الإعادة تركيبهم في التشغيل التلقائي في التشغيل التالي، قم بتحرير /etc/fstab وإما حذف السطر أو أعد تسلسله عن طريق وضع حرف # في البداية من السطر. يمكنك أيضًا منع التركيب التلقائي عن طريق إزالة الخيار auto، مما يسمح لك بتركيبه يدويًا.

الخاتمة

في هذا البرنامج التعليمي، قمت بإنشاء مضيف NFS وشرح بعض سلوكيات NFS الرئيسية عن طريق إنشاء تركيبتي NFS مختلفتين، التي قمت بمشاركتها مع عميل NFS client. إذا كنت تسعى لتنفيذ NFS في الإنتاج، من المهم ملاحظة أن البروتوكول نفسه غير مشفر. في الحالات التي يتم فيها مشاركة الملفات عبر شبكة خاصة، قد لا يكون هذا مشكلة. في حالات أخرى، سيكون من الضروري استخدام VPN أو نوع آخر من النفق المشفر لحماية البيانات. لاحظ أن هذا غالبًا ما يؤدي إلى تقليل كبير في الأداء. إذا كانت الأداء مشكلة، ضع في اعتبارك استخدام SSHFS.

Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nfs-mount-on-ubuntu-18-04