NFS يا Network File System يك پروتكل سيستم فايل توزيع شده است كه به شما امكان مي دهد دايركتوري هاي از راه دور را روي سرور مجازي خود سوار كنيد. همچنين اين امكان را به شما مي دهد فضاي ذخيره سازي را در يك مكان ديگر مديريت كنيد و از طرف چندين كلاينت روي آن فضا بنويسيد. NFS روشي نسبتاً استاندارد و كارآمد براي دسترسي به سيستمهاي از راه دور از طريق شبكه را فراهم مي كند و در شرايطي كار مي كند كه به طور منظم به منابع مشترك دسترسي پيدا كند.
در اين راهنما ، چگونگي نصب نرم افزار مورد نياز براي عملكرد NFS را در اوبونتو 20.04 ، پيكربندي دو مانيتور NFS روي يك سرور مجازي و كلاينت ، بررسي خواهيم كرد و به اشتراك گذاري از راه دور مي پردازيم.
پيش نيازها
ما در اين آموزش از دو سرور مجازي استفاده خواهيم كرد كه يك قسمت از سيستم فايل آن را با ديگري به اشتراك مي گذارد. براي دنبال كردن اين راهنما، به موارد زير نياز خواهيد داشت:
• دو سرور مجازي Ubuntu 20.04. هر يك از آنها بايد يك كاربر غير ريشه با امتيازات sudo ، فايروال تنظيم شده با UFW و شبكه هاي خصوصي داشته باشد.
o براي كمك به راه اندازي كاربر غير ريشه با امتيازات sudo و فايروال ، راه اندازي سرور مجازي اوليه ما را با راهنماي اوبونتو 20.04 دنبال كنيد.
در طول اين آموزش ، ما به سرور مجازي هايي كه دايركتوري هاي آن را به عنوان هاست و سرور مجازي كه اين دايركتوري ها را به عنوان كلاينت سوار مي كند ، اشاره مي كنيم. براي هر دو بايد آدرس IP را بدانيد. در صورت وجود حتما از آدرس شبكه خصوصي استفاده كنيد.
در طول اين آموزش به آدرسهاي IP توسط متغيرهايي host_ip و client_ip ارجاع خواهيم داد. لطفاً در صورت لزوم جايگزين كنيد.
مرحله 1 – دانلود و نصب مولفه ها
با نصب مولفه هاي لازم در هر سرور مجازي شروع خواهيم كرد.
روي هاست
روي سرور مجازي ميزبان ، بسته nfs-kernel-server را نصب كنيد ، كه به شما امكان مي دهد دايركتوري هاي خود را به اشتراك بگذاريد. از آنجايي كه اين اولين عملي است كه در اين بخش با apt انجام مي دهيد ، قبل از نصب ، ديركتوري بسته محلي خود را ريفرش كنيد:
Host:$ sudo apt update

Host:$ sudo apt install nfs-kernel-server
پس از نصب اين بسته ها ، به سرور مجازي كلاينت برويد.
روي كلاينت
در سرور مجازي كلاينت ، بايد پكيجي به نام nfs-common نصب كنيم ، كه عملكرد NFS را بدون در اختيار گذاشتن اجزاي سرور مجازي فراهم مي كند. قبل از نصب ، دوباره ديركتوري بسته محلي را ريفرش كنيد تا اطمينان حاصل كنيد كه اطلاعات به روز داريد:
Client:$ sudo apt update

Client:$ sudo apt install nfs-common

