آموزش اسکریپت نویسی (TCL) سیسکو – اول

زبان TCL که گاهی به صورت تیکل هم تلفظ می شود بستری است که توسط IOS برای ما فراهم شده تا بتوانیم بوسیله آن رو پلتفرم IOS و  IOS-XR برنامه هایی بنویسیم که اعمال مورد نظر ما را انجام دهند. که این امر بدون وجود این زبان اسکریپت نویسی بسیار پیچیده و حتی غیر ممکن بود. یک مثال خیلی ساده می تواند به این شکل مطرح شود که چگونه می توان یک SNMP OID را نظارت کرد تا در زمان وقوع شرایط مد نظر ما اتفاقی بیفتد و کاری را انجام دهد. البته یک راه حل بسیار جامع تر برای این مثال EEM است که در آینده در مطلبی جدا به آن خواهیم پرداخت اما راه حل سریع و مطمئن استفاده از TCL است.

برای بیشتر آشنا شدن با کاربرد و مواردی که نیاز داریم به یک زبان اسکریپت نویسی بر روی پلتفرم IOS می خواهیم در ادامه چند مثال کوتاه بزنیم.

مثال ۱) زمانی که اندازه cpu مورد استفاده به 30% رسید یک ایمیل برای من ارسال کن و پنج پروسه ایی که بیشترین استفاده را از cpu دارند را بفرست. (sh process cpu sorted)

مثال ۲)‌ این مثال برای زمانی است که ARP flooding/looping رخ داده که می توانند باعث کرش کردن روتر شود. اگر استفاده روتر از cpu به 80% رسید. از میان پروسه های در حال اجرا ۲ مورد بالایی که بیشترین منابع را در اختیار دارند را بررسی کرده و ببین که شامل ARP-Input می شوند یا خیر. اگر نتیجه صحیح بود با دستور show int <interface-name> آن دست روتر که بیشترین broadcast را  دریافت می کند پیدا کرده و آنرا خاموش کن. پس از ۳ دقیقه مجددا پروسه های در حال اجرا را بررسی کرده و از پایین بودن مقدار استفاده از cpu که اطمینان حاصل شد با بررسی دسترسی به میل سرور یک ایمیل به مدیر شبکه ارسال کرده و رویداد رخ داده را اطلاع دهد.

مثال ۳) شما در بخش خود مسئول بیش از ۲۰۰ روتر هستید. فرض کنید می خواهید اطمینان حاصل کنید که تمام اینترفیس های WAN با IPSec VPN کانفیگ شده اند. در هر روتر دو لینک WAN وجود دارد که حدودا ۴۰۰ اینترفیس می شود. شما می توانید اینکار را از سه روش زیر انجام دهید:

۱- وصل شدن به هر روتر، مشاهده کردن  running-config و بررسی آن به صورت دستی
۲- به صورت دستی فایل های پشتیبان کانفیگ ها را باز کرده و بررسی کنید.
۳- یا به سادگی روتر را باز کنید اسکریپت tcl خود را روی آن paste کنید و آن همه بررسی ها را انجام داده و در انتها به شما بگوید کدام یک از اینترفیس ها کانفیگ نشده و حتی آن ها را نیز کانفیگ کند!

بسته به دیدگاه و تجربه شما در زمینه شبکه ممکن است این مثال ها را در کار خود دیده باشید یا اصلا برایتان واضح نباشد. اما اگر به عنوان یک مدیر شبکه که حداقل مسئول ۱۰۰ روتر و بیشتر هستید حتما و بسیار ضروری است که اسکریپت نویسی با tcl و EEM را حتما در برنامه یادگیری خود قرار دهید.

کتابی که برای یادگیری این زبان از پایه پیشنهاد می شود:
Tcl and Tk Programming for the Absolute Beginner

اما به یاد داشته باشید که برنامه نویسی امری است که نیازمند تجربه و تمرین مکرر است. و مشخصا هیچ کتابی وجود ندارد که به شما‌ آموزش دهد که چگونه مشکلات خود را با برنامه نویسی حل کنید. در بهترین حالت آن ها به شما سینتکس و مفاهیم مختص آن زبان را یاد می دهند. پس حتما نیازمند تمرین و یادگیری پیوسته هستید. همچنین به یاد داشته باشید برنامه نویسی بر روی پلتفرم IOS نیازمند فرآیندهای پیچیده و تخصصی برنامه نویسی نیست و صرفا قرار است مشکل ما را بر طرف کند نه مشکل جدیدی ایجاد کند!

کارهایی که با زبان tcl انجام می دهیم در اکثر اوقات شامل پردازش بر روی رشته ها و بدست آوردن مقدار مورد نظر و سپس مقایسه آن با مقادیری از پیش تعریف شده است که در نهایت منجر به  عملی می شود که باید انجام شود.

یک مورد که باید قبل از ادامه به آن اشاره کرد این است که برنامه نویسی و اسکریپت نویسی مشابه هستند و ممکن است این کلمات در این مقاله به جای یکدیگر مورد استفاده قرار گیرند. پس دچار سر در گمی نشوید.

متغییرها:

متغییرها یکی از مفاهیم بنیادین در هر زبان برنامه نویسی هستند. شما هیچ گاه نمی توانید یک برنامه را ببینید که از متغییرها استفاده نکرده باشند. متغییرها مکانی برای نگه داری مقادیر هستند. به همین خاطر به آن ها متغییر می گویند مانند ظرفی که یک بار در آن چیزی ریخته می شود و بار دیگر چیز دیگری قرار می گیرد. اما ظرف همچنان ظرف است.
در اینجا یک متغییر تعریف شده و مقدار آن برابر با ۴ در نظر گرفته شده است.

firtvar = 4

مواردی که ممکن است ما از متغییر ها استفاده کنیم شامل دو مورد کلی می شود:

۱- زمانی که ورودی از کاربر میگیریم.
۲- زمانی که نیاز دارید از یک مقدار بیش از یک بار در برنامه خود استفاده کنید.

ورودی کاربر باید در جایی نگه داری شود به همین علت باید از متغییر ها استفاده شود. اکنون قبل از وارد شدن به جزئیات بیشتر بیاید بر روی روتر خود tcl را امتحان کنیم. با وارد کردن دستور tclsh در مد exec وارد محیط اسکریپت نویسی tcl شوید.

R1#tclsh
#R1(tcl)
“R1(tcl)#puts “hi, i am in tcl
hi, i am in tcl
#R1(tcl)

کلمه puts یک keyword است و هر چیزی که به آن داده شود را بر روی صفحه نمایش می دهد. مقدار دهی متغییر با استفاده از دستور set سپس نام متغییر و مقدار در ادامه انجام می شود.

R1(tcl)#set firstvar 10
10

اکنون متغییر firstvar مقدار ۱۰ را در خود دارد و برای مشاهده مقدار آن از دستور puts استفاده می کنیم.

R1(tcl)#puts $firstvar
10

نکته مهم در اینجا این بود که هنگام استفاده از مقادیر متغییر ها باید قبل از نام آن از علامت $ استفاده کنید. به نظر شما در صورت عدم استفاده از این علامت چه اتفاقی میافتد؟ امتحان کنید.

اکنون بیاید دو متغییر تعریف کنیم و مقادیری را به آن ها نسبت دهیم تا محاسبات ریاضی بر روی آن ها انجام دهیم. در زبان tcl برای انجام محاسبات ریاضی از کلمه expr استفاده می کند.

R1(tcl)#set var1 100
100
R1(tcl)#set var2 200
200
R1(tcl)#set var3 [expr $var1 + $var2]
300
R1(tcl)#puts $var3
300
#R1(tcl)

در محیط tcl می توان دستورات IOS با استفاده از دو کلمه exec و ios_config در دو مد privilege و config اجرا کرد.

exec -> to run privilege mode commands

ios_config -> to run all config mode commands.

به عنوان مثال:

R1(tcl)#exec sh ip int brief
“R1(tcl)#ios_config “int fa0/0” “ip add 1.1.1.1 255.255.255.0” “no sh

در بخش بعدی این آموزش اولین برنامه واقعی خود را می نویسیم.

معرفی دوره های آموزشی میکروتیک

 MTCNA: Mikrotik Certified Network Associate

دوره آموزشی کارشناس شبکه های میکروتیک (MTCNA)  اولین و پایه ای ترین دوره از سری دوره های  آموزشی شرکت میکروتیک می باشد وعملاً پیش نیازی ندارد ولی برای درک بهتر پیشنهاد می شود دانشجویان آشنایی مقدماتی با مفاهیم شبکه و پروتکل IP و مدل TCP/IP داشته باشند. در این دوره دانشجویان با مفاهیم پایه ای شبکه و تجهیزات میکروتیک (سیتم عامل RouterOS و سخت افزار RouterBoard) به طور کامل  آشنا خواهند شد، همچنین سایر مباحث دوره های بالاتر را به طور جزئی فرا خواهند گرفت. در پایان دوره آموزشی، دانشجویان قادر به انجام تنظیمات اولیه برروی میکروتیک هستند وهمچنین مهارت راه اندازی Routing، DHCP، DNS، Wireless، انواع Tunnel، Firewall ،Queue و غیره را نیز دارا خواهند بود.

 MTCRE: Mikrotik Certified Routing Engineer

