حال سوال بزرگی که مطرح میشود این است که چگونه میتوان به installer یا نصاب ماشین مجازی دسترسی پیدا کرد؟ راهکار شرکت Citrix برای این منظور استفاده از نرمافزار XenCenter است. اما موضوع اینجاست که XenCenter را که نمیتوان بر روی لینوکس اجرا کرد، چرا که فقط بر روی سیستمعامل ویندوز قابل اجراست و با فرض اینکه در حال حاضر دسترسی به هیچگونه ماشینی با سیستمعامل لینوکس نداریم، پس چه باید کرد؟
در پاسخ به سوال فوق متدی که میتوان جهت حل این مشکل مورد استفاده قرار داد، استفاده از یک SSH tunnel از کامپیوتر لینوکسی به هاست XenServer و سپس port forwarding به VNC connection از طریق این tunnel میباشد. این متد بسیار هوشمند است و بطور شگفتانگیزی کار میکند، اما نباید تصور کرد که از طریق این متد کاربر قادر خواهد بود با به XenServer توسط SSH دسترسی پیدا کند.
اما جهت ایجاد SSH tunnel گام اول تعیین domain number مربوط به guest مورد نظر روی XenServer است. برای این منظور میبایست از چندین دستور استفاده کرد:
# xe vm-list params=dom-id name-label=TecmintVM
# xenstore-read /local/domain/1/console/vnc-port
توجه کنید که ترتیب دستورات فوق بسیار مهم است. دستور اول یک شماره که برای دستور دوم مورد نیاز است را بر میگرداند (در اینجا شماره 1).
در پاسخ به سوال فوق متدی که میتوان جهت حل این مشکل مورد استفاده قرار داد، استفاده از یک SSH tunnel از کامپیوتر لینوکسی به هاست XenServer و سپس port forwarding به VNC connection از طریق این tunnel میباشد. این متد بسیار هوشمند است و بطور شگفتانگیزی کار میکند، اما نباید تصور کرد که از طریق این متد کاربر قادر خواهد بود با به XenServer توسط SSH دسترسی پیدا کند.
اما جهت ایجاد SSH tunnel گام اول تعیین domain number مربوط به guest مورد نظر روی XenServer است. برای این منظور میبایست از چندین دستور استفاده کرد:
# xe vm-list params=dom-id name-label=TecmintVM
# xenstore-read /local/domain/1/console/vnc-port
توجه کنید که ترتیب دستورات فوق بسیار مهم است. دستور اول یک شماره که برای دستور دوم مورد نیاز است را بر میگرداند (در اینجا شماره 1).
اولین عدد که در اینجا 1 میباشد، state یا وضعیت domain ID مربوط به guest میباشد و به این معناست که guest در حال اجرا (running) است. دستور بعدی نیازمند عددی است که تعیین کننده VNC port برای session کنسول guest است. خروجی دستور دوم VPN port مورد نظر را فراهم میکند که میتواند جهت اتصال به خروجی video مربوط به guest مزبور مورد استفاده قرار گیرد.
حال با دسترسی به اطلاعات فوق زمان سوئیچ کردن به سیستم لینوکس راهدور و اتصال به XenServer جهت مشاهده session کنسول guestمان فرا رسیده است. برای این منظور، یک SSH tunnel میبایست ایجاد شود و port forwarding نیز به منظور اتصال مستقیم به local VNC connection از طریق SSH tunnel برقرار شود. به عنوان مثال در این سناریو من از لینوکس Mint 17.2 به عنوان Linux station خود برای برقرار این ارتباط استفاده کردهام، شما نیز میتوانید به طریق مشابه بر روی سایر توزیعهای لینوکسی این کار را انجام دهید.
اما اولین گام برای اطمینان از اینکه OpenSSH و xtightvncviewer بر روی Linux host نصب شدهاند یا خیر، این است که در Linux station خود (در اینجا Linux Mint 17.2) از دستور زیر استفاده نماییم:
$ sudo apt-get install openssh-client xtightvncviewer
دستور فوق باعث نصب utilityهای مزبور بر روی Linux station مد نظر خواهد شد. در گام بعد جهت ایجاد یک SSH tunnel به هاست XenServer خود و نصب port forwarding جهت تعیین VNC port روی هاست XenServer که پیشتر پورت 5902 مشخص شده است، بصورت زیر عمل میکنیم:
# ssh -L <any_port>:localhost:<VM_Port_Above> root@<server> -N
# ssh -L 5902:localhost:5902 root@<servername> -N
توجه نمایید که option یا گزینه -L در دستورات فوق میگوید که SSH از port forward استفاده کند. اولین پورت میتواند هر پورتی بیشتر از 1024 باشد به شرط اینکه روی ماشین Linux Mint استفاده نشده باشد. عبارت 'localhost:5902' مشخص میکند که ترافیک میبایست به localhost راهدور بر روی پورت 5902، forward شود که در این سناریو پورت VNC مربوط به XenServer ماشین مجازی با نام TecmintVM است.
عبارت 'root@<server>' نیز credential مربوط به login پروتکل SSH در هاست XenServer میباشد. در نهایت نیز سوئیچ -N به SSH میگوید که به سادگی یک port forwarding connection باز کند. با استفاده از دستور lsof نیز میتوانید خروجی tunnel ایجاد شده را مشاهده نمایید:
$ sudo lsof -i | grep 5902
حال با دسترسی به اطلاعات فوق زمان سوئیچ کردن به سیستم لینوکس راهدور و اتصال به XenServer جهت مشاهده session کنسول guestمان فرا رسیده است. برای این منظور، یک SSH tunnel میبایست ایجاد شود و port forwarding نیز به منظور اتصال مستقیم به local VNC connection از طریق SSH tunnel برقرار شود. به عنوان مثال در این سناریو من از لینوکس Mint 17.2 به عنوان Linux station خود برای برقرار این ارتباط استفاده کردهام، شما نیز میتوانید به طریق مشابه بر روی سایر توزیعهای لینوکسی این کار را انجام دهید.
اما اولین گام برای اطمینان از اینکه OpenSSH و xtightvncviewer بر روی Linux host نصب شدهاند یا خیر، این است که در Linux station خود (در اینجا Linux Mint 17.2) از دستور زیر استفاده نماییم:
$ sudo apt-get install openssh-client xtightvncviewer
دستور فوق باعث نصب utilityهای مزبور بر روی Linux station مد نظر خواهد شد. در گام بعد جهت ایجاد یک SSH tunnel به هاست XenServer خود و نصب port forwarding جهت تعیین VNC port روی هاست XenServer که پیشتر پورت 5902 مشخص شده است، بصورت زیر عمل میکنیم:
# ssh -L <any_port>:localhost:<VM_Port_Above> root@<server> -N
# ssh -L 5902:localhost:5902 root@<servername> -N
توجه نمایید که option یا گزینه -L در دستورات فوق میگوید که SSH از port forward استفاده کند. اولین پورت میتواند هر پورتی بیشتر از 1024 باشد به شرط اینکه روی ماشین Linux Mint استفاده نشده باشد. عبارت 'localhost:5902' مشخص میکند که ترافیک میبایست به localhost راهدور بر روی پورت 5902، forward شود که در این سناریو پورت VNC مربوط به XenServer ماشین مجازی با نام TecmintVM است.
عبارت 'root@<server>' نیز credential مربوط به login پروتکل SSH در هاست XenServer میباشد. در نهایت نیز سوئیچ -N به SSH میگوید که به سادگی یک port forwarding connection باز کند. با استفاده از دستور lsof نیز میتوانید خروجی tunnel ایجاد شده را مشاهده نمایید:
$ sudo lsof -i | grep 5902
در اینجا tunnel مورد نظر برقرار شده و در حال گوش دادن (listening) برای connectionهاست. حال زمان آن است که یک VNC connection به guest مورد نظر بر روی XenServer باز شود. ابزار کمکی 'xvncviewer' نصب شده و SSH connection جهت forward کردن ترافیک به XenServer در حال گوش دادن بر روی 'localhost:5902' میباشد، بنابراین توسط دستور زیر میتوانیم به کنسول guestمان متصل شویم.
$ xvncviewer localhost:5902
$ xvncviewer localhost:5902
✳️ پایان Part-4. امیدوارم این بخش از آموزش مورد توجه شما قرار گرفته باشد. بخش پنجم این آموزش فردا شب ساعت 21:00 ارائه خواهد شد. با سپاس میثم ناظمی
This media is not supported in your browser
VIEW IN TELEGRAM
فیلم آموزشی فشرده سازی در لینوکس (بخش اول) از مهندس حجت طاهری 🐧 @iranopensource
This media is not supported in your browser
VIEW IN TELEGRAM
فیلم آموزشی فشرده سازی در لینوکس (بخش دوم) از مهندس حجت طاهری 🐧 @iranopensource
This media is not supported in your browser
VIEW IN TELEGRAM
فیلم آموزشی فشرده سازی در لینوکس (بخش سوم و نهایی) از مهندس حجت طاهری 🐧 @iranopensource