آموزش میکروتیک

تغییر مسیر اینترنت در زمان قطع شدن اینترنت در ISP

Failover در زمانی که اینترنت ISP قطع میشود

نویسنده:

این صفحه را با دوستان خود در شبکه‌های اجتماعی به اشتراک بگذارید.

در این سناریو فرض برآن است که دو خط اینترنت داریم میخواهیم زمانی که اینترنت اول قطع شد روتر به صورت اتوماتیک اینترنت دوم را فعال کند و زمانی که اینترنت اول وصل شد مجددا به اینترنت اول برگردد؛ مهترین مساله این است که برخی مواقع ارتباط ما با روتر ISP برقرار هست ولی خود ISP اینترنت ندارد، پس دنبال راهکاری برای رفع مشکل قطع شدن اینترنت مرکز ISP در زمانی که ارتباط ما با مرکز برقراره هستیم. مبنای دستورات Failover بر پایه distance در routeها میباشد حال ما میخواهیم از Netwatch برای رفع مشکل بیان شده بهره ببریم.

internet failover

اگر صرفا بر اساس check-gateway بخواهیم Failover را پیاده سازی کنیم تنها وقتی تغییر Gateway انجام می شود که بالفرض برق مودم اینترنت اول شما قطع شده باشد، یا اگر کانکشن PPPOE قطع شده باشد یا سیم تلفن!!!
به عبارتی زمانی که ارتباط با gateway قطع شود route غیرفعال میشود؛ حال ممکن است مواردی پیش بیاید که ارتباط به gateway برقرار باشد ولی ارتباط با اینترنت از بالا دست gateway ما قطع باشد.
در اینجا 216.58.211.14 به عنوان هاستی انتخاب شده است که ارتباط داشتن با اینترنت را روی آن آزمایش کنیم. درصورت نیاز آن را عوض کنید. سرور ها می توانند هرچیزی باشند، مثل یاهو، گوگل و... .
Gateway اول و دوم به ترتیب 10.111.0.1/24 و 10.112.0.1/24 انتخاب شده اند. آن ها را با توجه به شبکه خودتان تغییر دهید.

/interface ethernet
set ether1 name=ether1-wan1
set ether2 name=ether2-wan2
set ether3 name=ether3-lan
/ip address
add address=10.111.0.2/24 interface=ether1-wan1
add address=10.112.0.2/24 interface=ether2-wan2
add address=192.168.88.1/24 interface=ether3-lan
/ip firewall nat
add out-interface=ether1-wan1 action=masquerade
add out-interface=ether2-wan2 action=masquerade
/ip firewall mangle
add action=mark-routing chain=output comment="mark routing for failover icmp packets from router"\
dst-address=216.58.211.14 new-routing-mark="failover" passthrough=no protocol=icmp
/ip route
add comment=failover gateway=10.111.0.1 routing-mark="failover"
add comment="default route to wan1" distance=1 gateway=10.111.0.1
add comment="default route to wan2" distance=2 gateway=10.112.0.1
/tool netwatch
add comment=failover down-script="/ip route disable [find comment=\"default route to wan1\"]" host=216.58.211.14\
interval=2s timeout=1s200ms up-script="/ip route enable [find comment=\"default route to wan1\"]"

شرح تنظیمات

حال به تشریح تنظیمات بیان شده میپردازیم:

/interface ethernet
set ether1 name=ether1-wan1
set ether2 name=ether2-wan2
set ether3 name=ether3-lan

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

/ip address
add address=10.111.0.2/24 interface=ether1-wan1
add address=10.112.0.2/24 interface=ether2-wan2
add address=192.168.88.1/24 interface=ether3-lan

تنظیمات آدرسهای برروی اینترفیس های مختلف که شامل آدرس های 10.111.0.2/24 برای wan1 و آدرس 10.112.0.2/24 برای wan2 و یک آدرس 192.168.88.1/24 برای LANکه در لیست آدرسها اضافه میگردد.

/ip firewall nat
add out-interface=ether1-wan1 action=masquerade
add out-interface=ether2-wan2 action=masquerade

دو رول در NAT برای اینکه تمام کانکشن هایی که به هرکدام از ISP ها میرود با سورس آدرس مربوط به همان ISP ارسال شود.

/ip firewall mangle
add action=mark-routing chain=output comment="mark routing for failover icmp packets from router"\
dst-address=216.58.211.14 new-routing-mark="failover" passthrough=no protocol=icmp

در قصمت mangle پکت های ICMP که از روتر تولید میشود و به سمت سرور مورد نظر فرستاده می شوند routing mark می شوند. مراد از این کار این است که بعدا تمامی پکت های icmp به سرور مورد نظر را از گیت وی خاصی ارسال نماییم.

/ip route
add comment=failover gateway=10.111.0.1 routing-mark="failover"
add comment="default route to wan1" distance=1 gateway=10.111.0.1
add comment="default route to wan2" distance=2 gateway=10.112.0.1

دستور اول تمامی پکت های ICMP به سرور مورد نظر را از اینترنت اول ارسال می کند. دستور دوم و سوم نیز به ترتیب Default route به اینترنت های اول و دوم با distance های یک و دو می باشند.

/tool netwatch
add comment=failover down-script="/ip route disable [find comment=\"default route to wan1\"]" host=216.58.211.14\
interval=2s timeout=1s200ms up-script="/ip route enable [find comment=\"default route to wan1\"]"

و در انتها نیز برای تکمیل Failover از ابزار netwatch استفاده می کنیم، پینگ هاست 216.58.211.14 هر دو ثانیه یک بار چک می شود. از آنجا که تمامی پکت های ICMP به سمت این هاست از طریق اینترنت اول ارسال می شوند در صورت قطعی اینترنت اول route اینترنت اول غیرفعال می شود. اگر اینترنت اول مجددا وصل شود route مربوطه فعال خواهد گردید.