عنوان این دوره مهندسی مسیریابی شبکه های میکروتیک است. پیش نیاز این دوره ی آموزشی دوره ی MTCNA می باشد. در دوره آموزشی مهندسی مسیریابی شبکه های میکروتیک  (MTCRE) مفاهیم و تنظیمات مربوط به مسیریابی بر روی میکروتیک به طور کامل آموزش داده خواهد شد و در پایان این دوره آموزشی دانشجویان قادر به راه اندازی Route های استاتیک و داینامیک مانند OSPF و همچنین تنظیمات انواع Tunnel ها و VLAN و … خواهند بود.

 MTCWE: Mikrotik Certified Wireless Engineer

عنوان این دوره مهندسی شبکه های بی سیم میکروتیک است. پیش نیاز این دوره ی آموزشی دوره ی MTCNA می باشد. در دوره آموزشی MTCWE مفاهیم و تنظیمات انواع لینک های بی سیم با استفاده از میکروتیک به طور کامل آموزش داده خواهد شد. در پایان این دوره آموزشی دانشجویان قادر به راه اندازی کلیه حالت های لینک های بی سیم مانند  Point to Point یا Point to Multipoint خواهند بود.

 MTCTCE: Mikrotik Certified Traffic Control Engineer

عنوان این دوره مهندسی کنترل ترافیک شبکه های میکروتیک است. پیش نیاز این دوره ی آموزشی، MTCNA می باشد. در دوره ی آموزش MTCTCE مفاهیم و تنظیمات مربوط به کنترل پهنای باند و مسیر عبوری پکت ها و مفاهیم Firewall بر روی میکروتیک به طور کامل و پیشرفته آموزش داده خواهد شد. در پایان دوره آموزش MTCTCE دانشجویان قادر به راه اندازی انواع صف ها، انواع فیلترها و غیره در روتر میکروتیک خواهند بود و مفهوم Packet Flow در میکروتیک را به طور کامل مسلط خواهند شد.

 MTCUME: Mikrotik Certified User Management Engineer

عنوان این دوره، مهندسی مدیریت کاربران شبکه های میکروتیک است. پیش نیاز این دوره ی آموزشی دوره ی MTCNA می باشد. در دوره ی مهندسی مدیریت کاربران شبکه های میکروتیک یا MTCUME مفاهیم و تنظیمات مربوط به User Manager و RADIUS برروی میکروتیک به طور کامل آموزش داده خواهد شد در پایان این دوره آموزشی دانشجویان قادر به راه اندازی مباحث پیشرفته تونل ها، Accounting، مدیریت کاربران با User   Manager  وHotspot و غیره خواهند بود.

 MTCIPv6E: Mikrotik Certified IPv6 Engineer

عنوان این دوره مهندسی شبکه های مبتنی بر IPv6 میکروتیک است. پیش نیاز این دوره ی آموزشی دوره ی MTCNA می باشد. در این دوره مباحث مرتبط با مفاهیم IP نسخه ۶ به طور کامل آموزش داده می شود و برخی از سرویس هایی که با این پروتکل در میکروتیک کار می کنند نیز آموزش داده می شود.

 MTCINE: Mikrotik Certified Inter-Networking Engineer

عنوان این دوره مهندسی ارتباطات بین شبکه ای میکروتیک است. پیش نیاز این دوره ی  آموزشی دوره ی MTCRE می باشد. این دوره تنها دوره ی میکروتیک می باشد که نیاز به گذراندن دو دوره ی دیگر میکروتیک را دارد. دراین دوره آموزشی مفاهیم و تنظیمات مربوط به پروتکل های BGP، MPLS و VPLS برروی میکروتیک به طور کامل آموزش داده خواهد شد. در پایان دوره دانشجویان قادر به راه اندازی سرویس های مورد نیاز برای مراکز  سرویس دهنده (SP) خواهند بود.

در چارت زیر سری کامل دوره های میکروتیک با رعایت تمامی پیش نیاز ها نشان داده شده است:

trainingcourse1 compressorشایان ذکر است که برخی دوره های جدید میکروتیک مانند دوره ی سویچینگ در حال آماده سازی توسط شرکت میکروتیک می باشد. همچنین برخی مطالب مانند CAPsMAN که کنترلر قدرتمند وایرلس شرکت میکروتیک است و برنامه The Dude که نرم افزارمانیتورینگ شبکه شرکت میکروتیک است معمولاً به صورت کمپ برگذار می گردند. متأسفانه برخی از سرفصل ها در هیچکدام از دوره های میکروتیک فعلاً وجود ندارد و فقط نحوه پیکربندی آن ها در سایت ویکی میکروتیک موجود است. (مانند VRRP،LACP،IGMP،PIM و غیره)

نویسنده: حسین طارمیان  linkedin2 compressor

پیشنهاد نویسنده

لایسنس Commvault

لایسنس commvault
آشنایی با تکنولوژی SDN بخش دوم

آشنایی با تکنولوژی SDN (بخش دوم)

 بررسی مختصری از شبکه :

بررسی مختصر شبکه به ما  کمک میکند که مشکلاتی را توضیح دهیم که تکنولوژی SDN سعی بر برطرف کردن آن دارد. همانطور که به یاد می آورید شبکه به مجموعه ای از دستگاه های تخصصی  (Specialized Computer) به نام روتر (Router) سوییچ (Switch) و … گفته میشود که این دستگاه ها توانایی ارسال و دریافت بسته (Packet) را به سمت یکدیگر دارا می باشند.

بسته (Packet) شامل بلوک های داده ای (Blocks of Data) است که از طریق لینک های فیزیکی ارسال می شوند.

بسته ها (Packet’s) شامل یکسری 0 و 1 هستند که این 0 و 1 ها حاوی مقدار کمی از داده ها ( در حقیقت داده (data) در سمت ارسال کننده به قسمت های کوچک شکسته می شود و در سمت مخالف یعنی در سمت گیرنده دوباره این قسمت ها  به یکدیگر متصل می شوند (Reassembled) ) و دستورالعمل ها برای روتر ها و سوییچ ها در مورد مقصد بسته هستند که این اطلاعات در Header  بسته قرار می گیرد .

اطلاعات انتقال داده شده بین کامپیوتر ها را payload می نامند.

لایه های چندگانه (Multiple Layers of Data) داده ها هرکدام با مجموعه ایی از دستورالعمل های خاص خود با یکدیگر جمع می شوند (Assembled) تا کامپیوتر  مربوطه در سمت مخالف خط ارتباطی با استفاده از این مجموعه دستورالعمل ها بتواند پاسخ مناسب را به بسته ارسالی بدهد .

پس اطلاعات باید به شکل قابل استفاده و استاندارد برای همه کامپیوتر ها باشد از این رو یکی از استانداردهایی که در شبکه می توان با آن اشاره کرد مدل استاندارد OSI است.

مدل استاندارد OSI  توابع ارتباطی اجزای شبکه را مستقل از فروشندگان و تکنولوژیهای خاص تعریف می کند.

برای اینکه یک شبکه مفید باشد اطلاعات باید از یک قسمت شبکه به قسمت دیگر شبکه منتقل بشود.(خب خسته نباشی اینو که خودمون می دونستیم) این انتقال می تواند بین سرور ها یا کامپیوترها باشد و یا حتی دستگاه های ارتباطی خاص مانند تلفن های مبتنی بر آی پی (IP Phone).

هنگامی که یک Session  در شبکه شکل می گیرد، اولین بسته به سمت Device  مورد نظر در مقصد ارسال می شود، حال این دستگاه باید بداند که با بسته دریافتی چه رفتاری کند، و پروسه ی اینکه این تصمیم گیری چگونه انجام می شود (و نرم افزار در پشت صحنه) در قلب چراییه ایجاد تغییرات برای کاربران است تا قادر به ایجاد Application ها و Programهای خود (سفارشی شده) باشند.

اولین مساله این است که هر دستگاه شبکه واقعا یک جزیره به خودی خود است. بنابراین اگرچه هر دستگاهی بخشی از یک معماری بزرگ اتصالی است ولی این کامپیوترهای تخصصی (Specialized Computers) پورتال هایی (دروازه)هستند که از طریق  آن ها تراکنش ها انجام می شود(جریان های ترافیکی عبوری).

این یک مدل مصنوعی از چگونگی شکل گرفتن اینترنت است. این مدل طوری طراحی شده است که حتی اگر قسمت هایی از آن در دسترس نباشد قادربه کار کردن است. پس نتیجه این می شود که هر Node (دستگاه) در شبکه مستقل از بقیه است.

آشنایی مختصر با ســــــــــه اصطلاح درمعماری  دستگاه های شبکه :

Control Plane
Forwarding Plane (Data Plane)
Management Plane

برای چند لحظه به این فکر نکنید که مثلا روتر چه کاری انجام میدهد؟ یا سوییچ چه کاری انجام می دهد ؟ در نتیجه فکرهای زیادی به ذهن شما خطور خواهد کرد ….

مثلا اتصال فیزیکی این دستگاه ها به یکدیگر با کابل یا با وایرلس برای اینکه یک شبکه ایجاد کنیم.

خب به طور مثال جا به جایی پیام ها در شبکه (منظور از پیام می تواند Ethernet Frame  یا Packet  باشد ):

سوییچ ها Ethernet Frame  را ارسال می کنند و روتر ها  Packet  ها را ارسال (Forward) می کنند. آنها پروتکل های مختلف زیادی را استفاده می کنند برای اینکه اطلاعات مفیدی را به دست بیاورند.

