NFS یا Network File System یک پروتکل به اشتراک گذاری فایل سیستم تحت شبکه است . دقت کنید اشتراک گذاری فایل سیستم نه اشتراک گذاری فایل !! به این شکل که کلاینت NFS قسمتی از فایل سیستم سرور را برای خودش میگیرد و آن را برای کاربران خودش مدیریت می کند . این پروتکل توسط شرکت Sun Microsystems ارائه شد .
شما با استفاده از NFS می توانید دایرکتوری ها یا حتی فایل ها را در شبکه مجوز دسترسی بدهید اما توجه کنید که مکانیزم کاری NFS از نظر ساختار ذخیره سازی اطلاعات بصورت Block Based محسوب می شود که می توانید با جستجویی ساده تفاوت Block Based Storage و File Level Storage را درک کنید. در NFS و ساختار فایل شیرینگ به این شکل ، برنامه ها و کاربران می توانند به اطلاعات سیستم های تحت شبکه به شکلی متصل شوند که انگار هارد دیسک کامپیوتر سرور متعلق به خودشان است .
ساختار کاری NFS به شکل کلاینت سروری است ، کلاینت ها در واقع همان کامپیوترها یا سرورهایی هستند که از بلوک های سیستم عامل سرور NFS بر روی خودشان استفاده می کنند و به کاربران اصلی سرویس می دهند . این سرور اصلی NFS است که وظیفه ایجاد کردن بلوک NFS و احراز هویت و تعیین سطح دسترسی کلاینت ها را بر عهده دارد و البته فایل سیستم را هم مدیریت می کند اما سطح دسترسی End User بر عهده NFS Client است که بعد از اتصال به سرور اصلی دسترسی هایی مثل NTFS Permission ها بر عهده کلاینت می باشد .
به زبان ساده تر ما برای اینکه به یک NFS سرور متصل شویم و یک فرآیند کاری درست انجام دهیم 3 کامپیوتر داریم ، کامپیوتر اول سرور NFS است که هارد دیسک و فایل سیستم را آماده می کند برای اشتراک گذاری در شبکه ، کامپیوتر دوم که برای سرور NFS کلاینت محسوب می شود به NFS متصل می شود و آن را Mount می کند .
به گونه ای که قسمت Mount شده کاملا مثل یک هارد دیسک معمولی روی سیستم کلاینت نشان داده می شود و کلاینت می تواند دسترسی های لازم برای اشتراک گذاری در شبکه را انجام بدهد !! اما کامپیوتر سوم همان کلاینت ما است که به کلاینت NFS وصل می شود و از منابع استفاده می کند ! برای مثال شما می توانید با Samba از NFS به عنوان ذخیره ساز استفاده کنید.
شما برای اینکه بتوانید به درستی از سرویس NFS استفاده کنید بایستی هم تنظیمات سمت سرور و هم سمت کلاینت را به درستی انجام بدهید . در این مقاله آموزشی در وب سایت توسینسو ما به شما مراحل گام به گام نصب و راه اندازی NFS سرور و NFS کلاینت را آموزش می دهیم و در نهایت شما امکان اشتراک گذاری فایل سیستم بین این سرور و کلاینت را خواهید داشت . در این مقاله ما از اوبونتو به عنوان سرور و کلاینت استفاده می کنیم . نسخه مورد استفاده ما Ubuntu 18.04 LTS است بنابراین با ما همراه باشید .
برای راه اندازی سرویس NFS و اشتراک گذاری دایرکتوری ها در ابتدا شما باید NFS Kernel Server را بر روی لینوکس نصب کنید و سپس دایرکتوری های Export را برای دسترسی کلاینت ها تعریف کنید. برای اینکار مراحل زیر را دنبال کنید .
قبل از نصب کردن NFS Kernel Server ترجیجا با دستور زیر سیستم را به روز رسانی کنید :
$ sudo apt-get update
خوب با دستور بالا آخرین نسخه از ابزارها و نرم افزارهایی که در مخازن لینوکس اوبونتو وجود دارند بر روی سیستم شما به روز رسانی می شوند . حالا با دستور زیر NFS Kernel سرور را بر روی اوبونتو نصب می کنیم :
$ sudo apt install nfs-kernel-server
بعد از زدن دستور بالا سیستم از شما یک درخواست Y/N یا همان Yes No می خواهد که طبیعتا با زدن کلید Y نصب ابزار بر روی سیستم شما انجام می شود . مطمئن شوید که مراحل به درستی و بدون خطا انجام شده است و بعد از دریافت پیام Successfully Installed در همه موارد به ادامه مرحله نصب می رسیم.
دایرکتوری اکسپورت یا Export Directory در واقع همان پوشه یا فولدری است که ما می خواهیم از طریق کلاینت به آن وصل شویم . شما هر جور که دوست داشته باشید آن را می توانید نامگذاری کنید ، ما در اینجا نام این دایرکتوری را tosinso-export می گذاریم و آن را در مسیر mount های سیستم یا /mnt/ به شکل زیر ایجاد می کنیم . شما با دستور زیر می توانید این دایرکتوری را به سادگی ایجاد کنید :
$ sudo mkdir -p /mnt/tosinso-export
با توجه به اینکه ما می خواهیم همه کلاینت ها بدون مشکل به دایرکتوری مورد نظر دسترسی پیدا کنند ، دسترسی های محدود کننده از روی این دایرکتوری را با دستور زیر حذف می کنیم و البته دسترسی 777 را به همه به معنی Full Control می دهیم ، به همین دلیل بهتر است دستورات زیر را قبل از رسیدن به مرحله ایجاد NFS سرور برای دایرکتوری Export وارد کنیم :
$ sudo chown nobody:nogroup /mnt/tosinso-export
$ sudo chmod 777 /mnt/tosinso-export
حالا تمام کاربران و گروه ها از سیستم کلاینت می توانند بدون محدودیت به tosinso-export متصل شوند. شما هر چقدر که نیاز داشته باشید می توانید در این دایرکتوری Sub Directory یا Sub Folder ایجاد کنید و دسترسی های مختلفی به آنها بدهید اما بهتر است ریشه این دسترسی را داشته باشد .
بعد از اینکه دسترسی های داخلی دایرکتوری Export داده شد ، نوبت به دادن دسترسی به کلاینت های NFS از طریق خود فایل تنظیمات و دسترسی Export ها می رسید . این دسترسی ها از طریق یک فایل به نام exports در دایرکتوری etc تعریف می شود . برای باز کردن این فایل دستور زیر را در ترمینال و ادیتور nano وارد کنید :
$ sudo nano /etc/exports
برای باز کردن این فایل و انجام تنظیمات آن شما قطعا نیاز به دسترسی root دارید . بعد از اینکه فایل را باز کردید ، شما می توانید با اضافه کردن قالب های زیر در هر خطی که دوست داشتید دسترسی ها به کلاینت ها را تعریف کنید ، به مثال قالب های دستوری زیر توجه کنید :
mnt/tosinso-export clientIP (rw,sync,no_subtree_check)
/mnt/tosinso-export client1IP(rw,sync,no_subtree_check)
/mnt/tosinso-export client2IP (rw,sync,no_subtree_check)
/mnt/tosinso-export subnetIP/24(rw,sync,no_subtree_check)
برای مثال در سناریوی ما ، شبکه ای با رنج آیپی 192.168.0.0/24 وجود دارد و دسترسی ما نیز به شکل زیر تعریف می شود تا کلیه کامپیوترهایی که در این Subnet وجود دارند بتوانند به فولدر export یا همان tosinso-export متصل شوند :
/mnt/tosinso-export 192.168.0.0/24(rw,sync,no_subtree_check)
بعد از وارد کردن دستورات بالا ، کافیست کلیدهای Ctrl+X را بزنید و فایل را ذخیره کنید و Enter را بزنید . اگر برایتان دسترسی هایی که در داخل پرانتز تعریف شده است مبهم است کافیست به تعریف های زیر توجه کنید :
بعد از اینکه تمام تغییرات بالا را به درستی اعمال کردید ، نوبت به Export کردن دایرکتوری Shared شده با دستور زیر می رسد ، در واقع ما باید تنظیمات خود را به سیستم اعلام کنیم و اینکار صرفا با دستور زیر انجام می شود :
$ sudo exportfs –a
در واقع دستور بالا ، تنظیماتی که ما در فایل exports ایجاد کردیم را در سیستم اعلام و عملی می کند ، بعد از وارد کردن دستور بالا ، طبق روال همیشگی باید سرویس NFS Kernel سرور ما restart شود ، برای اینکار دستور زیر را وارد می کنیم :
$sudo systemctl restart nfs-kernel-server
کار ما روی سرور تمام شده است ، حالا نوبت به وارد کردن تنظیمات فایروال برای دسترسی کلاینت هاست ، برای اینکه پورت های مورد نظر را روی فایروال باز کنیم ، کافیست در قالب زیر آدرس IP یا رنج آیپی مورد نظرمان را در فایروال باز کنیم ، قالب دستور به شکل زیر است :
$ sudo ufw allow from [clientIP or clientSubnetIP] to any port nfs
طبیعتا با توجه به مثالی که در بالا زدیم ، ما می خواهیم رنج IP به شکل 192.168.0.0بتوانند به این سرور دسترسی داشته باشند بنابراین دستور زیر را وارد می کنیم :
$ sudo ufw allow from 192.168.0.0/24 to any port nfs
حالا باید مطمئن شویم که تنظیمات فایروال به درستی اعمال شده است ، برای اینکار کافیست وضعیت فایروال را بررسی کنیم و مطمئن شویم که کلاینت های ما در حالت Allow قرار دارند ، برای اینکار کافیست دستور زیر را به سادگی وارد کنیم و به دنبال رنج آیپی وارد شده بگردیم :
$ sudo ufw status
خوب تنظیمات سروری شما انجام شده است و تمام !!! حالا نوبت به انجام تنظیمات سمت کلاینت است ...
حالا نوبت به تنظیمات بسیار ساده سمت کلاینت می رسد تا کلاینت بتواند براحتی به سرور متصل شود ، برای اینکار به ترتیب مراحل زیر را انجام بدهید :
خوب ترجیحا همانطور که برای سرور هم مراحل را انجام دادیم ، قبل از نصب کردن NFS Common حتما مخازن لینوکس را با دستور زیر به روز رسانی کنید :
$ sudo apt-get update
دستور بالا آخرین نسخه از ابزارهای نصب شده در اوبونتو را برای شما از مخازن اصلی به روز رسانی می کند . حالا نوبت به نصب کردن NFS common Client برای دسترسی کلاینت می رسد ، برای اینکار کافیست دستور زیر را وارد کنیم :
$ sudo apt-get install nfs-common
بعد از وارد کردن دستور بالا از شما درخواست تایید Yes No می شود که شما طبیعتا با زدن Y تایید می کنید و مراحل نصب انجام می شود. وحالا به سراغ مرحله بعد می رویم که شما باید یک mount point برای کلاینت درست کنید که بتواند اطلاعات خودش را در آن قرار بدهد.
کلاینت شما مثل همیشه برای اینکه بتواند اطلاعاتی را در فایل سیستم ذخیره کند نیاز به یک mount point دارد که بتواند به export folder دسترسی پیدا کند . برای اینکار شما می توانید یک دایرکتوری هر جای سیستم درست کنید و آن را mount کنید ، ترجیحا بهتر است که در مسیر mnt سیستم اینکار را انجام بدهید . اینکار با استفاده از دستور زیر انجام می شود :
$ sudo mkdir -p /mnt/tosinso_export_client
خوب دایرکتوری که در مرحله قبل ساختید هیچ کاربردی ندارد تا زمانیکه شما آدرس Shared Folder ای که در سرور NFS وجود دارد را به آن Mount کنید . با استفاده از دستور زیر شما آدرس سرور NFS به همراه مشخصات Shared Folder را می دهید و آن را Mount می کنید :
$ sudo mount 192.168.0.108:/mnt/tosinso-export /mnt/tosinso_export_client
خوب برای اینکه تست کنید این ارتباط به درستی ایجاد شده یا نه کافی هست که در سمت کلاینت در دایرکتوری و Mount شده یه نگاهی بندازید و یه فایل ایجاد کنید و برید در سرور بررسی کنید که این دایرکتوری ایجاد شده یا خیر ، اگر ایجاد شده بود که فرآیند شما موفقیت آمیز بوده ، اگر نه که باید دنبال رفع مشکل باشید.
مباحث مربوط به تجهیزات ذخیره سازی شبکه یا در اصطلاح استوریج های شبکه در سه سطح از دوره های آموزشی مطرح می شوند ، در دوره آموزش نتورک پلاس شما در سطح مقدماتی با این تجهیزات آشنا می شوید . در دوره آموزشی استوریج پلاس بصورت حرفه ای تری با این تجهیزات کار می کنید و عملیاتی تر می شوید و در نهایت در دوره آموزشی VCP یا مجازی سازی های مراکز داده عملا با کار کردن با تجهیزات ذخیره سازی دنیای واقعی ، می توانید به این تجهیزات و مفاهیم آنها مسلط شوید.
اساسا راه اندازی NFS سرور در محیط های لینوکسی بسیار ساده هست . ما در این مقاله جامع تونستیم که یک NFS سرور رو به راجتی پیاده سازی کنیم و بهش متصل بشیم و تست بگیریم ازش ، اما فراموش نکنید که معمولا وقتی پروتکل های جایگزینی مثل iSCSI وجود دارند از چنین پروتکلی بهتر هست استفاده نشه از جمله دیگه نکات می تونیم به امکان دسترسی از طریق ابزارهای جانبی در ویندوز هم اشاره کنیم و فراموش نکنید که NFS دارای چند نسخه برای دسترسی هست که ما از نسخه 3 اون استفاده کردیم و نسخه 4 جدیدتر و به روزتر هست و ساده تر پیاده سازی میشه ...
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات
محمد نصیری هستم ، بنیانگذار انجمن تخصصی فناوری اطلاعات ایران و مجموعه توسینسو ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 80 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر و ناظر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود