از دردسرهای پرشدن سرور FTP تا نصب VSFTPD بر روی اوبونتو سرور 16.4 ، قصد دارم تجربیات خودم رو در مورد مباحث مدیریت سرورهای مجازی و راه اندازی سرور FTP رو در اختیار شما عزیزان قرار بدم.در این آموزش قصد دارم یک سرور FTP را راه اندازی کنم.سرور FTP سازمان ما یک گنو/لینوکس CentOS بود که به صورت مجازی بر روی ESXi vSphere شرکت VMware نصب شده بود.
خود ESXi هم بر روی یک سرور HP نصب شده است. مشکل اینجا بود که ما فضای کافی برای آپلود فایل بر روی FTP نداشتیم.قبلاً هم یکی از سرورهای ویندوزی (Windows Server 2008) ما پر شده بود و فضای کافی نداشت.من از 3 هارد سرور ویندوزی با نرم افزار Acronis True Image یک Backup تهیه کردم.
این 3 هارد RAID5 داشت و من 4 هارد جدید، روی سرور بستم و با استفاده از HP Smart Array این 4 هارد رو با RAID10 کانفیگ کردم و بعد Backup ای که با اَکرونِس گرفته بودم روی این 4 هارد جدید Restore کردم.و بعد از عملیات ریستور یا Recovery مشکل کمبود فضا حل شد.البته میتوان از نرم افزار Backup گرفتن مثل اکرونیس یا CloneZilla یا ... استفاده نکرد.
و همه هاردهای خود را روی سرور نصب کنید.و 3 هارد قدیمی RAID5 باشند.و 4هارد جدید هم RAID10 یا هر RAID که شما میپسندید.بعد با استفاده از نرم افزارهای پارتیشن بندی Bootable با استفاده از گزینه Clone Disk یا Copy Disk کل اطلاعات روی 3 هاردی که به صورت منطقی یک Logical دیسک است را بر روی 4 هاردی که آن هم یک Logical Disk با ظرفیت بیشتر است کپی کنید.
اما تجربه ای که من به دست آوردم این بود که این کار برای سرورهایی که بر روی آن سیستمعامل ESXi نصب شده است جواب نمیدهد.ESXi بعد از نصب پارتیشن های هارد را به شکل عجیب غریبی پارتیشن بندی میکند.و شما حتی با Clone کردن دیسک هم نمیتوانید آن را بر روی هاردهای جدید با ظرفیت بیشتر کپی کنید
حتی گزینه Migrate OS هم که در نرم افزارهای جدید پارتیشن بندی وجود دارد مشکل را حل نکرد.به هرحال من به شخصه نتوانستم این کار رو انجام بدم.خوب به ناچار از اطلاعات موجود بر روی ESXi به صورت فایل های OVF یا OVA خروجی گرفتم.برای این کار از نرم افزار vSphere Client استفاده کردم و از منوی File گزینه Export OVF Template را انتخاب کردم.
البته OVA هم مانند OVF است با این تفاوت که فقط یک فایل یکتا (Single File)را برای ما تولید میکند.از تمام ماشین های مجازی بر روی ESXi یک OVA گرفتم.بعد هاردهای جدید را روی سرور گذاشتم و نرم افزار ESXi را از اول روی سرور نصب کردم.سپس patch و update های ESXi را بر روی آن نصب کردم.
آپدیت کردن آفلاین سرورهای ESXi هم خودش آموزش جداگانه ای رو نیاز داره.سپس فایل های OVA را با استفاده از File>Deploy OVA Template بر روی هاردهای جدید مجدداً نصب کردم.اما باز هم مشکل حل نشد! باز هم کمبود فضا در سرور FTP رو داشتیم. واقعاً حس بدی داشتم.فکر میکردم مثل پت و مت هستیم.
البته این ایده همکارم بود چون که اون با سابقه بود و از جزییات سرورها با خبر بود.من تازه فهمیده بودم مشکل از کمبود فضای DataStore سرور ESXi نیست! بلکه CentOS که سرور FTP ماست پارتیشن روت آن فقط 40 گیگابایت است و با اینکه در DataStore فضای خالی زیادی وجود داره ولی CentOS فقط 40 گیگابایت از این فضا رو برای خودش نگه داشته!
خوب فکری که به سرم زد این بود که باز هم مثل پت و مت Gparted رو روی CentOS نصب کنم و با استفاده از اون فضای پارتیشن روت رو افزایش بدم.اما به دو دلیل این کار رو نکردم.
یکی اینکه Resize کردن پارتیشن همیشه موفقیت آمیز نیست.دوم اینکه CentOS سرور FTP ما نسخه اش قدیمی بود و RPM Base بود و من با توزیع های Debia Base راحت ترم چون که با توزیع های RPM base آشنایی ندارم.نه اینکه RPM-base ها را قبول نداشته باشم.به دوستان متخصص Oracle و RedHat و SUSE Enterprise و CentOS ای بر نخوره !
من تصمیم گرفتم که Ubuntu Server 16.4.1 LTS رو بر روی ESXi نصب کنم.البته علاوه بر آشنایی من با اوبونتو سرور انتخاب اوبونتو سرور برای FTP دلیل فنی هم داشت.چون که اوبونتو سرور محیط دسکتاپ (GUI) نداره و Performance بالاتری داره ولی خوب باید تا حدودی با محیط CLI یا Command Line گنو//لینوکس آشنایی داشته باشید.
البته همون قدر که اوبونتو در نسخه دسکتاپ به کاربرپسندی و راحتی شما فکر میکنه و محیط دسکتاپ های Unity و gnome و KDE و ... رو پشتیبانی میکنه ، در نسخه سرور به کارایی و سرعت اهمیت میده.هرچند شما به راحتی میتونید هر دسکتاپی رو که دوست دارید روی سرورتون نصب کنید.
ولی این کار توصیه نمیشه.خوب ما در اینجا فرض میکنیم که شما قبلاً با نصب گنو//لینوکس آشنایی دارید و با مراحل نصب اوبونتو سرور آشنا هستید. فایل iso نسخه سرور و دسکتاپ اوبونتو را از سایت Ubuntu.com میتوانید به صورت رایگان دانلود نمایید.
فلسفه و تفکری وجود داره که سیستم عامل رو به خدا تشبیه میکنه و فرآیندها(Process) رو هم به انسان ها تشبیه کرده. فرآیندها هم مثل مردم یونان باستان ، به خدایان(Polytheism) اعتقاد دارند!!! خدای پرینتر یا Print Daemon یا خدای فایل File Daemon یا ... ! اینها همش افسانه و شوخی نیست.
فلسفه پشت این خدایان ، همون بحث Modularity و طراحی و پیاده سازی لایهای سیستم عامل هستش.این لغت daemon از زمان سیستم عامل unix برسر زبانها افتاد.پر استفاده ترین نرم افزار پیاده سازی ftp در گنولینوکس ، بسته نرم افزاری vsftpd که مخفف Very Secure File Transfer Protocol Daemon است.
اگر ftp روی اینترنت با امنیت پایین باشد هر کسی می تواند با دسترسی به ftp و نوشتن (کپی) یک فایل مخرب روی آن و دانلود آن توسط افرادی روی سرور باعث تخریب سرور شوند. عاقلانه و ساده ترین کار این است که هر کسی اجازه write روی سرور ftp را نداشته باشد یا حداقل روی تمامی دایرکتوری ها نداشته باشد
و اگر نیاز به رد و بدل فایل ها بین کارمندان باشد باید فقط روی همان دایرکتوری بازهم برای افراد مشخصی فقط دسترسی write وجود داشته باشد. ftp روی پورت 21 بصورت پیش فرض به در خواست ها گوش می دهد، تغییر این پورت به عددی دیگر، یکی دیگر از کارهای ایمن ساختن سرویس ftp است.
هرچند حرفهایهای شبکه و امنیت با توجه به ضعفهاي امنيتي كه در اين پروتكل وجود داره و صد البته قابليت هاي بسيار كمتري كه نسب به DFS در شبكه داخلي داره استفاده از این پروتکل در شبکه داخلی را توصیه نمیکنند ، ولی در سازمان ما چون که کاربران از قدیم با این پروتکل به فایل های سرور دسترسی داشته اند و به راحتی نمیشه این سنت قدیمی رو به اونها ترک داد.
بحث امنیت هم بستگی به کاربران سازمان داره.کارکنان سازمان ما که اغلب دانش کامپیوتر ضعیفی دارند و خطری سرور FTP ما را تهدید نمیکند.و نیز فایل های روی سرور FTP هم محرمانگی ندارند.برای نصب بسته vsftpd در توزیعهای مشتق شده از توزیع Debian GNU/Linux باید از دستور زیر استفاده نمایید:
sudo apt-get install vsftpd
برای نصب سرویس ftp در توزیع های مبتنی بر RedHat از دستور زیر استفاده کنید:
yum -y install vsftpd
اگر نتوانستید vsftpd را از طریق دستور sudo apt-get install vsftpd نصب نمایید ابتدای CD اوبونتو 16.4 را در داخل دستگاه قراردهید.سپس دستور زیر را برای mount شدن آن اجرا کنید :
sudo -i mount /dev/cdrom /media/cdrom
سپس به آدرس زیر بروید :
cd /media/cdrom/pool/main/v/vsftpd
سپس دستور زیر را برای نصب پکیج دبیان vsftpd استفاده نمایید :
dpkg –i vsftpd_3.0.3-3ubuntu2_amd64.deb
فایل اصلی پیکربندی vsftpd در آدرس زیر وجود دارد.
/etc/vsftpd/vsftpd.conf
البته اگر در این آدرس نبود فایل vsftpd.conf در دایرکتوری etc قرار دارد که شامل پارامتر های اصلی تنظیم vsftpd است. خط هایی که با "#" شروع شوند بعنوان Comment در نظر گرفته می شوند. البته برخی از پارامترها نیز در ابتدایشان" # "دارند که یعنی پارامتر غیر فعال است. برای فعال کردن پارامتر ها باید علامت "#" را از ابتدایشان حذف کرد. مهمترین پارامترهای این فایل اینها هستند :
anonymous_enable: یعنی هر کاربری می تواند به ftp دسترسی داشته باشد. معمولاً در سرور های ftp روی اینترنت برای دانلود فایل ها از این گزینه استفاده میشود که امنیت را پایین می آورد. اگر مقدارش YES باشد یعنی همه می توانند به ftp دسترسی داشته باشند. اگر NO باشد باید نام کاربری و پسورد را وارد کند.
anon_root: تعیین کننده دایرکتوری که کاربر anonymous بصورت پیش فرض وارد آن می شوند.این پارامتر بصورت پیش فرض وجود ندارد و باید آن را تعریف نمایید.این دایرکتوری محلی است که فایلهای FTP در آن به اشتراک گذاشته میشود.برای مثال میتوانید از آدرس زیر برای آن استفاده نمایید :
anon_root=/home/itpro
local_enable: به کاربران محلی اگر YES باشد اجازه دسترسی می دهد. بهتر است NO باشد زیرا ازتباط در vsftpd یا هر ftp دیگری بصورت Clear Text است و کاربر سومی می تواند اطلاعات را بدزد. البته می توان برای امن کردن ارتباط بین سیستم ها از Certificate ها توسط ابزار openssl استفاده کرد.
write enable : اجازه نوشتن (کپی فایل و دایرکتوری توسط دیگر کاربران روی ftp را می دهد.). بهتر است NO باشد چونکه ممکن است فایلی که روی ftp نوشته می شود مخرب باشد و با کپی کردن دیگران از روی ftp روی سیستمشان، دچار مشکل شوند.
پس از ایجاد تغییر در فایل vsftp.conf برای اعمال تغییرات دستور زیر را اجرا نمایید:
sudo /etc/init.d/vsftpd restart
مهندس نصیری در انجمن توضیح داده اند.ولی خوب ما هم در این جا اشاره ای به این مبحث داریم.اولین کاری که برای سرور ftp باید انجام بدهید ، دادن IP مورد نظرتون به سیستم سرور است.با دستور ifconfig میتوانید وضعیت Network Interface هایی که در حال حاظر Active هستند را مشاهده نمایید.
همان طور که میدونید از نام های دیگر Network Adapter یا کارت شبکه Network Interface Card یا به اختصار NIC است.از این طریق شما میتوانید نام و MAC Address و IP Address و جزییات مربوط به Network Interface های فعال روی سیستم خودتون رو مشاهده کنید.برای مثال اگر نام Network Interface فعال شما "eth0" است ، با دستور زیر IP خود را به اون رابط شبکه(کارت شبکه) بدید :
sudo ifconfig eth0 192.168.0.1 netmask 255.255.255.0
این دستور در لینوکس اوبونتو که از دبیان مشتق شده و در اکثر توزیع های Debian base بدون مشکل اجرا میشود.بدیهی است که این دستور سیستمی است و احتیاج به دسترسی مدیریتی دارد و باید از sudo در ابتدای دستور استفاده شود.واضح است که netmask هم برای تعریف Subnet Mask است. اگر می خواهید در ادامه به کارت شبکه خود یک آدرس Gateway هم بدهید کافیست دستور زیر را در خط فرمان وارد کنید :
sudo route add default gw 192.168.0.253 eth0
بعد از اینکه دستورات بالا را وارد کردید شما آدرس IP را با مشخصات داده تغییر داده اید اما نکته مهم در اینجاست که تمامی تنظیماتی که در حال حاضر انجام داده اید فقط در لحظه فعلی کار می کنند و به محض اینکه سیستم شما Restart شود و یا سرویس شبکه شما Restart شود همگی تنظیمات از بین می رود.
برای اینکه بتوانید تنظیمات بالا را بصورت دائمی بر روی سیستم قرار دهید کافیست فایل Interfaces موجود در آدرس etcnetworkinterfaces رو دستکاری کنید.برای ویرایش این فایل متنی از Editor های nano و vi میتوانید استفاده نمایید.برای ویرایش این فایل میتوانید دستور زیر را بنویسید:
nano /etc/network/interfaces
برای اینکه کارت شبکه شما به صورت خودکار IP را از DHCP بگیرد باید در این فایل عبارت زیر را بنویسید:
## To configure a dynamic IP address auto eth0 iface eth0 inet dhcp
برای اینکه کارت شبکه شما به صورت دستی IP را از شما بگیرد باید در این فایل عبارت زیر را بنویسید:
## configure a static IP auto eth0 iface eth0 inet static address 192.168.1.14 gateway 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255
برای اینکه دستورات بالا بر روی سرور اعمال بشوند باید دستور زیر را اجرا نمایید :
sudo /etc/init.d/networking restart
با ping کردن IP سرور ESXi هم میتونید از صحت عملکرد اوبونتو مطمئن شوید.چون سرور مجازی اوبونتو باید ESXi رو پیدا کنه تا FTP از روی کلاینت ها قابل دسترسی باشه.ولی من در نصب اون دچار مشکلی شدم.هرچقدر IP سرور ESXi رو Ping گرفتم عبارت Destination Host Unreachable رو نشون میداد.
در صورتی که همه چیز درست بود!!! در هر صورت مشکلم و راه حل رو اینجا مینوسم شاید شما هم به این مشکل برخورد کردید.اگر شما دستور ifconfig رو زدید و در لیست اینترفیس های شبکه virbr0 رو مشاهده کردید.این Virtual Bridge باعث میشه ارتباط شما با ESXi قطع بشه!!! علتش رو نمیدونم ولی مشکل از این اینترفیس هستش و باید با دستورات زیر حذف اش کنید :
virsh net-destroy default virsh net-undefine default ifconfig
حالا میبینید که virbr0 حذف شده.بهتره اوبنتو رو با reboot now ریستارت کنید.بعد بوت شدن ifconfig –a رو بزنید.میبینید که ens33 به شما نمایش داده میشود ولی غیرفعال است! ens33 در واقع مترادف eth0 هستش.و فقط اسمش عوض شده وگرنه همون اینترفیس شبکه باسیم هستش. برای فعال شدنش هم دستور sudo ifconfig ens33 up رو بنویسید.حالا اگر سرور ESXi رو Ping بگیرید ، میبینید که ارتباط برقراره و همچنین از کلاینت ها نیز باید بتونید به آدرس FTP دسترسی داشته باشید.منابع :
Ubuntu Server Guide[https://wiki.ubuntu.com/DocumentationTeam] https://ubuntuforums.org https://communities.vmware.com/message/2435402#2435402 http://unix.stackexchange.com Ubuntu.ir falearn.ir ITpro.ir
کارشناس فناوری اطلاعات
میلاد فشی ، کارشناس نرم افزار ، کتاب Mobile Web Application With MoSync Framework را برای برنامه نویسی Cross-Platform برای موبایل ها یا تبلت ها به رشته تحریر درآوردم.به نرم افزارهای آزاد و متن باز (FOSS) علاقه دارم. با توزیع های محبوب گنو/لینوکس نیز کار کرده ام.به شبکه های کامپیوتری بیشتر از برنامه نویسی علاقه دارم و به همین دلیل بیشتر در حوزه شبکه های کامپیوتری مطالعه و تحقیق و پژوهش دارم و خودم رو یک دانشجوی مادام العمر میدونم...
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود