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
نصب و پیکربندی Nextcloud در اوبونتو 20.04
نصب و پیکربندی Ansible در اوبونتو 20.04
مقدمه ای بر مدیریت پیکربندی با Ansible
ارائه برنامه های Flask با uWSGI و Nginx در اوبونتو 18.04
نصب و پیکربندی Postfix در اوبونتو 20.04
ارائه برنامه های Flask با Gunicorn و Nginx اوبونتو 20
ایمن کردن Nginx با Let’s Encrypt در Ubuntu 20.04
تنظیم پلتفرم Cloud IDE کد سرور در اوبونتو 20
کسب یک گواهی اعتبار سنجی DNS با Acme-dns-certbot در اوبونتو 18.04
نصب و ایمن سازی Grafana در اوبونتو 20.04
خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان –
https://vpsgol.net/product/vps-germany/
https://vpsgol.net/product/vps-usa/
https://vpsgol.net/product/vps-france/
https://vpsgol.net/product/vps-canada/
https://vpsgol.net/product/vps-poland/
https://vpsgol.net/product/vps-netherlands/
https://vpsgol.net/product/vps-england/