سادگی زیباست...

بررسی انواع معماری های سیستم عامل و برنامه های سیستمی و روشهای توسعه آنها

سادگی زیباست...

بررسی انواع معماری های سیستم عامل و برنامه های سیستمی و روشهای توسعه آنها

سادگی زیباست...

۴ مطلب در مرداد ۱۳۹۳ ثبت شده است

SDN: Software defined netwworking

NFV: Network functions virtualization

NV: Network Virtualization

ابتدا یک تعریف کلی از هر کدوم

sdn: جدا کردن کنترل شبکه (در نظر بگیریم مغز شبکه) از قسمت forwarding (عضلات) که به منظور فراهم آوردن یک دید مرکزی از شبکه توزیع شده برای بهینه کردن مدیریت سرویسهای شبکه صورت میگیرد.

nfv: بر روی بهینه کردن خود سرویسهای شبکه تاکید میشه. در این حالت سعی میشه سرویسهای شبکه مثل dns، پراکسی و امثالهم از سخت افزار به صورت کامل جدا بشن و کاملا روی یک لایه نرم افزاری اجرا بشن.

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

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

  • انتقال کاربردها به لایه نرمافزار
  • استفاده از سخت افزارهای عمومی برای راه اندازی سیستم
  • توسعه APIها
  • استفاده از روشهاس مجازی سازی بهینه تر
هر کدوم از روشهای nfv, sdn و nv مزایای خاص خودشون رو دارند، اما این روشها وابستگی به همدیگه ندارن. شما نیازی به موجود بودن یک روش دیگه برای راه اندازی روش خودتون ندارین. وقتی sdn تو شبکه راه میندازین، بیشتر تاکید روی این مساله هستش که هر ترافیک داده ای بر اساس سیاست تعریف شده باید به کدوم سمت حرکت کنه و روی سرعت حرکت این ترافیک هم تاثیر داره. در حالی که nfv روی سرویسهای شبکه تاکید داره. nv هم تضمین کننده این هستش که نیازمندیهای شبکه با محیط مجازی سازی همگام باشه.
۰ موافقین ۰ مخالفین ۰ ۲۴ مرداد ۹۳ ، ۱۷:۰۱
حامد شیخلو

اول صورت مساله ای که برای خودم پیش اومد رو توضیح بدم و بعدش راه حل.

بواسطه یک پروژه، به چند سیستم مجازی با ساختار خاصی نیاز شد و برای اینکه آزادی عمل کامل داشته باشیم، تصمیم گرفتیم که یک سرور مجازی سازی از خارج اجاره کنیم. تا قبل از عرضه نسخه esxi، نسخه esx وجود داشت که پولی بود، اما esxi خوشبختانه رایگان هستش و فقط قسمت vsphere باید خریداری بشه (حالا میشه از workstation هم استفاده کرد) (اینکه esxi و vsphere چی هستش یه توضیح خلاصه در ادامه میدم). بنابراین به سادگی (البته منظور از اینجه از سادگی، فقط جستجو بودش؛ خرید مکافات داره) میشه یک سرور اختصاصی با نسخه 5.5 از esxi تهیه کرد.

احتمالا از vmware workstation استفاده کردین. با استفاده از این نرمافزار میشه چند تا سیستم عامل رو روی یک سیستم به صورت همزمان اجرا کرد و با همدیگه کار میکنن. به این مدل مجازی سازی میگن hardware level virtualization. حالا فرض کنین که سیستم عامل میزبان (یعنی همون سیستم عاملی که workstation رو روی اون نصب کردین) حذف بشه و خود vmware workstation جای اون سیستم عامل رو بگیره. یعنی یک سیستم سخت افزاری، که سیستم عامل اون vmware workstation هستش و کل سیستم رو تبدیل میکنه به چند تا سیستم مجازی. به این حالت میکن hypervisor که esxi و esx هم یک نوع hypervisor هستن که شرکت vmware اونا رو عرضه کرده.

بعد از تهیه خود سیستم، نوبت به نصب سیستم عامل رو ماشین های مجازی هستش که بنابر نیاز ساخته شده. من میخواستم یه نسخه ubuntu رو نصب کنم. سرعت سرورهای خارجی معمولا خیلی بالا هستش (برای من بیش از 44MBps بودش، یعنی بیشتر از mbps360) اما سرعت این ور خیلی پایین هستش. طریقه نصب سیستم عامل در esxi به 3 طریق هستش (هم با vsphere میشه و هم با workstation):

  • قرار دادن سی دی نصب در داخت سی دی رام سیستم خودتون یا سرور
  • معرفی یک فایل ایمیج iso موجود در سیستم خودتون به عنوان مبدا نصب
  • بارگذاری فایل ایمیج iso به فضای ذخیره سازی سرور و نصب از طریق اون
حالا انشاا... بعدا طریقه نصب و کار کردن با vsphere رو میگم

معمولا به خاطر عدم اطمینان اتصال از روش سوم استفاده میکنم. پس اینجا صورت مساله انتقال یک فایل 500، 600 مگابایتی (در بعضی مواقع خیلی بیشتر) از طریق اینترنت به فضای ذخیره سازی esxi (به عنوان datastore شناخته میشه) هستش. با سرعت کم داخلی این کار خیلی خیلی زمان بر هستش.

یک راه بهتر این هستش که خود esxi این فایل رو دانلود بکنه. esxi بر مبنای لینوکس هستش، پس احتمالا بشه از خط فرمان استفاده کرد. در esxi یک خط فرمان کامل (البته نه در حد لینوکس همه منظوره) وجود داره. یعنی میشه با دستور wget یک فایل رو دانلود کرد. اما متاسفانه دسترسی از راه دور برای خط فرمان esxi (یعنی همون ssh) غیر فعال هستش.