اكنون كه هر دو سرور مجازي بسته هاي لازم را دارند ، مي توانيم پيكربندي آنها را شروع كنيم.
مرحله 2 – ايجاد دايركتوري Share روي هاست
مي خواهيم دو دايركتوري جداگانه را با تنظيمات مختلف پيكربندي به اشتراك بگذاريم ، تا دو روش اصلي كه NFS mounts ميتواند با توجه به دسترسي ابركاربر پيكربندي شود را نشان دهيم .
ابركاربرها مي توانند در هر مكاني در سيستم خود فعال باشند. با اين حال ، دايركتوري هاي نصب شده NFS جزئي از سيستمي نيستند كه روي آن نصب شده اند ، بنابراين به طور پيش فرض ، سرور مجازي NFS از انجام عملياتي كه نياز به امتيازات فوق كاربري دارند امتناع مي ورزد. اين محدوديت پيش فرض بدين معني است كه ابركاربرها روي كلاينت نمي توانند به عنوان ريشه فايل هايي را بنويسند ، مالكيت را واگذار كنند يا ساير وظايف فوق كاربري را در قسمت NFS انجام دهند.
با اين وجود ، گاهي اوقات ، كاربران قابل اعتماد در سيستم كلاينت وجود دارند كه بايد اين اقدامات را در سيستم فايل نصب شده انجام دهند اما نيازي به دسترسي ابركاربر به هاست ندارند. شما مي توانيد سرور مجازي NFS را تنظيم كنيد تا اين كار را انجام دهد ، اگرچه اين يك عنصر خطر را ايجاد مي كند ، زيرا چنين كاربري مي تواند دسترسي ريشه اي به كل سيستم هاست را بدست آورد.
مثال 1: صادر كردن يك MOUNT با هدف عمومي
در مثال اول ، يك NFS mount عمومي ايجاد خواهيم كرد كه از رفتار پيش فرض NFS استفاده كند تا ارتباط با هاست را براي كاربري با امتيازات اصلي در دستگاه كلاينت كه از اين امتيازات ابركاربري كلاينت استفاده ميكند، مشكل نمايد. ممكن است از چيزي شبيه به اين براي ذخيره فايلهايي كه با استفاده از يك سيستم مديريت محتوا بارگذاري شده اند و يا براي ايجاد فضايي براي كاربران كه به راحتي فايل هاي پروزه را به اشتراك بگذارند ، استفاده كنيد.
ابتدا ديركتوري اشتراك را تهيه كنيد:
Host:$ sudo mkdir /var/nfs/general -p

از آنجا كه ما آن را با sudo ايجاد مي كنيم ، اين ديركتوري متعلق به كاربر ريشه ميزبان است:
Host:$ ls -la /var/nfs/general

Output
drwxr-xr-x 2 root root 4096 May 14 18:36 .

NFS هر عمليات ريشه اي بر روي كلاينت را به عنوان يك اقدام امنيتي به اعتبارات nobody:nogroup  ترجمه ميكند. بنابراين ، ما بايد مطابق با آن اعتبارات، مالكيت دايركتوري را تغيير دهيم.
Host:$ sudo chown nobody:nogroup /var/nfs/general

اكنون آماده صادر كردن اين ديركتوري هستيد.
مثال 2: صادر كردن ديركتوري هوم
در مثال دوم ، هدف اين است كه دايركتوري هاي هوم كاربر ذخيره شده روي هاست در سرور مجازي هاي كلاينت در دسترس باشد ، در حالي كه به ادمين هاي معتبر آن سرور مجازي هاي كلاينت امكان دسترسي براي مديريت راحت كاربران را بدهد.
براي انجام اين كار ، دايركتوري /home را صادر خواهيم كرد. از آنجا كه در حال حاضر وجود دارد ، نيازي به ايجاد آن نداريم. مجوزها را نيز تغيير نمي دهيم. اگر اين كار را انجام داديم ، مي تواند براي هر كسي كه داراي ديركتوري هوم در دستگاه ميزبان است ، منجر به طيف وسيعي از مشكلات شود.
مرحله 3 – پيكربندي NFS Exports در سرور مجازي ميزبان
در مرحله بعدي ، براي تنظيم اشتراك گذاري اين منابع ، وارد فايل پيكربندي NFS خواهيم شد.
در دستگاه ميزبان ، فايل / etc / eksport را در ويرايشگر متن خود با امتيازات اصلي باز كنيد:
Host:$ sudo nano /etc/exports

فايل حاوي كامنت هايي است كه ساختار كلي هر خط پيكربندي را نشان ميدهد. تركيب آن به شرح زير است:
/etc/exports
directory_to_share client(share_option1,…,share_optionN)

ما بايد براي هر دايركتوري كه قصد داريم به اشتراك بگذاريم خطي ايجاد كنيم. حتما مكان نگهدارنده client_ip كه در اينجا نشان داده شده است را به آدرس IP واقعي خود تغيير دهيد:
/etc/exports
/var/nfs/general client_ip(rw,sync,no_subtree_check)
/home client_ip(rw,sync,no_root_squash,no_subtree_check)