هر کاری که دستگاه های شبکه انجام می دهند می تواند به سطوح مختلف کاری تقسیم بندی شود

سطح کنترلی (Control Plane):

در حقیقت مغز متفکر دستگاه می باشد که تمام هوش و ذکاوت دستگاه در Control Plane  است.

از جمله وظایف Control Plane می توان به موارد زیر اشاره کرد:

[-] Routing Protocol
[-] IPv4 ARP
[-] IPv6 NDP
[-] Switch MAC Learning
[-] STP
….

سطح ارسالی ( داده ایی) [Forwarding (Data) Plane ]:

در حقیقت Forwarding Plane  یا Data Plane  وظیفه این را دارد که بسته ها را از یک رابط شبکه (Network Interface) دریافت کند و تحویل رابط شبکه ایی دیگر بدهد, این سطح از معماری دستگاه نحوه ی اینکه چه بسته ایی ا ز چه رابط شبکه ایی گرفته شود و تحویل چه رابط شبکه ایی داده شود را از سطح کنترلی دستور می گیرد .

شما می توانید اینگونه فکر کنید که Control Plane  مغز متفکر دستگاه و Forwarding Plane  یا Data Plane  بازوی دستگاه است .

سطح مدیریتی (Management Plane ):

این سطح مدیریتی دستگاه است که برای انجام امور مدیریتی استفاده می شود.

در شکل زیر به طور کامل مفاهیم گفته شده را درک خواهیم کرد.

خب اینگونه معماری دستگاه های شبکه بهترین نوع معماری دستگاه ها است و اینگونه بنظر میرسد که راه حل کاملا منطقی برای ساختن یک سیستم شبکه و معماری آن است.

این معماری برای مدت طولانی به خوبی کار کرده و جواب نیاز های کاربران را داده است، امـــا مشکل این است که در طول زمان پیچیدگی عظیمی در شبکه ایجاد کرده است، به دلیل اینکه هر عملی (تابع)، هر  برنامه کاربردی (Application) و هر مجموعه قوانین باید برای هر دستگاه به طور واحد برنامه ریزی شود، زیرا هر دستگاه به مغز کوچک (Control Plane) خود برای اجرای برنامه ها، تصمیم گیری های انتقال و … وابسته است و این مستقل بودن هر دستگاه زمانی که شبکه شما دارای ده ها هزار دستگاه است یک وضعیت کابووس وار را برای شما به ارمغان می آورد.

علاوه بر آنچه گفته شد شما فرض کنید که نیاز های جدید کاربران و مشتریان شما روز به روز افزایش پیدا می کند و این باعث می شود که شما به طور مداوم  تغییراتی را روی دستگاه اعمال کنید یا حتی تنظیمات جدیدی را به آن کوه تنظیمات قبلی که الان در حال کار کردن است اضافه کنید، پس در نتیجه پیچیدگی (و همچنین خطاها) به صورت آبشارگونه ایی روی شبکه شما و دستگاه های شما جاری می شود. در حقیقت درخت پیچیدگی های شما در طول زمان با این معماری سنتی به صورت لگاریتمی افزایش خواهد یافت و مدیریت آن به شدت سخت خواهد شد، در شکل زیر پیچیدگی ها را به صورت درخت وار نشان داده ایم و همانطور که مشاهده می کنید با گسترده شدن شبکه پیچیدگی های آن به شدت زیاد می شود.

 جدا کردن برنامه های شبکه (Networking Application) از مجموعه شبکه

علاوه بر مشکلات ناشی از توزیع اطلاعات شبکه در سراسر شبکه، مشکل دیگری وجود دارد و آن در نحوه تولید برنامه های کاربردی شبکه و کد کردن آنها در دستگاه های شبکه است.

دوباره خاطرنشان می کنیم که در این مقاله منظور ما از برنامه های کاربردی شبکه (Networking Applications) روتینگ(Routing)، بهینه سازی(Optimization) و غیره می باشد.

مشکل اینجا است که علاوه بر اینکه هر دستگاه شبکه دارای یک سطح کنترلی (Control Plane) مختص خود می باشد، هر دستگاه دارای سیستم عامل پیچیده و منحصر بفرد خود نیز می باشد که باید تنظیم سازی، ایمن سازی، برنامه ریزی و تنظیم مجدد بشود در هر زمانی که یک تغییر قرار است ایجاد بشود.

علاوه بر این مشکل دیگر نشستن این تنظیمات برروی سخت افزار سفارشی شده برای نرم افزارهای سفارشی شده آن تولید کننده خاص هست، مثل توابع مسـیر یابی (Routing Functions)، لیست های دسترسی (Access List)، نرم افزارهای مدیریتی و مثال هایی از این قبیل.

برای مثال شما رابطه چشمگیری بین برنامه های کاربردی (Applications)، سیستم عامل و سخت افزار سرورها در بخش مجازی سازی دیده اید.

اکثر سازندگان دستگاه ادعا می کنند که دارای دسته های کد (بخش های کاربردی کد) هستند که از یکدیگر کاملا متمایز هستند به مانند شکل زیر.

این خیلی خوب است اگر در عمل و واقعیت هم مثل این ادعا دستگاه ها کار کنند اما با توجه به شکل زیر متوجه میشویم که در عمل و واقعیت با چیزی مواجه میشویم که کاملا با ادعا اولیه در تضاد 100% است . در واقع پایگاه کد این بخش های غیرقابل برگشت در هم تنیده و وابسته به یکدیگر هستند به طوری که یک مشکل با یکی از برنامه ها ی کاربردی می تواند بر سیستم عامل تاثیر بگذارد که این می تواند به نوبه خود بر روی دستورالعمل های سخت افزاری تخصصی و بالعکس تاثیر بگذارد. به همین دلیل است که مشکلات برنامه یا تنظیمات آن اغلب می توانند از طریق شبکه پخش شوند و باعث  ایجاد مشکلات مربوط به عملکرد و یا حتی بدتر , باعث ایجاد اختلال و راه اندازی مجدد سیستم بشوند.
با توجه به شکل زیر مشکلی که الان با یکدیگر بحث کردیم به راحتی قابل درک می باشد.

این سیستم ها همچنین پیچیدگی را حتی از آنچه که ا ز طریق توزیع کنترل ایجاد می شود بیشتر افزایش میدهند.

به یاد بیاورید که هر یک از این دستگاه ها به صراحت میلیون ها خط کد را دارا می باشند که روی نسخه های مختلف سخت افزار و حافظه قرار می گیرند و همه ی این پیچیدگی ها پیچیده است.

این تنها بخشی از دلایلی هست که نوآوری کندتر از آن چیزی است که اکثر کاربران خواهان آن هستند و سفارشی کردن نیز به مراتب سخت تر (برای چندین کاربر در یک شبکه مشترک )، چرا که هر یک از شرکت های بزرگ شبکه با مشکلات مشابه پیچیدگی مواجه هستند و هر برنامه کاربردی جدیدی که تولید می شود باید با همه سخت افزار ها و نرم افزار های تولید کنندگان مختلف سازگار باشد.

مساله سازگاری با استفاده از سازمان های استاندارد مطرح می شود امـا حتی اگر یک برنامه کاربردی جدید طراحی شده و پس از آن بررسی و سپس تولید شود می تواند سال ها به طول بیانجامد.

لازم به ذکر است که این نتیجه حاصل از طرح های ناسازگار شرکت ها ی بزرگ شبکه نیست. هنگامی که این سیستم ها برای اولین بار ایجاد شد، نوآوری و همکاری های زیادی صورت گرفت که طی دو دهه زمینه ی تجارت و ارتباطات را سریعا تغییر داد. در حقیقت هنوز هم ادامه دارد و واقعا کاملا مورد توجه است، مساله این است که امروز چه چیزی واقعا مورد نیاز شبکه های امروزی هست ؟

شبکه های برنامه ریزی شده به جای شبکه هایی که مجموعه ایی از دستگاه ها به صورت جداگانه برنامه ریزی شده اند.

بخش سخت اینکار استفاده از یک سیستم کنترل متمرکز برای برنامه ریزی شبکه به طور بالقوه نیاز به این است که فروشندگان شبکه کدهای خود را برای عموم باز کنند، نه آن چیزی که آن ها خود مایل به انجام آن هستند.

خوشبختانه بعضی از راه حل ها برای این کار وجود دارد، همانطور که در مقاله بعدی در بخش کنترل کننده ها به آن خواهیم پرداخت. در حقیقت  شما شاهد خواهید بود که بسیاری از فروشندگان  بزرگ تجهیزات شبکه از ابتکار بوجود آمده در SDN حمایت می کنند گرچه این به معنی تغییر در کسب و کار و از دست دادن کنترل آن ها روی بخش هایی از بازار کار است.

در حقیقت ما با استفاده از تکنولوژی SDN می خواهیم سطح کنترلی دستگاه ها را از سایر سطوح دستگاه ها جدا کنیم و آن ها را یکپارچه، متمرکز و قابل برنامه ریزی کنیم، ضمن اینکه می خواهیم کم کم به سمت شبکه های نرم افزاری هم مهاجرت کنیم به همین دلیل است مه شرکت های بزرگ شبکه اعلام کردند اگر شبکه کاری تا پایان سال 2018 علم برنامه نویسی نداشته باشد شبکه کار محسوب نمی شود.

ما در این مقاله مشکلات شبکه های امروزی،  پیچیدگی های آن, مدیریت دشوار آن را با هم به طور خلاصه مرور کردیم.