اما روش فعال سازی:

  • ابتدا وارد فضای vSphere شوید
  • سرور ESXi خودتون رو انتخاب کنید
  • منوی configuration رو انتخاب کنید

  • از منوی سمت چپ، گزینه security profile رو انتخاب کنید
  • گزینه SSH رو انتخاب کنید و properties  رو انتخاب کنید

  • از پنجره ظاهر شده نحوه start شدن سرویس رو انتخاب کنید
۰ موافقین ۰ مخالفین ۰ ۲۳ مرداد ۹۳ ، ۰۰:۵۵
حامد شیخلو
فرض کنید یک سرویس رو به عنوان یک پیتزا در نظر بگیریم. حالا اگر بخوایم یک پیتزا بخوریم، چند تا راه داریم؟
  1. کلا خودمون همه چز رو (خمیر و این جور چیزا) رو درست کنیم
  2. مواد اولیه رو از بیرون بخریم و خودمون درست کنیم
  3. از بیرون سفارش بدیم
  4. بریم بیرون تو رستوران و پیتزا بخوریم
حالا بحث سرویس هم مثل اون هستش.
  1. همه کار رو خودمون بکنیم
  2. زیر ساخت رو از بیرون بگیریم
  3. محیط رو از بیرون بگیریم
  4. کل سرویس رو از بیرون بگیریم
۰ موافقین ۰ مخالفین ۰ ۱۰ مرداد ۹۳ ، ۲۳:۴۹
حامد شیخلو

یک اصل اساسی در امنیت یک شبکه،‌ این است که تنها سرویسهای اصلی در آن فعال باشد. هر سرویس اضافی در شبکه به منزله یک مسیر نفوذ برای هکرها خواهد بود.

موار  زیادی وجود دارد که یک سیستم (یا شبکه ) نیازمند مسیر دوطرفه ارتباط نمیباشد. در این موارد، سیستم مورد نظر تنها نیازمند دریافت یا ارسال داده است.

اتصال یک طرفه برای شبکه

در یک شبکه یک طرفه،‌ اتصال به صورت ارسال داده یا فقط دریافت داده است، اما در هر دو جهت انجام نمیگیرد. یک منبع داده اطلاعات خود را به یک یا چند مقصد میفرستد، اما مقصد داده نمیتواند در جواب داده ای را ارسال کند. ایده اصلی این شبکه خیلی هم جدید نیست، اما متاسفانه در کشور ما تا حد زیادی ناشناخته مانده است. ایده اولیه این شبکه به اواخر دهه پنجاه باز میگردد اما به صورت رسمی در سال ۱۹۹۷ یک گروه با عنوان  UDLR (UniDirectional Link Routing) برای فراهم اوردن استاندارد ها و اصول شبکه بندی برای این شبکه ها تشکیل شد

ساخت یک شبکه یک طرفه با استفاده از فیبر نوری

دو فیبر نوری به منظور ساخت یک شبکه فیبر استفاده میشود. یکی برای ارسال داده و یکی هم برای دریافت سیگنال. این اتصال میتواند به صورت یک اتصال دوطرفه یا دو اتصال یک طرفه خواهد بود. با قطع کردن یک اتصال،‌ شبکه تبدیل به شبکه یکطرفه خواهد بود.

اتصالات در شبکه های یکطرفه

در یک شبکه یکطرفه باید از پروتکل های غیر اتصالی (connectionless) استفاده شود. در یک پروتکل غیر اتصالی، اتصال منطقی ثابتی بین دو سمت انتقال داده وجود نخواهد داشت. 

خود پروتکل ip یک پروتکل غیر اتصالی است. پروتکل tcp بر روی ip یک پروتکل اتصالی است. پروتکل udp بر روی ipاما یک پروتکل غیر اتصالی است، بنابراین این پروتکل بسیار برای شبکه یکطرفه مناسب خواهد بود. به پروتکل  udp اصطلاحا send-and-prey گفته میشود. سیستم ارسال کننده هیچ ایده ای از اینکه برای بسته ارسالی چه اتفاقی افتاده ندارد.

دیود داده

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

یک مثلا

این مطالب بالا ترجمه بود، و من هم ترجمم بده. کجای شبکه از این روش میتوان استفاده کرد؟ یکم عجیب هستش که تو شبکه از یک جایی داده نیاد، پس چطوری مدیریت بشه. یک مثال خیلی ساده برای کاربرد این تکنولوژی.

شما یه سیستم داری که به عنوان دروازه شبکه هستش و یه سیستم به عنوان تشخیص نفوذ قرار دادی. همه داده هایی که از دروازه باید رد بشن، یه کپی هم به سیستم تشخیص نفوذ میرن. یه سوال اینجا پیش میاد: آیا نیازی هستش که از این مسیر بین دروازه و تشخیص نفوذ، مسیر برگشتی هم باشه؟

اگر این مسیر برگشت وجود داشته باشه، نفوذگر با استفاده از این مسیر اولا از وجود سیستم تشخیص نفوذ اطلاع پیدا میکنه و ثانیا میتونه از همین سیستم برای گمراه کردن ادمین استفاده کنه.

پس تو اینجا این مسیر نیاز نیست. کلا تو تمام سیستم ها که باید تحلیل داده داشته باشن، باید مسیر تکطرفه باشه. برای قسمت کنترلی باید حتما یک مسیر جداگانه در نظر گرفته بشه (از این مسیر تحلیل داده انجام نمیشه).

۰ موافقین ۰ مخالفین ۰ ۰۴ مرداد ۹۳ ، ۲۳:۳۵
حامد شیخلو