در اينجا ، ما به جز no_root_squash از گزينه هاي تنظيمات مشابه براي هر دو ديركتوري استفاده مي كنيم. بياييد نگاهي بيندازيم كه معني هر يك از اين گزينه ها چيست:
rw: اين گزينه به رايانه كلاينت امكان دسترسي و خواندن volume را مي دهد.
sync: اين گزينه NFS را مجبور به نوشتن تغييراتي در ديسك قبل از پاسخ دادن مي كند. منجر به محيط پايدارتر و مداوم تر ميشود زيرا پاسخ ، بيانگر وضعيت واقعي واليوم از راه دور است. اما سرعت عملكردهاي فايل را نيز كاهش مي دهد.
no_subtree_check: اين گزينه مانع از بررسي زيرشاخه مي شود ، كه فرآيندي است كه در آن ميزبان بايد بررسي كند كه آيا فايل براي هر درخواست همچنان در درخت صادر شده موجود است يا خير. با تغيير نام فايل هنگام تغيير كلاينت ، اين مسئله مي تواند مشكلات بسياري ايجاد كند. تقريباً در همه موارد ، بهتر است چك كردن زيرشاخه را غيرفعال كنيد.
no_root_squash: به طور پيش فرض ، NFS درخواست هاي يك كاربر ريشه از راه دور را به يك كاربر بدون امتياز در سرور مجازي ترجمه مي كند. اين به عنوان ويژگي امنيتي در نظر گرفته شده بود تا از دسترسي يك حساب كاربري ريشه روي كلاينت براي استفاده از سيستم فايل ميزبان به عنوان ريشه جلوگيري كند. no_root_squash اين رفتار را براي برخي از اشتراكات غيرفعال مي كند.
پس از اتمام انجام تغييرات ، فايل را ذخيره كنيد و ببنديد. سپس ، براي اينكه اشتراكات را در اختيار كلاينتاني كه پيكربندي كرده ايد قرار دهيد ، سرور مجازي NFS را با دستور زير مجدداً راه اندازي كنيد:
host:$ sudo systemctl restart nfs-kernel-server

با اين حال ، قبل از استفاده واقعي از اشتراكات جديد ، بايد اطمينان داشته باشيد كه طبق قوانين فايروال ترافيك به سمت فايل اشتراكي مجاز باشد.
مرحله 4 – تنظيم فايروال روي هاست
ابتدا ، اجازه دهيد وضعيت فايروال را بررسي كنيم تا ببينيم آيا فعال شده است يا خير ، و اگر چنين است ، ببينيم چه چيزي در حال حاضر مجاز است:
host:$ 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را براي پورت و پروتكل يك سرويس بررسي مي كند ، ما هنوز مي توانيم dNFS را با نام اضافه كنيم. بهترين روش فعال كردن محدود كننده ترين قانون است كه هنوز ترافيكي را كه مي خواهيد مجاز كنيد را ممكن ميسازد ، بنابراين به جاي اينكه ترافيك را از هر كجا امكان پذير كنيد ، به صورت خاص عمل خواهيم كرد.
براي باز كردن پورت 2049 روي هاست از دستور زير استفاده كنيد ، حتماً آدرس IP كلاينت خود را جايگزين كنيد:
host:$ sudo ufw allow from client_ip to any port nfs

مي توانيد تغيير را با تايپ دستور زير تأييد كنيد:
host:$ 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 – ايجاد Mount Points و نصب ديركتوري ها بر روي كلاينت
اكنون كه سرور مجازي هاست پيكربندي شده است و اشتراكات خود را ارائه مي دهد ، كلاينت خود را آماده خواهيم كرد.
براي اينكه اشتراك گذاري ها از راه دور در دسترس كلاينت قرار گيرد ، بايد دايركتوري ها را روي ميزبان نصب كنيم كه مي خواهيم آنها را به اشتراك بگذاريم تا دايركتوري هاي خالي روي كلاينت قرار بگيرد.
توجه: اگر فايلها و دايركتوري هايي در قسمت استقرار شما وجود داشته باشند ، به محض سوار كردن اشتراك NFS ، مخفي مي شوند. براي جلوگيري از از بين رفتن فايل هاي مهم ، اطمينان حاصل كنيد كه اگر در پوشه اي كه از قبل وجود دارد مستقر ميكنيد ، دايركتوري خالي باشد.

ما دو ديركتوري براي سوار كردن فايل هاي خود ايجاد خواهيم كرد:
Client:$ sudo mkdir -p /nfs/general

Client:$ sudo mkdir -p /nfs/home

اكنون كه يك مكان براي قرار دادن اشتراك گذاري ها از راه دور داريم و فايروال را باز كرده ايم ، مي توانيم با استفاده از آدرس IP سرور مجازي ميزبان خود ، اشتراكات را سوار كنيم:
Client:$ sudo mount host_ip:/var/nfs/general /nfs/general

Client:$ sudo mount host_ip:/home /nfs/home
اين دستورات اشتراك گذاري ها را از رايانه ميزبان روي دستگاه كلاينت نصب مي كنند. مي توانيد چند بار بررسي كنيد كه آنها با موفقيت نصب شده اند. مي توانيد اين كار را با يك فرمان mount يا findmnt بررسي كنيد ، اما df -h خروجي خواناتري را ارائه مي دهد:
Client:$ df -h

