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

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 updateHost:$ sudo apt install nfs-kernel-serverپس از نصب این بسته ها ، به سرور مجازی کلاینت بروید.روی کلاینتدر سرور مجازی کلاینت ، باید پکیجی به نام nfs-common نصب کنیم ، که عملکرد NFS را بدون در اختیار گذاشتن اجزای سرور مجازی فراهم می کند. قبل از نصب ، دوباره دیرکتوری بسته محلی را ریفرش کنید تا اطمینان حاصل کنید که اطلاعات به روز دارید:Client:$ sudo apt updateClient:$ 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/generalOutputdrwxr-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/exportsdirectory_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 statusOutputStatus: activeTo Action From— —— —-OpenSSH ALLOW AnywhereOpenSSH (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 در خروجی را مشاهده کنید:OutputStatus: activeTo Action From— —— —-OpenSSH ALLOW Anywhere2049 ALLOW 203.0.113.24OpenSSH (v6) ALLOW Anywhere (v6)این خروجی تأیید می کند که UFW فقط امکان عبور NFS در پورت 2049 از دستگاه کلاینت ما را فراهم می کند.مرحله 5 – ایجاد Mount Points و نصب دیرکتوری ها بر روی کلاینتاکنون که سرور مجازی هاست پیکربندی شده است و اشتراکات خود را ارائه می دهد ، کلاینت خود را آماده خواهیم کرد.برای اینکه اشتراک گذاری ها از راه دور در دسترس کلاینت قرار گیرد ، باید دایرکتوری ها را روی میزبان نصب کنیم که می خواهیم آنها را به اشتراک بگذاریم تا دایرکتوری های خالی روی کلاینت قرار بگیرد.توجه: اگر فایلها و دایرکتوری هایی در قسمت استقرار شما وجود داشته باشند ، به محض سوار کردن اشتراک NFS ، مخفی می شوند. برای جلوگیری از از بین رفتن فایل های مهم ، اطمینان حاصل کنید که اگر در پوشه ای که از قبل وجود دارد مستقر میکنید ، دایرکتوری خالی باشد.ما دو دیرکتوری برای سوار کردن فایل های خود ایجاد خواهیم کرد:Client:$ sudo mkdir -p /nfs/generalClient:$ sudo mkdir -p /nfs/homeاکنون که یک مکان برای قرار دادن اشتراک گذاری ها از راه دور داریم و فایروال را باز کرده ایم ، می توانیم با استفاده از آدرس IP سرور مجازی میزبان خود ، اشتراکات را سوار کنیم:Client:$ sudo mount host_ip:/var/nfs/general /nfs/generalClient:$ sudo mount host_ip:/home /nfs/homeاین دستورات اشتراک گذاری ها را از رایانه میزبان روی دستگاه کلاینت نصب می کنند. می توانید چند بار بررسی کنید که آنها با موفقیت نصب شده اند. می توانید این کار را با یک فرمان mount یا findmnt بررسی کنید ، اما df -h خروجی خواناتری را ارائه می دهد:Client:$ df -hOutputFilesystem Size Used Avail Use% Mounted onudev 474M 0 474M 0% /devtmpfs 99M 936K 98M 1% /run/dev/vda1 25G 1.8G 23G 8% /tmpfs 491M 0 491M 0% /dev/shmtmpfs 5.0M 0 5.0M 0% /run/locktmpfs 491M 0 491M 0% /sys/fs/cgroup/dev/vda15 105M 3.9M 101M 4% /boot/efitmpfs 99M 0 99M 0% /run/user/100010.132.212.247:/var/nfs/general 25G 1.8G 23G 8% /nfs/general10.132.212.247:/home 25G 1.8G 23G 8% /nfs/homeهر دو اشتراک گذاری که مستقر کردیم در پایین ظاهر می شود. از آنجا که از همان سیستم فایل سوار شده اند ، همان استفاده از دیسک را نشان می دهند. برای دیدن میزان فضای استفاده شده تحت هر نقطه نصب ، از دستور میزان استفاده دیسک یعنی du و مسیر سوار کردن استفاده کنید. پرچم -s به جای نمایش استفاده برای هر فایل ، خلاصه ای از استفاده را ارائه می دهد. –h خروجی خواناتری را برای انسان چاپ می کند.مثلا:Client:$ du -sh /nfs/homeOutput36K /nfs/homeاین به ما نشان می دهد که محتویات کل دایرکتوری هوم فقط از 36k فضای موجود استفاده می کند.مرحله 6 – آزمایش دسترسی NFSدر مرحله بعد ، اجازه دهید با نوشتن چیزی برای هرکدام از آنها ، دسترسی به اشتراکات را آزمایش کنیم.مثال 1: اشتراک گذاری هدف کلیابتدا یک فایل آزمایشی را در قسمت / var / nfs / general بنویسید:Client:$ sudo touch /nfs/general/general.testسپس ، مالکیت آن را بررسی کنید:Client:$ ls -l /nfs/general/general.testOutput-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.testOutput-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 0host_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/homeClient:$ sudo umount /nfs/generalتوجه داشته باشید که این فرمان همانطور که انتظار دارید umount است و نه unmount .با این کار اشتراک گذاری از راه دور حذف می شود و فقط فضای محلی شما قابل دسترسی خواهد بود:Client:$ df -hOutputFilesystem Size Used Avail Use% Mounted onudev 474M 0 474M 0% /devtmpfs 99M 936K 98M 1% /run/dev/vda1 25G 1.8G 23G 8% /tmpfs 491M 0 491M 0% /dev/shmtmpfs 5.0M 0 5.0M 0% /run/locktmpfs 491M 0 491M 0% /sys/fs/cgroup/dev/vda15 105M 3.9M 101M 4% /boot/efitmpfs 99M 0 99M 0% /run/user/1000اگر همچنین می خواهید از استقرار مجدد آنها در ریبوت بعدی جلوگیری کنید ، / etc / fstab را ویرایش کرده و با قرار دادن یک کاراکتر # در ابتدای خط ، خط را حذف کرده یا آن را باطل کنید. همچنین می توانید با از بین بردن گزینه auto مانع نصب خودکار شوید ، که به شما امکان می دهد هچنان آن را به صورت دستی سوار کنید.نتیجهدر این آموزش ، ما یک میزبان NFS ایجاد کردیم و با ایجاد دو نصب مختلف NFS ، که با یک کلاینت NFS به اشتراک گذاشتیم ، برخی رفتارهای کلیدی NFS را نشان دادیم.اگر به دنبال اجرای NFS در تولید هستید ، مهم است که توجه داشته باشید که این پروتکل رمزگذاری نشده است. در مواردی که از طریق شبکه خصوصی به اشتراک می گذارید ، ممکن است مشکلی نداشته باشد. اما در موارد دیگر ، یک VPN یا نوع دیگری از تونل رمزگذاری شده برای محافظت از اطلاعات شما ضروری خواهد بود.برچسب‌ها:Network File System, NFS