اسکریپت نویسی در میکروتیک (بخش سوم) - آشنایی با ابزار Netwatch
توسط
- 2014-02-21 - 11:17 PM (بازدید: 9391)
|
کاربرد netwatch در میکروتیک زمانی است که می خواهیم با قطع شدن ارتباط با یک ip عملیاتی در روتر انجام گیرد.
بعنوان مثال فرض کنید بخواهیم عملیات failover را پیاده سازی کنیم، این کار توسط netwatch و استفاده از script مربوطه قابل انجام است.
پیاده سازی failover با نوشتن دو روت برای 0.0.0.0/0 و تعیین distance های مختلف به راحتی قابل انجام است اما هدف ما استفاده از netwatch و اسکریپت است.
تصویر زیر را در نظر بگیرید:
فرض کنید روتر میکروتیک ما از طریق لینک دو isp مختلف می تواند به اینترنت متصل شود. لینک اول ، لینک اصلی برای ارتباط با اینترنت و لینک دوم ، لینک بکاپ.
پس ارتباط با اینترنت از طریق isp1 صورت می گیرد مگر اینکه ارتباط با isp1 به نحوی قطع شود و ناچار بایستی از isp2 استفاده کنیم.
دو حالت کلی برای قطعی ارتباط با اینترنت وجود دارد:
- لینک مشخص شده در تصویر با شماره 1 یا 3 قطع شود.
- لینک مشخص شده در تصویر با شماره 2 یا 4 قطع شود.
ما در اینجا حالت اول را بررسی می کنیم.
بررسی سناریو
درحالت پیشفرض دسترسی به اینترنت از طریق isp1 انجام می شود، پس روت استاتیک ما به شکل زیر است:
می خواهیم هرگاه ارتباط با 10.10.10.1 قطع شود، اسکریپتی اجرا شود، برای این منظور از قسمت tools > netwatch یک netwatch host جدید ایجاد می کنیم.کد:ip route add dst-address=0.0.0.0/0 gateway=10.10.10.1
در قسمت host آدرس آی پی 10.10.10.1 را وارد می کنیم. interval زمان بین دو بار چک کردن 10.10.10.1 است که ما در اینجا 20 ثانیه قرار می دهیم.
در قسمت up باید اسکریپتی که زمانی که ارتباط با 10.10.10.1 برقرار بود باید انجام شود را بنویسیم.
در قسمت down باید اسکریپتی که زمانی که ارتباط با 10.10.10.1 برقرار نبود باید انجام شود را بنویسیم.
بنابراین در قسمت up اسکریپت زیر را وارد می کنیم:
و در قسمت down وارد می کنیم:کد:ip route set [/ip route find where gateway=0.0.0.0/0] gateway=10.10.10.1
این عمل هر 20 ثانیه وضعیت (status) آدرس 10.10.10.1 را چک و ثبت می کند، اگر بعد از 20 ثانیه وضعیت تغییر نکرده باشد، تغییری در روت انجام نمی شود و اگر وضعیت از up به down یا برعکس تغییر کرده باشد، اسکریپت مشخص شده را اجرا می کند.کد:ip route set [/ip route find where gateway=0.0.0.0/0] gateway=20.20.20.1
سوال: آیا نمی توانستیم بجای اسکریپت بالا از 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 نیاز است که در قسمت بعد بطور کامل توضیح داده می شود.
موفق باشید