Output
Filesystem Size Used Avail Use% Mounted on
udev 474M 0 474M 0% /dev
tmpfs 99M 936K 98M 1% /run
/dev/vda1 25G 1.8G 23G 8% /
tmpfs 491M 0 491M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 491M 0 491M 0% /sys/fs/cgroup
/dev/vda15 105M 3.9M 101M 4% /boot/efi
tmpfs 99M 0 99M 0% /run/user/1000
10.132.212.247:/var/nfs/general 25G 1.8G 23G 8% /nfs/general
10.132.212.247:/home 25G 1.8G 23G 8% /nfs/home

هر دو اشتراك گذاري كه مستقر كرديم در پايين ظاهر مي شود. از آنجا كه از همان سيستم فايل سوار شده اند ، همان استفاده از ديسك را نشان مي دهند. براي ديدن ميزان فضاي استفاده شده تحت هر نقطه نصب ، از دستور ميزان استفاده ديسك يعني du  و مسير سوار كردن استفاده كنيد. پرچم -s به جاي نمايش استفاده براي هر فايل ، خلاصه اي از استفاده را ارائه مي دهد. –h خروجي خواناتري را براي انسان چاپ مي كند.
مثلا:
Client:$ du -sh /nfs/home

Output
36K /nfs/home

اين به ما نشان مي دهد كه محتويات كل دايركتوري هوم فقط از 36k فضاي موجود استفاده مي كند.
مرحله 6 – آزمايش دسترسي NFS
در مرحله بعد ، اجازه دهيد با نوشتن چيزي براي هركدام از آنها ، دسترسي به اشتراكات را آزمايش كنيم.
مثال 1: اشتراك گذاري هدف كلي
ابتدا يك فايل آزمايشي را در قسمت / var / nfs / general بنويسيد:
Client:$ sudo touch /nfs/general/general.test

سپس ، مالكيت آن را بررسي كنيد:
Client:$ ls -l /nfs/general/general.test

Output
-rw-r–r– 1 nobody nogroup 0 Aug 1 13:31 /nfs/general/general.test

از آنجا كه ما اين واليوم را بدون تغيير رفتار پيش فرض NFS نصب كرديم و فايل را به عنوان كاربر اصلي كلاينت از طريق دستور sudo ايجاد كرديم، مالكيت فايل به طور پيش فرض براي nobody:nogroupميباشد. ابركاربرهاي كلاينت قادر به انجام اقدامات ادمين معمولي مانند تغيير صاحب يك فايل يا ايجاد يك ديركتوري جديد براي گروهي از كاربران ، در اين اشتراك NFS نخواهند بود.
مثال 2: اشتراك ديركتوري هوم
براي مقايسه مجوزهاي اشتراك با هدف كلي با اشتراك ديركتوري هوم ، يك فايل را در / nfs / home به همين روش ايجاد كنيد:
Client:$ sudo touch /nfs/home/home.test

سپس به مالكيت فايل نگاه كنيد:
Client:$ ls -l /nfs/home/home.test

Output
-rw-r–r– 1 root root 0 Aug 1 13:32 /nfs/home/home.test

ما با استفاده از دستور sudo ، home.test را به عنوان root ساختيم ، دقيقاً به همان روشي كه فايل general.test را ايجاد كرديم. اما ، در اين حالت متعلق به root است زيرا وقتي گزينه no_root_squash را در اين نصب مشخص كرديم ، از رفتار پيش فرض استفاده مي كنيم. اين امر اجازه مي دهد تا كاربران اصلي ما در دستگاه كلاينت به عنوان ريشه عمل كنند و اجراي حساب هاي كاربري را بسيار راحت تر مي كند. در عين حال ، اين بدان معني است كه ما نبايد به اين كاربران دسترسي اصلي را به هاست بدهيم.
مرحله 7 – نصب ديركتوري هاي از راه دور NFS در بوت
ما مي توانيم اشتراك گذاري هاي NFS راه دور را با اضافه كردن آنها به فايل / etc / fstab روي كلاينت بطور خودكار در بوت نصب كنيم.
اين فايل را با امتيازات ريشه در ويرايشگر متن خود باز كنيد:
Client:$ sudo nano /etc/fstab

در پايين فايل ، براي هر يك از اشتراكات يك خط اضافه كنيد. مانند اين ظاهر خواهند شد:
/etc/fstab
. . .
host_ip:/var/nfs/general /nfs/general nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
host_ip:/home /nfs/home nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