در مقاله بعدی با یکدیگر شروع به بحث و گفت و گو به صورت عمیق تر و جامع تر درباره SDN پیش نیازهای آن, پروتکل های مربوط به آن و اصطلاحات آن می پردازیم.

 

چگونه RouterOS خود را امن کنیم

چگونه RouterOS خود را امن کنیم

میکروتیک یک شرکت واقع در کشور لتونی است که در سال 1996 با هدف توسعه مسیریاب ها و سیستم های شبکه های بیسیم تأسیس شد. در حال حاضر میکروتیک تأمین کننده ی سخت افزار و نرم افزار برای ارتباطات اینترنتی در اکثر کشور های جهان است. این شرکت در سال 1997 سیستم عامل RouterOS را با هدف کنترل انواع داده و مسیریابی به وجود آورد. این شرکت در سال 2002 تصمیم به ساخت سخت افزار گرفت و برند RouterBoard  در این سال متولد شد. در حال حاضر این شرکت در شهر ریگا در لتونی واقع است و بیش از 140 کارمند دارد. از جمله امکانات میکروتیک می توان به محیط گرافیکی ساده و کاربرپسند آن، به صرفه بودن قیمت آن نسبت به نمونه های مشابه سخت افزاری، پشتیبانی ازپروتکل های انحصاری و قدرتمند خود در کنار پروتکل های استاندارد وهمچنین قابلیت های گسترده دیگر مانند پشتیبانی از مسیریابی های استاتیک و داینامیک مانند BGP وOSPF، مدیریت و ادغام پهنای باند، ارائه سرویس های HotSpot  و WebProxy، پشتیبانی از دیوار آتش قدرتمند تا لایه هفت، قابلیت شبکه های بیسیم، پشتیبانی از انواع Tunnel و VPN، پشتیبانی از MPLS، اسکریپت نویسی، ابزارهای مانیتورینگ و غیره اشاره کرد.

به طور پیش فرض نام کاربری روتر شما Admin  است و رمز عبور نیز ندارد. این نام کاربری را عوض کنید و برای آن رمز عبور بگذارید. زمانی می توانید کاربرAdmin  را پاک کنید که حداقل یک کاربر با دسترسی Admin  داشته باشد. از منوی System -> Users کاربرانی که می سازید را به گروها انتقال دهید و برای هر گروه دسترسی های دقیقی مشخص کنید تا هر شخص دقیقاً به مواردی که لازم است دسترسی داشته باشد. همچنین در این منو می توانید کلید های SSH را نیزImport  کنید و کاربران فعال را مشاهده کنید.

میکروتیک برای دسترسی راحت تر به روتر قابلیت MAC-Telnet  و MAC-Winbox دارد. از منوی Tools سرویس های MAC-Ping و MAC-Telnet و MAC-Winbox  را ببندید. به علاوه، سرویس های دیگر نیز در میکروتیک به صورت پیش فرض فعال می باشند که در صورتی که به آن ها نیازی ندارید، بهتر است که غیرفعالشان کنید. (مانند Cloud-upnp-Socks) در آخر این که اگر روتر شما LCD دارد از منوLCD آن را خاموش کنید تا دیگران دسترسی لمسی به آن نداشته باشند.

سرویس های که مورد نیاز تان نیست را از منوی IP -> Services  خاموش کنید و یا در قسمت Available from  دسترسی آن را محدود کنید. همچنین می توانید برای امنیت بیشتر برخی از شماره پورت ها را  تغییر دهید. به عنوان مثال، برنامه گرافیکی که با آن روتر خود را پیکربندی می کنید Winbox نام دارد که برروی پورت 8291 کار می کند. این مورد را نیز می توانید تغییر دهید. همچنین پیشنهاد می شود که از سرویس های امن تر استفاده کنید. به عنوان مثال به جای Telnet  از SSH استفاده کنید.

یکی دیگر از امکانات میکروتیک که عملاً به درد مانیتورینگ می خورد Torch یا مشعل است. از منوی Tools -> Torch می توانید به صورتReal time  تمامی ترافیک ها را ببینید و اگر ترافیک مشکوکی مشاهده کردید، در منوی System -> Logging and Log می توانید از موارد خاص Log  با جزئیات داشته باشید و یا  آن ها را به Syslog سرور خود بفرستید. همچنین در صورت مشاهده مصرف بالای CPU می توانید از ابزار دیگری به نام Profile  استفاده کنید. در مسیسر Tools -> Profile می توانید بررسی کنید که چه چیزی از CPU شما استفاده می کند.

به دلیل اینکه اکثر برنامه ها و سیستم عامل ها به مرور نشان می دهند که در چه قسمت هایی آسیب پذیری دارند و شرکت سازنده آن بلافاصله برای آن بسته به روزرسانی می دهد بنابراین همواره سیستم عامل خود را update  نگه دارید و آن را به آخرین نسخه RouterOS ارتقا دهید. این کار را از منوی quick-set  هم می توانید انجام دهید.  همچنین می توانید از منوی System -> Routerboard  به روز رسانی Firmware  دستگاه خود را نیز انجام دهید.

میکروتیک دارای فایروال قدرتمندی نیز است که از منوی IP -> Firewall -> FilterRule می توانید برروی ترافیک ها در جهت های مشخص عملی انجام دهید و همچنین ترافیک ها را کنترل کنید. فایروال میکروتیک شامل زنجیره های مهمی از قبیل INPUT برای ترافیک هایی که مقصدشان روتر است، OUTPUT برای ترافیک هایی که مبدأ آن ها روتر است و همچنین Forward برای ترافیک های که مبدأ و مقصدشان روتر نیست. در این قسمت با پورت ها، IP ها،connection  ها و حتی محتوا نیز می توان کار کرد.

02 08 firewall rules compressor

اکثر حملات در ابتدا با اسکن پورت های شما شروع می شودو بنابراین، در منوی IP -> Firewall -> FilterRule -> Exrta از قسمت PSD(Port Scan Detection) استفاده کنید و جلوی اسکن شدن پورت های روتر خود را بگیرید. همچنین در همین قسمت در بخشLimit  وConnection Limit  با قوانینی که می نویسید جلوی حملات DOS را بگیرید. فایروال میکروتیک در لایه هفت نیز کار می کند. در مسیر IP -> Firewall -> Layer7 protocols  می توانید قسمت داده های Packet را مورد بررسی قرار دهید و می توانید از Regex نویسی برای کنترل ترافیک و یا فیلترینگ استفاده کنید. بعد از اینکه Regex  خود را نوشتید می توانید از آن در زنجیره های فایر وال استفاده کنید. اگر نیاز به فایروال لایه 2 دارید باید از فیلتر Rule های که داخل منوی Bridge هستند استفاده کنید. به این منظور می توانید در منویBridge  از قسمت Filter آن برای کنترل ترافیک های لایه دو استفاده کنید. همچنین می توانید با فعال کردن تیک Use IP Firewall ترافیک ها را از فایروال لایه 3 نیز عبور دهید.

