العودة إلى المدونة

إعداد تركيب NFS على Ubuntu 20.04

إعداد تركيب NFS على Ubuntu 20.04

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

في هذا الدليل، سنستعرض خطوات إعداد وتكوين نقطة تركيب NFS على Ubuntu 20.04.

المتطلبات الأساسية

كما يوحي وصف NFS، هناك جزءان لتكوين NFS:

  • المضيف: يقوم بتخزين البيانات فعليًا ومشاركة التخزين مع أنظمة "العميل".

  • العميل: النظام الذي يتصل بـ "المضيف" ويستخدم التخزين البعيد كما لو كان محليًا.

من أجل العرض التوضيحي الخاص بنا، سنستخدم خادمين، كلاهما مكوّن بنظام Ubuntu 20.04. إليك دليل سهل حول كيفية إعداد خادم Ubuntu الخاص بك. طوال هذا الدليل، سيُشار إلى هذه الخوادم باسم المضيف و العميل. لاحظ أن الإجراء الخاص بـ العميل سيكون هو نفسه حتى لو كان هناك أكثر من عميل واحد.

تم تخصيص عناوين IP التالية للخوادم. هذه الخوادم مستضافة بواسطة CloudSigma:

  • host: 31.171.240.79

  • client: 31.171.250.109

تأكد من استبدالها بعناوين IP المناسبة.

تثبيت NFS

يتوفر NFS بسهولة في مستودعات Ubuntu الرسمية. هناك حزم برامج مختلفة لكل من المضيف و العميل .

  • تثبيت NFS على المضيف

على المضيف، نحتاج إلى المكونات التي تجهز الجهاز ليعمل كـ NFS مضيف. وتأتي في شكل الحزمة nfs-kernel-server. يستخدم Ubuntu APT كمدير للحزم. أولاً، افتح الطرفية، وقم بتحديث APT لقاعدة بيانات الحزم:

Server Apt Update

بعد ذلك، قم بتثبيت حزمة nfs-kernel-server. إذا لزم الأمر، APT ستتولى معالجة أي تبعيات إضافية:

Install nfs kernel server

  • تثبيت NFS على العميل

على نظام العميل، نحتاج إلى وظيفة الاتصال بأدلة المضيف عبر الشبكة. لا يتطلب ذلك وظيفة خادم NFS. على Ubuntu، يتم تضمينها في الحزمة nfs-common. قم بتحديث APT لقاعدة بيانات الحزم:

Client apt update

ثم، قم بتثبيت حزمة nfs-common :

Install nfs common

الأدلة المشتركة على المضيف

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

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

  • نقطة تركيب للأغراض العامة

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

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

Create nfs general dir

بما أنه تم إنشاء الدليل باستخدام sudo صلاحية، سيكون المالك هو root:

List nfs general

كإعداد افتراضي، سيقوم NFS بترجمة أي عملية root من جانب العميل إلى nobody:nogroup بيانات الاعتماد لتدابير أمنية. وللاتساق، قم بتغيير ملكية الدليل لتطابق بيانات الاعتماد:

Change owner nogroup

  • الدليل الرئيسي

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

تكوين صادرات NFS

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

exports file

يصف قسم التعليقات في الملف بنية الصيغة العامة للتكوين. باختصار، يجب الإعلان عن أي دليل بالتنسيق التالي:

بالنسبة للدليلين اللذين قررنا مشاركتهما، سيبدو التكوين كالتالي. يحتوي كلا الدليلين على خيارات التكوين نفسها تقريبًا:

exports file mod

إليك تحليل سريع لخيارات التكوين:

  • rw: يُمنح العميل صلاحية القراءة والكتابة على وحدة التخزين.

  • sync: يجبر NFS على كتابة التغييرات على القرص قبل الرد. يوفر هذا تجربة أكثر استقرارًا واتساقًا. سيعكس الرد الحالة الفعلية لوحدة التخزين البعيدة. ومع ذلك، ستكون عمليات الملفات أبطأ.

  • no_subtree_check: يمنع التحقق من الشجرة الفرعية (subtree checking). إذا لم يتم تعطيله، فسيتم إجبار المضيفين على التحقق من وجود الملف في الشجرة المصدرة لكل طلب فردي من العميل. يمكن أن يؤدي هذا إلى العديد من المشاكل، على سبيل المثال، إعادة تسمية ملف أثناء استخدام العميل له. في معظم الحالات، يكون تعطيل التحقق من الشجرة الفرعية هو الخيار الأفضل.

  • no_root_squash: كما ذكرنا سابقًا، سيقوم NFS بترجمة أي طلب من مستخدم root البعيد إلى مستخدم غير متميز. هذه ميزة أمنية مقصودة لمنع الوصول غير المرغوب فيه إلى النظام المضيف. ومع ذلك، فإن استخدام هذا الخيار سيعطل هذا السلوك.