توجه: مي توانيد اطلاعات بيشتري در مورد گزينه هايي كه در اينجا مشخص مي كنيم در صفحه Man NFS پيدا كنيد. با اجراي دستور زير مي توانيد به آن دسترسي پيدا كنيد:
$ man nfs

كلاينت به طور خودكار پارتيشن هاي از راه دور را در بوت سوار مي كند ، اگرچه ممكن است براي برقراري اتصال و در دسترس بودن اشتراك گذاري ، مدتي طول بكشد.
مرحله 8 – Unmount (پياده) كردن اشتراك گذاري از راه دور NFS
اگر ديگر نمي خواهيد كه دايركتوري از راه دور روي سيستم شما نصب باشد ، مي توانيد با بيرون رفتن از ساختار ديركتوري اشتراك گذاري و پياده كردن آن ، آن را Unmount كنيد:
Client:$ cd ~

Client:$ sudo umount /nfs/home

Client:$ sudo umount /nfs/general

توجه داشته باشيد كه اين فرمان همانطور كه انتظار داريد umount  است و نه unmount .
با اين كار اشتراك گذاري از راه دور حذف مي شود و فقط فضاي محلي شما قابل دسترسي خواهد بود:
Client:$ df -h

Output
Filesystem Size Used Avail Use% Mounted on
udev 474M 0 474M 0% /dev
tmpfs 99M 936K 98M 1% /run
/dev/vda1 25G 1.8G 23G 8% /
tmpfs 491M 0 491M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 491M 0 491M 0% /sys/fs/cgroup
/dev/vda15 105M 3.9M 101M 4% /boot/efi
tmpfs 99M 0 99M 0% /run/user/1000

اگر همچنين مي خواهيد از استقرار مجدد آنها در ريبوت بعدي جلوگيري كنيد ، / etc / fstab را ويرايش كرده و با قرار دادن يك كاراكتر # در ابتداي خط ، خط را حذف كرده يا آن را باطل كنيد. همچنين مي توانيد با از بين بردن گزينه auto  مانع نصب خودكار شويد ، كه به شما امكان مي دهد هچنان آن را به صورت دستي سوار كنيد.
نتيجه
در اين آموزش ، ما يك ميزبان NFS ايجاد كرديم و با ايجاد دو نصب مختلف NFS ، كه با يك كلاينت NFS به اشتراك گذاشتيم ، برخي رفتارهاي كليدي NFS را نشان داديم.
اگر به دنبال اجراي NFS در توليد هستيد ، مهم است كه توجه داشته باشيد كه اين پروتكل رمزگذاري نشده است. در مواردي كه از طريق شبكه خصوصي به اشتراك مي گذاريد ، ممكن است مشكلي نداشته باشد. اما در موارد ديگر ، يك VPN يا نوع ديگري از تونل رمزگذاري شده براي محافظت از اطلاعات شما ضروري خواهد بود.

 

از اين لينك ها زير مي توانيد آمورش هاي بيشتري براي لينوكس پيدا كنيد :

 

چگونه به Ubuntu 20.04 Focal Fossa ارتقا دهيد

نحوه ايجاد نماها (Views) براي توسعه وب Django

نصب Mount NFS در اوبونتو 20.04

نحوه توسعه برنامه ها در Kubernetes با Okteto

نصب و پيكربندي Laravel با Nginx در اوبونتو 20.04

نحوه تنظيم Jupyter Notebook با پايتون در Ubuntu 20.04

نصب Jitsi Meet در Debian 10

نصب و پيكربندي Nextcloud در اوبونتو 20.04

نصب و پيكربندي Ansible در اوبونتو 20.04

 

كلمات كليدي خريد سرور

خريد vps – خريد سرور مجازي – خريد سرور – سرور هلند – فروش vps – سرور مجازي آمريكا – خريدvps – سرور مجازي هلند – فروش سرور مجازي – سرور آمريكا – vps – سرور مجازي انگليس – سرور مجازي آلمان – سرور مجازي كانادا – خريد vps آمريكا – خريد وي پي اس – سرور – خريد سرور مجازي هلند – vps خريد – سرور مجازي فرانسه – سرور مجازي هلند – خريد vps آمريكا – خريد سرور مجازي ارزان هلند – vps – خريد vps هلند – خريد سرور مجازي آمريكا – خريد vps فرانسه – تست vps – سرور مجازي تست – سرور مجازي ويندوز – ارزانترين vps – خريد وي پي اس – vps ارزان