View RSS Feed

مجتبی شمس نجاتی

اسکریپت نویسی در میکروتیک (بخش سوم) - آشنایی با ابزار Netwatch

امتیاز
توسط - 2014-02-21 - 11:17 PM (بازدید: 9383)
  
کاربرد netwatch در میکروتیک زمانی است که می خواهیم با قطع شدن ارتباط با یک ip عملیاتی در روتر انجام گیرد.

بعنوان مثال فرض کنید بخواهیم عملیات failover را پیاده سازی کنیم، این کار توسط netwatch و استفاده از script مربوطه قابل انجام است.

پیاده سازی failover با نوشتن دو روت برای 0.0.0.0/0 و تعیین distance های مختلف به راحتی قابل انجام است اما هدف ما استفاده از netwatch و اسکریپت است.

تصویر زیر را در نظر بگیرید:

فرض کنید روتر میکروتیک ما از طریق لینک دو isp مختلف می تواند به اینترنت متصل شود. لینک اول ، لینک اصلی برای ارتباط با اینترنت و لینک دوم ، لینک بکاپ.
پس ارتباط با اینترنت از طریق isp1 صورت می گیرد مگر اینکه ارتباط با isp1 به نحوی قطع شود و ناچار بایستی از isp2 استفاده کنیم.

دو حالت کلی برای قطعی ارتباط با اینترنت وجود دارد:


  1. لینک مشخص شده در تصویر با شماره 1 یا 3 قطع شود.
  2. لینک مشخص شده در تصویر با شماره 2 یا 4 قطع شود.


ما در اینجا حالت اول را بررسی می کنیم.

بررسی سناریو

درحالت پیشفرض دسترسی به اینترنت از طریق isp1 انجام می شود، پس روت استاتیک ما به شکل زیر است:
کد:
ip route add dst-address=0.0.0.0/0 gateway=10.10.10.1
می خواهیم هرگاه ارتباط با 10.10.10.1 قطع شود، اسکریپتی اجرا شود، برای این منظور از قسمت tools > netwatch یک netwatch host جدید ایجاد می کنیم.
در قسمت host آدرس آی پی 10.10.10.1 را وارد می کنیم. interval زمان بین دو بار چک کردن 10.10.10.1 است که ما در اینجا 20 ثانیه قرار می دهیم.

در قسمت up باید اسکریپتی که زمانی که ارتباط با 10.10.10.1 برقرار بود باید انجام شود را بنویسیم.

در قسمت down باید اسکریپتی که زمانی که ارتباط با 10.10.10.1 برقرار نبود باید انجام شود را بنویسیم.

بنابراین در قسمت up اسکریپت زیر را وارد می کنیم:
کد:
ip route set [/ip route find where gateway=0.0.0.0/0] gateway=10.10.10.1
و در قسمت down وارد می کنیم:
کد:
ip route set [/ip route find where gateway=0.0.0.0/0] gateway=20.20.20.1
این عمل هر 20 ثانیه وضعیت (status) آدرس 10.10.10.1 را چک و ثبت می کند، اگر بعد از 20 ثانیه وضعیت تغییر نکرده باشد، تغییری در روت انجام نمی شود و اگر وضعیت از up به down یا برعکس تغییر کرده باشد، اسکریپت مشخص شده را اجرا می کند.

سوال: آیا نمی توانستیم بجای اسکریپت بالا از ip route set 0 gateway=0.0.0.0/0 استفاده کنیم؟
جواب: با داشتن اندیس روت مربوطه بله، اما برای جلوگیری از خطا اسکریپت بالا مطمعن تر است.


حال که با این متد ساده fialover آشنا شدیم؛
این عملیات زمانی کاربرد دارد که در تصویر قبل، لینک 1 یا 3 قطع شوند.
حال اگر لینک شماره 1 یعنی ارتباط روتر شما با isp1 برقرار باشد و لینک شماره 2 یعنی ارتباط isp1 با اینترنت قطع شود چطور؟
در اینصورت این failover ساده کمکی نخواهد کرد، همچنین روش استفاده از 2 روت برای 0.0.0.0/0 و تعیین distanse های مختلف نیز جوابگو نخواهد بود.
برای اینحالت اسکریپت پیشرفته تر failover نیاز است که در قسمت بعد بطور کامل توضیح داده می شود.

موفق باشید
mohsenhvac، gamazuf، nadali و 8 نفر دیگر سپاسگزاری کرده‌اند.

Updated 2014-02-21 at 11:38 PM by mojtaba461

دسته ها
میکروتیک

نظر

  1. شناسه تصویری mjzaret
    چطور میشه از دو شرط در اسکریپت نویسی میکروتیک استفاده کرد؟
    mojytaba سپاسگزاری کرده است.
  2. شناسه تصویری moli_ahmad
    نقل قول نوشته اصلی توسط mjzaret
    چطور میشه از دو شرط در اسکریپت نویسی میکروتیک استفاده کرد؟

    با سلام میتونید از شرط تو در تو استفاده کنید.
    mojtaba461 سپاسگزاری کرده است.
  3. شناسه تصویری moesland
    ممنون خیلی عالیه
    mojtaba461 سپاسگزاری کرده است.
  4. شناسه تصویری mthm
    سلام ممنون از وقتی که میذارید
    یه سوال آیا میشه یه متغیر مثل flag تعریف کنیم که هم در up ازش استفاده بشه و هم در down؟ به عبارتی برای هر دو قابل دسترسی باشه و بتونند مقدارش رو بخونن؟