احفظ ملف التكوين واخرج من المحرر. لتطبيق التغييرات، أعد تشغيل خادم NFS:

Restart nfs kernel server

ضبط جدار الحماية

بالنسبة لأي خادم، يعد التكوين الصحيح لجدار الحماية أمرًا ضروريًا. بافتراض أنك قمت بـ تكوين خادم Ubuntu 20.04 الخاص بك وفقًا لذلك، يجب أن يكون جدار الحماية UFW نشطًا. إنه جدار حماية بسيط ولكنه قوي يأتي مع معظم توزيعات Linux. للمبتدئين، إليك دليل سريع يشرح UFW، وكيفية عمله، والاستخدام الشائع لـ UFW مع الأمثلة.

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

ufw status

كما نرى، يُسمح فقط بحركة مرور SSH إلى النظام. نحتاج إلى إضافة استثناء للسماح بحركة مرور NFS.

في معظم الحالات، يوصى بشدة باستخدام القاعدة الأكثر تقييدًا والتي لا تزال تسمح بحركة المرور اللازمة. لذلك، سنسمح فقط للعميل (العملاء) المحددين بالاتصال بالمضيف:

ufw allow ports

بعد ذلك، تحقق من حالة جدار الحماية مرة أخرى:

ufw status after change

إنشاء نقطة التحميل

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

بالنسبة لوحدتي التخزين البعيدتين، قم بإنشاء نقطتي تحميل منفصلتين:

Create client nfs general directory

Create client nfs home directory

الآن بعد أن أصبحت نقاط التحميل جاهزة، تحتاج إلى تحميل وحدات التخزين البعيدة:

Mount general directory on client

Mount home directory on client

يمكننا التحقق مما إذا كانت عمليات التحميل ناجحة. تحقق من قائمة جميع وحدات التخزين المحملة:

Disk free in client

ها قد تم الأمر! تم تحميل وحدات التخزين البعيدة بنجاح. يمكننا أيضًا التحقق من استخدام المساحة باستخدام الأمر التالي:

Disk usage in client home

اختبار الوصول إلى NFS

حتى الآن، تم تحميل وحدات التخزين البعيدة بشكل صحيح. ومع ذلك، لن يكون هناك أي فائدة إذا لم يتمكن العميل من قراءة/كتابة البيانات على وحدة التخزين البعيدة. للتحقق، قم بإنشاء ملف وهمي على نقطة (نقاط) تحميل NFS. هنا، سيتم إنشاء الملف بامتياز root لاختبار ما إذا كانت التكوينات الخاصة بـ root تعمل بشكل صحيح:

Create file in nfs

بعد ذلك، تحقق من ملكية الملف:

Check ownership of file created

كما نرى، يقوم NFS بترجمة مالك الملف إلى nobody:nogroup. الـ /var/nfs/ general لديه ملكية لـ nobody:nogroup، لذلك يقوم NFS بترجمة ملكية الملف. حان الوقت لاختبار تحميل NFS الآخر:

Create home file

تحقق من وجود الملف وملكيته:

Check ownership of home file

في هذه الحالة، لم يقم NFS بترجمة ملكية الملف. تم تكوين هذا العميل ليكون قادرًا على تنفيذ الإجراءات الإدارية. علاوة على ذلك، فإن دليل host الأصلي /home ليس لديه الملكية لـ nobody:nogroup.

حيل إضافية

  • التحميل عند بدء التشغيل

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

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

fstab file

أضف السطور التالية لتحميل وحدات التخزين البعيدة للنظام المضيف:

fstab file after change

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

  • إلغاء تحميل وحدة تخزين NFS

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

Unmount nfs

ثم، تحقق من الإجراء:

Disks after unmount

أفكار ختامية

في هذا الدليل، قمنا بإنشاء خادم NFS واستعرضنا بعض أساسيات المشاركة عن بُعد باستخدام NFS. إذا كنت مهتمًا بتطبيق NFS في بيئة إنتاجية، فضع في اعتبارك أن بروتوكول NFS غير مشفر. قد يثير هذا بعض المخاوف الأمنية، على سبيل المثال، هجمات رجل في المنتصف (man-in-the-middle).

حوسبة سعيدة!

author

Pranay Kapgate

المؤلف · CloudSigma

Preslav Dobrev هو مصمم إبداعي في CloudSigma، يركز على هوية أعمال متسقة باستخدام قنوات التسويق التقليدية والمبتكرة. هو بارع في دمج الرؤية الفنية مع التسويق الاستراتيجي لخلق سرد قصصي مؤثر للعلامة التجارية.

التعليقات

لا توجد تعليقات بعد. كن أول من يعلق.