به دلیل این که امکانات و قابلیت های RouterOS  به صورت ماژولار به آن اضافه می شود و این ماژول ها تحت عنوان Packages در این سیستم عامل کار می کنند، بنابراین از طریق منوی System -> Packages   پکیج هایی که از آن استفاده نمی کنید را خاموش کنید. )به عنوان مثال IPV6 یا MPLS و یا غیره( همچنین از به روز بودن Package ها مطمئن باشید.

اگر از پروتکل مسیریابی OSPF در شبکه خود استفاده می کنید، حتماً ازAuthentication  بین همسایه های آن استفاده کنید تا مهاجمان نتوانند به راحتی با روتر شما همسایه شوند. به علاوه از آن جایی که این پروتکل برای تشکیل همسایگی برروی اینترفیس هایی که همسایه ای  ندارند و یا نقطه انتهایی شبکه هستند پیغام های Hello ارسال می کند، آنها را Passive  کنید تا بر روی آن اینترفیس ها Hello ارسال نشود. تمامی این امکانات از منوی Routing -> OSPF -> Interfaces قابل دسترسی است.

در میکروتیک می توانید با استفاده از ابزار Btest که از سایت میکروتیک قابل دریافت است، تست پهنای باند بگیرید. این ابزار از سمت روتر نیز نیاز به تنظیمات دارد. به طور پیش فرض تست پهنای باند بر روی میکروتیک (به عنوان سرور) فعال است. به منظور غیرفعال کردن، وارد منوی Tools -> BTest Server شوید زیرا در صورتی که کسی به میکروتیک شما تست بزند CPU شما پر خواهد شد.

میکروتیک برای پیدا کردن سایر تجهیزات شبکه در لایه 2 از MikroTik Neighbor Discovery Protocol (MNDP) استفاده می کند. همچنین از  LLDP و CDP سیسکو نیز پشتیبانی می کند.  به همین دلیل از منوی  IP -> Neighbors قابلیت Neighbor Discovery  را روی اینترفیس های که نیاز ندارید خاموش کنید تا بر روی این اینترفیس ها تجهیزات شما کشف نشوند. به عنوان آخرین نکته، اینترفیس های که استفاده نمی کنید را به طور کلی  از منوی IP -> Interface خاموش کنید.

آشنایی با تکنولوژی SDN بخش اول

آشنایی با تکنولوژی SDN (بخش اول)

بخش اول :

مشکل شبکه های امروزی ما چیست ؟

کاربران امروزی به شدت به این موضوع عادت کرده اند که دیگر در اانتظار برآورده شدن خواسته هایشان توسط شرکت های بزرگ و حتی سرشناس نمی نشینند و خود دست به کار میشوند تا نیازهای خود را برطرف کنند و به هیچ عنوان خود را محدود به اسم, شرکت , سازمان و یا برند تجاری خاصی نمی کنند که این دسته سازمان ها نیازهای نرم افزاری و اپلیکیشنی کاربران را برطرف کنند بلکه کاملا عکس این موضوع صادق است , به طوری که کاربران امروزی برای یافتن آن چیزی که مورد نیازشون هست وقت صرف میکنند , تحقیق میکنند , انرژی میگذارند تا در نهایت خواسته خودشان را برطرف کنند.

حال این برطرف کردن خواسته کاربر می تواند یا جست و جو در سایت های مختلف و یافتن نرم افزار مورد نظر و دانلود آن باشد یا نه حتی در بعضی موارد که شامل کاربران حرفه ایی و فنی می شود ,  خود کاربر دست به کار شده و با استفاده از علم و دانش خود و با استفاده از سیستم عامل هایی مثل سیستم عامل های متن باز خود ابزار مورد نیاز خودشان را برای خودشان فراهم می کنند . به عنوان مثال این ابزار ها  می توانند به عنوان نرم افزار به عنوان سرویس (Software as Service(SaaS)) مورد استفاده قرار گیرند و خیلی مثال هایی از این قبیل.

اغلب شرکت ها و سازمان های (آی تی) باید تلاش کنند تا تمام این ابزارها را فراهم و حفظ کنند و برای پشتیبانی آن هم به دنبال راه کارهای مناسب باشند.در کل امروزه ایجاد محدودیت برای کاربران در سازمان ها و شرکت های بزرگ به طور کل موضوعی رد شده است, به طور مثال امروزه حتی بعضی از سازمان ها و شرکت های مهم  اجازه استفاده از نرم افزارهای متن باز را مثل (MySQL) را در سیستم های بحرانی و حیاتی خود را هم به کاربران میدهند تا مانع محدودیت برای کاربران سازمان خود شوند و در عین حال وابستگی سازمان خود را هم به شرکت های Close Source  از بین میبرند چون در اینصورت سفارشی کردن محصول را برای سازمان خود راحت تر و قابل دسترس تر می کنند در ضمن اینکه از پرداخت هزینه های گزاف هم اجتناب می کنند.

در این مسیر پیش رو به سوی نوآوری و  یکپارچه سازی و سفارشی سازی ابزارها و نرم افزارها و …. کاربران شبکه هم مستسثنی از این قضیه  نیستند آن ها هم نیاز هایی از این قبیل دارند و آن ها هم نیاز به گسترش و پیشرفت کار خود در شبکه را جزو نیازهای مهم و حیاتی به حساب می آورند و می خواهند  توانایی سفارشی سازی ابزارهای (شبکه) خود را در شبکه از نظر خدمات , برنامه های کاربردی و پشتیبانی را دارا باشند. در این میان کلمه Application ( برنامه ) برمیگردد به برنامه های شبکه ایی  یا Network Application’s مانند Routing(مسیریابی), (Optimization) بهینه سازی یا (Security) امنیت و ……

برای انطباق با این نیازهای روزافزون کاربران امروزی شبکه نیاز به متحول شدن در نحوه کار و پیاده سازی شبکه به چشم می خورد. در اصل نتیجه مطلوب این است که شبکه های امروزی را که روز به روز هم در حال گسترش هستند را قابل برنامه ریزی کنیم در ننتیجه این کار خیلی خیلی راحت تر می توانیم در شبکه تغییرات ایجاد کنیم, حال چه این تغییرات برای گروه خاصی باشد یا برای کل سازمان یا شرکت فرقی ندارد مهم مدیریت ساده و در اصل یــــــک پـــــــــارچــــــــه سازی مدیریت شبکه است به طوری که مثلا برای ایجاد یک تغییر در پیکربندی (Configuration) چند دستگاه نیاز به حضور نقطه به نقطه (Point-By-Point) پای هر دستگاه نداشته باشیم و تنها با اعمال تغییرات مورد نیاز در نرم افزار یکپارچه سازی شبکه کلیه تغییرات روی دستگاه ها اعمال شود.

برای رسیدن به این هدف یک تکنولوژی جدید به نام Software Defined Network یا SDN   را معرفی می شود که در ادامه به بحث راجع به این تکنولوژی جدید , پروتکل های آن و نحوه اعمال آن و شرایط مورد نیاز برای اعمال این تکنولوژی را مورد بررسی قرار می دهیم. اما در بخش بعدی قبل از پرداختن به تکنولوژی SDN چند مورد را با یکدیگر مورد بررسی قرار می دهیم.

VMware vRealize Operations Manager

VMware vRealize Operations Manager

به طور کلی، این بسته نرم افزاری امکان اجرای اعمال مدیریتی هوشمند را بر روی برنامه های کاربردی تا دستگاه های ذخیره سازی در زیرساخت های Cloud، مجازی و فیزیکی ارائه می دهد. این مجموعه نرم افزاری، اطلاعات را از چندین منبع داده متفاوت جمع آوری و تحلیل می کند و جهت تحلیل، از الگوریتم های تحلیلی پیشرفته ای به منظور یادگیری و تشخیص رفتار عادی هر یک اشیائی که مانیتور می کند، استفاده می کند. از طریق داشبورد، View ها و گزارشات، کاربران قادر به مشاهده جزئیات هستند و می توانند از این اطلاعات جهت تصمیم گیری در حوزه های زیر استفاده کنند:

یافتن راه حل  برای مشکلات و تحلیل علل ریشه ای آنها

سلامت محیطی و هشداردهی پیشرفته مشکلات بالقوه

مدیریت ظرفیت و پیش بینی

مجموعه vRealize Operations Manager از چندین پکیج مدیریتی جهت جمع آوری، تحلیل و نمایش داده های جمع آوری شده از منابع داده مختلف (محصولات VMware و یا اشخاص ثالث) استفاده می کند. این قابلیت ها، دیدی جامع از زیرساخت Cloud و همچنین میزان بار کاری کاربران سرویس ها برای ارائه دهندگان خدمات Cloud فراهم می کند. به علاوه، می توان با  استفاده از تعریف Policy، فرآیندهای کلیدی را خودکار کرد که همین امر موجب می شود که میزان بازده افزایش یابد.

از جمله قابلیت های موجود در این بسته نرم افزاری می توان به موارد زیر اشاره نمود:

امکان استفاده از هشدارها و نشانه های تحلیلی جهت رفع مشکلات متداول و همچنین حل مسائل پیچیده عملیاتی

نظارت بر ظرفیت و بهره برداری از زیرساخت

برنامه ریزی جهت استفاده ظرفیت و تحلیل شرایط خاص

شخصی سازی محیط نرم افزار با تعریف هشدارها، نشانه ها، دیدها، گزارشات، داشبوردها و معیارها

پیکربندی Policy ها جهت رفع نیازهای محیطی

اعطای دسترسی به کاربران و گروه ها و کنترل میزان دسترسی آنها به محیط

گسترش قابلیت های برنامه با افزودن بسته های مدیریتی و راهکارها

این بسته نرم افزاری در قالب دو مدلِ پیاده سازی عرضه شده است؛ اولین مدل یک ابزار مجازی از پیش پیکربندی شده (vApp) است و دومین مدل، یک بسته قابل نصب بر روی سیستم عامل های ویندوز و لینوکس است. مدل اول، در قالب یک ماشین مجازی (VM) است. هر یک از این ماشین های مجازی می توانند برای اجرای یکی از نقش های زیربنایی در کلاستر مربوط به vRealize مورد استفاده قرار بگیرند. این نقش ها عبارتند از:

Master Node: اولین نود (اجباری) در یک کلاستر و یا نود منفرد

Master Replica Node: نود اختیاری به منظور استفاده از قابلیت High Availability (HA) برای نود اصلی یا همان Master Node

Data Node: جهت گسترش کلاستر مربوط به vRealize Operations Manager

Remote Collector Node

نرم افزار LiveAction LiveNX

نرم افزار LiveAction LiveNX

شفافیت شبکه بی نظیر و تضمین خدمات

نقشه تعاملی از شبکه که توسط این پلتفرم ارائه می شود جریان ترافیک شبکه را به صورت لحظه ای نمایش می دهد. بر روی این نقشه می توانید مسیر جریان داده و دستگاه های شبکه موجود در مسیر را مشاهده کنید. همچنین این توپولوژی به مدیران شبکه اجازه می دهد تا جزئیات بیشتری از شبکه را آنالیز و بررسی کنند تا بتوانند در نهایت در سیاست های خود و سازمان موارد لازم را اعمال کنند. علاوه بر این ها با داشتن ویژگی Flow Playback می توان بر اساس تاریخ یا زمان جریان های داده در گذشته را بررسی کرد.

شفافیت برنامه ها و خطایابی

امکان دیدن همه پرتکل ها، انواع اپلیکشن ها از جمله ویدیو، صدا، برنامه های ارتباطی، برنامه های به اشتراک گذاری فایل و …. در این پلتفرم باعث می شود که مدیران یک دید عمیق از جریان داده های موجود در شبکه خود داشته باشند. خطایابی برنامه های پیاده شده در مرکز داده، فضا های ابری عمومی یا بستری مانند سرویس به عنوان پلتفرم (SaaS). این شفافیت در نهایت منجر به فهمیدن این می شود که کدام برنامه ها به چه شکلی منابع شبکه را مورد استفاده قرار می دهند و  می تواند در تصمیم گیری برای داشتن مکانیزم ها و سیاست های بهینه تاثیر گذار باشد.

مدیریت و کنترل کیفیت خدمات

امروزه در شبکه ها با حضور برنامه های مالتی مدیا، ارتباطات یکپارچه و بسیاری از سرویس های مورد استفاده سازمان ها بیش از هر زمان دیگری نیازمند تجربه کاربری بهتری برای کاربران نهایی هستیم. پلتفرم LiveNX توانایی مدیریت QoS را به صورت کامل در اختیار مدیر شبکه قرار می دهد. بدین معنی که مدیر شبکه می تواند به صورت لحظه ای سیاست های تضمین کیفیت خدمات را اضافه، حذف یا تغییر دهد. همچنین با داشتن یک wizard گرافیکی مناسب و دارا بودن تعدادی سیاست های نمونه از قبل تعبیه شده که متشکل از بهترین راهکار ها و موارد پیشنهادی شرکت سیسکو است می توان مطمئن بود که موارد انتخابی مطابق با استاندارد های روز دنیاست و می تواند با اطمینان مورد استفاده قرار گیرد. مورد بسیار با اهمیت دیگر نیز تولید گزارش هایی از عملکرد، تنظیمات و خطاهای سیاست های QoS است که این عمل نیز توسط این پلتفرم انجام می پذیرد.

مدیریت SD-WAN (Software-Defined WAN)

این پلتفرم توانایی بررسی موثر عملکرد شبکه های WAN از جمله MPLS، hybrid، SD-WAN برای بدست آوردن مقدار باز آوری در ازای سرمایه گذاری (ROI) را دارد. زمانی که یک دستگاه در شبکه تصمیم به تغییر مسیر برای یک مقصد خاص میگیرد این برنامه تغییر را رندر و به شکل گرافیکی بر روی توپولوژی شبکه نمایش می دهد.

برنامه ریزی ظرفیت

پیدا کردن منابعی که بیشترین استفاده و تغییر را دارند مانند پهنای باند، CPU، حافظه اصلی و… همچنین بررسی جزئی اطلاعات از جمله آمارها و خطاهای اینترفیس ها. علاوه بر این موارد می تواند با دیگر گزارش هایی که از دیگر قسمت ها گردآوری شده اند ترکیب و در نهایت یک دید کلی از منابعی که بیشترین استفاده را دارند به مدیر شبکه بدهد.

ابزار RVTools برای VMware

ابزار RVTools برای VMware

RVTools یک ابزار رایگان (برای ویندوز) است که با استفاده از امکاناتی (VI SDK) که برنامه نویسان شرکت VMware تعبیه کرده اند اطلاعات محیط های مجازی را جمع آوری و نمایش می دهد. این نرم افزار یک ابزار رایگان است که می تواند با تمام نسخه های ESXi و vCenter (از جمله vCenter 6.5) در تعامل باشد و از این نسخه ها پشتیبانی می کند.

RVTools قادر است اطلاعاتی از قسمت های مختلف از جمله ماشین های مجازی، پردازنده، حافظه، دیسک ها، پارتیشن ها، شبکه، فلاپی درایوها، CD درایوها، Snapshot ها، VMware tools، Resource Poolها، کلاسترها، هاست های ESX و HBA ها، کارت های شبکه، سوییچ ها، پورت ها، سوییچ های distributed، پورت های distributed و service console ها، VM Kernelها، Datastoreها، multipath info، اطلاعات لایسنس و تست های سلامتی را بدست آورد و نمایش دهد.

همچنین با این ابزار می توانید CD یا فلاپی درایو را از ماشین های مجازی قطع کنید و VMware Tools نصب شده بر روی همه ماشین های مجازی را بروز رسانی کنید.

در ادامه لینک دانلود و راهنمای کاربری استفاده از نرم افزار را برای شما قرار داده ایم.

لینک دانلود برنامه

لینک دانلود راهنما کاربری

Private VLAN

Private VLAN چیست؟

مقدمه

همانطور که به یاد دارید اساس کار VLAN ها به وجود آوردن Broadcast domain های مختلف بود. اما Private VLAN ها اجازه می دهند که domain را اصطلاحا به broadcast “subdomain” های ایزوله تقسیم کنیم. به این معنی که sub-VLAN هایی در داخل یک VLAN بسازیم که از یکدیگر ایزوله باشند. زمانی که VLAN بندی می کنیم دیگر پورت های داخل VLAN های مختلف نمی توانند مستقیما با یکدیگر ارتباط داشته باشند، و به یک مکانیزم لایه 3 نیاز دارند تا پکت ها را بین broadcast domain های مختلف انتقال دهد. این محدودیت در مورد PVLAN ها نیز صدق می کند، چرا که subdomain ها هم در لایه 2 از یگدیگر جدا هستند و به یک مکانیزم لایه 3 برای برقراری ارتباط نیاز دارند.

در دنیای شبکه VLAN های مختلف دارای IP هایی از رنج های متفاوت خواهند بود. اما زمانی که یک VLAN را با استفاده از PVLAN ها تقسیم می کنیم دستگاه هایی که داخل آن PVLAN ها قرار می گیرند همچنان دارای رنج IP مشابه خواهند بود اما همانطور که گفته شد نمی توانند مستقیما با یکدیگر در ارتباط باشند و نیازمند دستگاه لایه 3 برای برقراری ارتباط با یکدیگر خواهند بود (برای مثال با استفاده از Local Proxy ARP). در اینجا router به عنوان یک دستگاه لایه 3 می تواند اجازه یا عدم اجازه برقراری ارتباط بین sub-VLAN ها را بدهد. معمولا این نوع تنظیمات در محیط های “Shared” مانند ISP co-location بسیار طرفدار دارد چرا که قرار دادن چندین مشتری در یک رنج IP می تواند مقرون به صرفه باشد و در عین حال سطح بسیار خوبی از isolation را بین مشتریان فراهم می کند.

آشنایی با اصطلاحات Private VLAN ها:

در ادامه تصویر سناریویی که برای توضیحات و انجام تنظیمات در این مطلب مورد استفاده قرار گرفته است را مشاهده می کنید.

در این سناریو ما VLAN 1000  را به سه PVLAN تقسیم می کنیم. و شامل sub-VLAN 1012 که روتر های R1 و R2 در آن هستند و sub-VLAN 1034 که روتر های R3 و R4 در آن قرار می گیرند و در نهایت sub-VLAN 1055 که فقط روتر R5 در آن وجود دارد. روتر R6  نیز در این سناریو به عنوان دستگاه لایه 3 برای برقراری ارتباط مورد استفاده قرار می گیرد. در Private-VLAN باید یک VLAN را به عنوان VLAN اصلی در نظر بگیریم که ما VLAN 1000 را به عنوان Primary در نظر گرفتیم یعنی تمام دستگاه ها که در آن قرار می گیرند دارای رنج آی پی 10.0.0.0/24 خواهند بود.

پورت هایی که در این VLAN قرار می گیرند بر اساس نوع آن ها به سه دسته تقسیم می کنیم:

•    پورت Promiscuous (“P”): معمولا به یک روتر وصل می شود. این نوع پورت اجازه دارد که فریم های لایه دو VLAN را از هر نوع پورت دریافت یا به آن ارسال کند.

•    پورت Isolated (“I”): این نوع از پورت صرفا اجازه دارد که با پورت “P” ارتباط داشته باشد. معمولا دستگاه های مانند سرور ها به این پورت ها وصل می شوند.

•    پورت Community (“C”): این پورت ها اجازه دارند که با بقیه دستگاه ها که همگی در یک PVLAN هستند ارتباط برقرار کنند. همچنین قادر خواهند بود تا با پورت های “P” در ارتباط باشند.

به این منظور که رفتار sub-VLAN ها را پیاده سازی کنیم نیاز داریم نحوه انتقال فریم ها بین انواع مختلف پورت ها را تعریف کنیم. VLAN ها را به دو گروه “Primary” و “Secondary” تقسیم می کنیم.

•    Primary VLAN (در مثال ما VLAN 1000): این VLAN برای انتقال فریم های که از پورت های “P” می آیند بر روی دیگر انواع پورت ها (پورت های“I” و “C”) استفاده می شود.

•    Secondary Isolated VLAN: فریم ها را از پورت های “I” به پورت های “P” منتقل می کند. از آنجایی که پورت های Isolated نمی توانند فریم ها را مستقیما به یکدیگر ارسال کنند می توانیم فقط از یک Isolated VLAN برای اتصال همه ی I-port ها به P-port ها استفاده کنیم.

•    Secondary Community VLANs: فریم ها را بین پورت های Community یا C-port های که در یک گروه (private-vlan community) هستند انتقال می دهد. همچنین می توانند فریم ها را به P-port های Primary VLAN بفرستند.

Private VLAN ها چگونه کار می کنند؟

این ها موارد کلیدی از نحوه عملکرد Private VLAN ها هستند که باید به یاد داشته باشید:

•    Primary VLAN فریم ها را از promiscuous port به تمام پورت ها در PVLAN ها ارسال می کند.

•    Isolated VLAN فریم ها را از دستگاه ها مستقیما به روتر یا همان P-port ها ارسال می کنند.

•    Community VLAN ها اجازه ارتباط دو طرفه برای تبادل فریم ها را در یک گروه می دهد علاوه بر این فریم ها را برای P-port ها نیز ارسال می کند.

•    فرآیند یادگیری MAC آدرس ها، forward کردن و همچنین روند broadcast/multicast flooding در primary/secondary VLAN ها همچنان مثل گذشته خواهد بود.

Private VLAN ها می توانند از پورت trunk انتقال داده شوند. شماره VLAN های Secondary برای tag زدن فریم ها مورد استفاده قرار می گیرد. مانندVLAN های عادی ترافیک Primary VLAN نیز ترانک می شود. اگر چه نیاز دارید تنظیمات مشخصی برای Private VLAN (bindings، mappings) را بر روی همه ی سوییچ ها انجام دهید. (البته اگر از VTPv3 استفاده کنید نیازی به این کار نیست).

تنظیمات Private VLANها:

ما Primary VLAN 1000، Isolated VLAN 1005(R5)، Community VLAN 1012(R1, R2) و Community VLAN 1034(R3, R4) را داریم.

قدم اول:

اگر نخواهیم از VTPv3 استفاده کنیم باید VTP را با قرار دادن در حالت Transparent غیر فعال کنیم. بعد از آن باید VLAN های Primary و Secondary را بسازیم و آن ها را به PVLAN domain ها bind کنیم.

SW1:

vtp mode transparent
!
! Creating primary VLAN, which is shared among secondary’s
!
vlan 1000
private-vlan primary
!
! Community VLAN for R1 and R2: allows a “subVLAN” within a Primary VLAN
!
vlan 1012
private-vlan community
!
! Community VLAN for R3 and R4
!
vlan 1034
private-vlan community
!
! Isolated VLAN: Connects all stub hosts to router.
! Remember - only one isolated vlan per primary VLAN.
! In our case, isolates R5 only.
!
vlan 1055
private-vlan isolated
!
! Associating the primary with secondary’s
!
vlan 1000
private-vlan association 1012,1034,1055

این قدم برای گروه کردن PVLAN ها داخل یک shared domain و برقراری یک پیوستگی بین آن ها انجام می شود. از آنجایی که VTP را غیر فعال کردیم همین کار را بر روی سوییچ 2 (SW2) نیز انجام دهید.

قدم دوم:

باید تنظیم کردن پورت های host و bind کردن آن ها به PVLAN های مربوطه طبق سناریو انجام شود. همچنین این نکته را در نظر داشته باشید که پورت host همزمان به VLAN های مختلف تعلق دارد به این معنی که downstream آن primary و upstream آن secondary است. همچنین پورت ترانک را بین سوییچ ها فعال می کنیم تا ترافیک PVLAN ها بین سوییچ ها منتقل شود.

SW1:
!
! Community port (links R1 to R2 and “P”-ports)
!
interface FastEthernet0/1
description == R1
switchport private-vlan host-association 1000 1012
switchport mode private-vlan host
spanning-tree portfast
!
! Community port (links R3 to R4 and “P”-ports)
!
interface FastEthernet0/3
description == R3
switchport private-vlan host-association 1000 1034
switchport mode private-vlan host
spanning-tree portfast
!
! Isolated port (uses isolated VLAN to talk to “P”-ports)
!
interface FastEthernet0/5
description == R5
switchport private-vlan host-association 1000 1055
switchport mode private-vlan host
spanning-tree portfast
!
! Trunk port
!
interface FastEthernet 0/13
switchport trunk encapsulation dot1q
switchport mode trunk


SW2:

interface FastEthernet0/2
description == R2
switchport private-vlan host-association 1000 1012
switchport mode private-vlan host
spanning-tree portfast
!
interface FastEthernet0/4
description == R4
switchport private-vlan host-association 1000 1034
switchport mode private-vlan host
spanning-tree portfast
!
! Trunk port
!
interface FastEthernet 0/13
switchport trunk encapsulation dot1q
switchport mode trunk

 اکنون باید صحت تنظیمات انجام شده بر روی سوییچ اول (SW1) را بررسی کنیم:

SW1#show vlan id 1012

SW1#show vlan id 1034

SW1#show vlan id 1055

SW1#show interfaces fastEthernet 0/13 trunk

بررسی صحت تنظیمات انجام شده بر روی سوییچ 2 (SW2):

SW2#show vlan id 1000

SW2#show vlan id 1012

SW2#show vlan id 1034

SW2#show vlan id 1055

SW2#show interface fastEthernet 0/13 trunk

قدم سوم:

نوبت به ساخت یک promiscuous port و تنظیم کردن downstream mapping های آن رسیده است. در اینجا VLAN های secondary را اضافه می کنیم که ترافیک را توسط این پورت (P-port) دریافت می کنیم. Primary VLAN برای ارسال ترافیک به همه ی پورت های “C” و “I” استفاده می شود.

SW2:

!
! Promiscuous port, mapped to all secondary VLANs
!
interface FastEthernet0/6
description == R6
switchport private-vlan mapping 1000 1012,1034,1055
switchport mode private-vlan promiscuous
spanning-tree portfast

بررسی صحت تنظیمات انجام شده:

SW2#show int fa 0/6 switch | beg private

اگر نیاز دارید یک SVI بسازید و از آن برای ارتباط بین اعضای Private VLAN ها استفاده کنید صرفا باید interface مربوط به Primary VLAN را ساخته و تنظیمات را بر روی آن انجام دهید. پس از اینکه SVI ساخته شد باید Secondary VLAN های مورد نظر را دقیقا مانند Promiscuous port به SVI که ساخته اید map کنید. همچنین ممکن است بخواهید ارتباط را برای تعدادی secondary VLAN را محدود کنید که می توانید با ننوشتن mapping برای آن این کار را انجام دهید.

SW1:

!
! SW1 SVI is mapped to all secondary VLANs
!
interface Vlan 1000
ip address 10.0.0.7 255.255.255.0
private-vlan mapping 1012,1034,1055


 SW2:

!
! SW2 SVI is mapped to 1012/1034 only, so it’s cant communicate with R5
!
interface Vlan1000
ip address 10.0.0.8 255.255.255.0
private-vlan mapping 1012,1034

اکنون برای تکمیل شدن سناریو همه ی روتر های R1-R6 را در رنج (10.0.0.0/24) IP می دهیم و آدرس broadcast را پینگ می کنیم.

R1#ping 10.0.0.255 repeat 1

R3#ping 10.0.0.255 repeat 1

R5#ping 10.0.0.255 repeat 1

R6#ping 10.0.0.255 repeat 1

یک ویژگی دیگر وجود دارد که ذکر آن خالی از لطف نیست به نام پورت Protected یا “Private VLAN edge” که بسیار ابتدایی بوده و حتی بر روی سوییچ پایین رده نیز وجود دارد. این ویژگی امکان ایزوله کردن پورت ها را در داخل یک VLAN می دهد. به این معنی که تمام پورت های Protected داخل یک VLAN از برقراری ارتباط با یکدیگر منع شده اند (اما اجازه دارند به دیگر پورت های non-protected در همان VLAN فریم ارسال کنند). معمولا پورت های protected تنظیم می شوند که unicast های ناشناخته (مانند فریم با MAC آدرس که سوییچ آن را بلد نیست) را دریافت نکنند.

مثال:

interface range FastEthernet 0/1 - 2
switchport mode access
switchport protected
switchport block unicast
switchport block multicast

HA Admission Control

HA Admission Control (بخش سوم-Slot)

این سیاست قدیمی ترین و شاید سخت ترین مورد از نظر مفهومی می باشد زیرا الگوریتم و مکانیزم کار پیچیده تری دارد که کمتر از بقیه سیاست ها درک شده است. اما سعی ما بر این است که در ساده ترین حالت آن را توضیح دهیم. هنگام پیکربندی کلاستر در قسمت Host Failure Cluster Tolerates، مشخص می کنیم کلاستر تحمل از دست رفتن چه تعداد از هاست ها را داشته باشد. به عنوان مثال اگر در یک کلاستر با چهار هاست این عدد یک انتخاب شود، به این معنی است که هر گاه یکی از هاست ها از دست رفت (فرقی نمی کند کدام هاست چرا که نمی توان پیش بینی کرد که در کدام زمان چه هاستی ممکن است از دست برود) سه هاست دیگر بتوانند تمام ماشین های مجازی کلاستر را روشن نگه دارند. این عدد می تواند بین یک تا یکی کمتر از تعداد هاست های کلاستر باشد.

این سیاست بدترین سناریو ممکن را برای Failover در نظر می گیرد (مثلاً از دست رفتن هاستی که بیشتر میزان منابع را دارد) و این کار را با استفاده از مفهومی به نام Slot انجام می دهد. Slot از دو جز تشکیل شده است:

1-    Memory
2-    CPU

به عبارتی دیگر Slot یک واحد منطقی از منابع CPU و Memory برای روشن کردن ماشین های مجازی می باشد. این مکانیزم به این صورت عمل می کند:

مرحله اول: اندازه Slot محاسبه می شود. HA اندازه Slot برای Memory را از بیشترین حافظه رزرو شده و بیشترین Memory Overhead (حافظه ای که VMKernel برای روشن کردن و کنترل ماشین مجازی مصرف می کند) ماشین های مجازی روشن در کلاستر انتخاب می کند. پس اگر در کلاستر شما از بین تمام ماشین های مجازی بیشترین میزان RAM رزرو شده 8GB باشد، اندازه (Memory Slot) ، 8GB به اضافه بیشترین مقدار Memory Overhead خواهد بود. اگر هیچ یک از ماشین ها رزرو نداشته باشند، اندازه Slot به میزان بیشترین Memory Overhead در بین ماشین های مجازی در نظر گرفته می شود.

میزان Memory Overhead برای یک ماشین مجازی

در محیط vCenter با انتخاب  Cluster -> Monitor -> vSphere HA -> Summary -> Advanced Runtime info می توانید اندازه Slot ها را مشاهده کنید.

Slot Size زمانی که هیچ ماشین مجازی روشن نیست معنی ندارد

 Slot Size زمانی که هیچ رزروی برای ماشین های کلاستر وجود ندارد

اندازه Slot ها زمانی که 1024MB بیشترین میزان رزرو شده برای RAM در ماشین های مجازی داخل کلاستر است
(Memory Slot Size = Max Reservation + Max Overhead)

برای CPU نیز بیشترین مقدار رزرو شده بر روی ماشین های مجازی روشن درون کلاستر در نظر گرفته می شود و در صورت عدم رزرو منابع، مقدار پیش فرض 32MHz به عنوان اندازه CPU Slot انتخاب می گردد. اگر شما یک ماشین مجازی با 8vCPU و 2GHz رزرو داشته باشید مقدار 2GHz برای CPU slot در نظر گرفته خواهد شد.

اندازه Slot ها زمانی که 2000MHz بیشترین میزان رزرو شده برای CPU در ماشین های مجازی داخل کلاستر است

در مرحله بعدی Admission Control تعداد Slot هایی که در کلاستر موجود می باشند را محاسبه می کند.

مرحله دوم: در این مرحله HA Admission Control به تمام منابع نگاه می کند و تعداد کل Slotهای حافظه در هر هاست را بدست می آورد. تعداد Slot ها از طریق تقسیم مقدار حافظه کلی موجود بر اندازه Memory Slot بدست می آید و همین عمل برای CPU نیز انجام می شود و کمترین عدد (از بین اندازه CPU Slot و Memory Slot) به عنوان تعداد کل Slot های Host در نظر گرفته می شود. به عنوان مثال زمانی یک هاست 6GB رم و دو عدد CPU Core با سرعت پردازش 3GHz داشته باشد و همانند مثال بالا CPU Slot = 2000MHz و Memory Slot = 1095MB باشد، تعداد کل Slot های این هاست به روش زیر محاسبه می شود:

Total Memory = 6000 MB
Memory Slot Size = 1095 MB
Total Memory Slot = Total Memory ÷ Memory Slot Size = 6000 ÷ 1095 = 5.47

عدد به دست آمده به سمت پایین رند می شود بنابراین هاست ما 5 عدد Memory Slot خواهد داشت.

Total CPU Cores = 2
CPU Speed = 3000 MHz
Total CPU = 2 Core * 3000 MHz = 6000 MHz
CPU Slot Size = 2000 MHz
Total CPU Slot = Total CPU ÷ CPU Slot Size = 6000 ÷ 2000 = 3

تعداد CPU Slot برای این هاست عدد 3 خواهد بود. Admission Control از بین این اعداد یعنی 5 برای Memory Slot و 3 برای CPU Slot،  کمترین عدد یعنی 3 را در نظر می گیرد.

بنابراین اگر کلاستر ما چهار عدد هاست با مشخصات گفته شده یعنی 6GB RAM و دو عدد CPU با سرعت پردازش 3000MHz داشته باشد، تعداد Slot هر هاست 3 و تعداد کل Slot ها در کلاستر عدد 12 خواهد بود.

حال به شکل های زیر نگاه کنید تا نتیجه محاسبات انجام شده را با شرایط واقعی مقایسه کنیم:

 کلاستر دارای چهار Host می باشد

هر Host دارای 6GB RAM و 6GHz CPU می باشد

قسمت Resource Reservation در کلاستر ظرفیت کلی برای CPU را 24.00GHz نشان می دهد که با توجه به وجود چهار هاست با ظرفیت 6GHz CPU کاملا درست و منطقی باشد. نکته قابل تأمل در شکل بالا قسمت Total Reservation Capacity می باشد که مقدار 13.92GHz را نشان می دهد. سوال اینجاست که چرا این عدد که کل منابع قابل رزرو شدن را به ما نشان می دهد کمتر از ظرفیت کلی کلاستر است؟ یعنی نمی توان کل منابع کلاستر را رزرو کرد؟ پاسخ این سوال خیر است. زیرا همیشه مقداری از منابع (CPU, RAM) برای Host و VMKernel رزرو شده اند و مابقی منابع قابل دسترس برای ماشین های مجازی خواهد بود. حال جمله ای که در ابتدای مقاله قسمت اول آمده است را مرور کنیم:

” Admission Control فضای مورد نیاز برای Failover را بر اساس منابع در دسترس (Available) محاسبه می کند”

“منابع در دسترس (Available Resources) پس از محاسبه و کم کردن overhead مجازی سازی از مقدار کل منابع بدست می آید”

بنابراین منابع در دسترس CPU برای کلاستر ما  13.92GHz خواهد بود.

نگاهی به منابع Memory در کلاستر بیاندازیم:

همانطور می بینید کل RAM در کلاستر برای چهار هاست که هر کدام 6GB RAM دارند معادل 24.00GB خواهد بود. ولی میزان منابع قابل رزرو کردن 11.23GB می باشد.

Admission Control هنگام محاسبه کل Slot های موجود در کلاستر به میزان منابع قابل استفاده یعنی 13.92GHz برای CPU و 11.23 GB برای Memory نگاه می کند. بنابراین فرمول محاسبه Slot در شرایط واقعی در مثال ما به شرح زیر می باشد:

Total Available Memory = 11.23 GB ≅ 11499.52 MB
Total Available Memory per Host ≅ 11499.52 ÷ 4 ≅ 2874.88 MB
Memory Slot Size = 1095 MB
Total Memory Slot = Total Available Memory ÷ Memory Slot Size = 2874.88 ÷ 1095 ≅ 2.62

در فرمول بالا چون هر چهار Host فیزیکی دارای سخت افزار و منابع یکسان هستند، می توان کل منابع در دسترس کلاستر را به چهار تقسیم کرد تا میزان تقریبی منابع در دسترس هر Host بدست آید. در شرایط واقعی Admission Control این کار را به صورت اتوماتیک انجام می دهد و نیازی به محاسبات دستی نخواهد بود. این عدد به سمت پایین رند می شود پس عدد 2 تعداد Memory Slot برای هر Host می باشد.

Total Available CPU = 13.92 GHz ≅ 14254.08 MHz
Total Available CPU per Host ≅ 3563.52 MHz
CPU Slot Size = 2000 MHz
Total CPU Slot per Host = Total Available CPU ÷ CPU Slot Size = 3563.52 ÷ 2000 ≅ 1.78176

Admission Control این عدد را نیز به سمت پایین رند می کند پس تعداد CPU Slot برای هر Host عدد 1 خواهد بود.

در انتها از بین مقدار 2 برای Memory Slot و 1 برای CPU Slot، عدد 1 به عنوان کل Slot های هر Host در نظر گرفته می شود زیرا Admission Control بدترین سناریو را در نظر می گیرد.

در نتیجه این کلاستر که دارای چهار Host یکسان می باشد، چهار Slot خواهد داشت:

بیایید نگاهی به منابع ماشین های مجازی بیاندازیم و ببینیم هر ماشین مجازی چند Slot را برای روشن شدن خود مصرف می کند. در این مثال ما دو ماشین مجازی در کلاستر داریم که تنظیمات آنها به صورت زیر می باشد.

اولین ماشین (VM1) دارای 2vCPU و 8192MB RAM می باشد که 2000MHZ از CPU و 1024MB از RAM برای آن رزرو شده است.

 ماشین مجازی دوم (VM2) دارای 2vCPU و 256MB RAM می باشد و از Reservation استفاده نکرد است.

طبق محاسبات بالا هر کدام از ماشین ها برای روشن شدن نیاز به یک Slot دارند. چرا که Slot Size برای CPU معادل 2000MHZ می باشد پس مشخصاً VM1 از یک Slot استفاده می کند، VM2 نیز که رزروی ندارد هم همینطور چون حداقل Slot مورد نیاز برای روشن کردن یک ماشین مجازی، یک Slot می باشد. اگر نگاهی دوباره به وضعیت کلاستر بیاندازیم خواهیم دید که از 4 عدد Slot موجود یک عدد برای Failover ذخیره شده است چون در Admission Control، تنظیم Host failures cluster tolerates را عدد یک قرار دادیم:

در شکل بالا یک Slot برای failover رزرو شده است و با روشن کرد دو ماشین مجازی، 2 اسلات استفاده شده، یک اسلات باقی مانده نیز با روشن کردن یک ماشن جدید استفاده می شود و زمانی که تعداد Available Slots به صفر برسد، Admission Control اجازه روشن کردن ماشین های مجازی جدید را نمی دهد.

 هیچ اسلاتی در کلاستر باقی نمانده و Admission Control اجازه روشن کردن ماشین مجازی جدید را نمی دهد