اینترنت قطع میشود؛ گاهی از ISP، گاهی از کابل و گاهی از مودم. برای دفتری که فروش آنلاین، صندوق فروشگاه یا تماس تلفنی اینترنتی دارد، یک لینک دوم (مثلاً یک مودم ۴G/5G یا ISP دوم) و failover خودکار ارزانترین بیمه است.
سادهترین failover: distance
دو مسیر پیشفرض با distance متفاوت؛ روتر همیشه مسیر با distance کمتر را استفاده میکند:
/ip/route/add dst-address=0.0.0.0/0 gateway=192.168.1.1 distance=1 check-gateway=ping comment="ISP1"
/ip/route/add dst-address=0.0.0.0/0 gateway=192.168.2.1 distance=2 comment="ISP2 backup"با check-gateway=ping، اگر gateway لینک اول جواب ping ندهد، آن مسیر غیرفعال و لینک دوم فعال میشود. یادتان باشد پورت لینک دوم هم باید عضو لیست WAN باشد تا NAT و فایروال رویش کار کنند.
مشکل: مودم جواب میدهد ولی اینترنت قطع است
رایجترین حالت قطعی در عمل این است: مودم روشن است و به ping جواب میدهد، ولی خودش به اینترنت وصل نیست. check-gateway فقط مودم را میبیند و متوجه قطعی نمیشود. راهحل، روتینگ بازگشتی است: به جای مودم، یک آدرس بیرونی را از مسیر هر لینک چک کنیم.
روتینگ بازگشتی (recursive)
/ip/route
add dst-address=1.1.1.1/32 gateway=192.168.1.1 scope=10 comment="probe ISP1"
add dst-address=9.9.9.9/32 gateway=192.168.2.1 scope=10 comment="probe ISP2"
add dst-address=0.0.0.0/0 gateway=1.1.1.1 target-scope=11 check-gateway=ping distance=1 comment="via ISP1"
add dst-address=0.0.0.0/0 gateway=9.9.9.9 target-scope=11 check-gateway=ping distance=2 comment="via ISP2"منطق: مسیر به ۱.۱.۱.۱ فقط از لینک اول است. مسیر پیشفرض اول، ۱.۱.۱.۱ را gateway میگیرد و پینگش میکند. اگر اینترنت لینک اول قطع باشد، ۱.۱.۱.۱ جواب نمیدهد و مسیر اول غیرفعال میشود، حتی اگر مودم روشن باشد.
- برای هر لینک یک آدرس جدا بگذارید؛ اگر هر دو یک آدرس را چک کنند، قطعی خود آن سرویس هر دو را از کار میاندازد.
scopeوtarget-scopeهمین عددها باشند؛ اینها به RouterOS میگویند gateway را از کدام مسیر پیدا کند.
تقسیم بار با PCC
وقتی هر دو لینک سالماند، چرا یکی بیکار بماند؟ PCC اتصالها را بین دو لینک پخش میکند. هر اتصال از اول تا آخر روی یک لینک میماند تا سایتها و بانکها با عوض شدن IP به مشکل نخورند:
/routing/table/add name=to-isp1 fib
/routing/table/add name=to-isp2 fib
/ip/firewall/mangle
add chain=prerouting in-interface=ether1 connection-mark=no-mark action=mark-connection new-connection-mark=isp1-conn
add chain=prerouting in-interface=ether2 connection-mark=no-mark action=mark-connection new-connection-mark=isp2-conn
add chain=prerouting in-interface-list=LAN dst-address-type=!local connection-mark=no-mark \
per-connection-classifier=both-addresses:2/0 action=mark-connection new-connection-mark=isp1-conn
add chain=prerouting in-interface-list=LAN dst-address-type=!local connection-mark=no-mark \
per-connection-classifier=both-addresses:2/1 action=mark-connection new-connection-mark=isp2-conn
add chain=prerouting in-interface-list=LAN connection-mark=isp1-conn action=mark-routing new-routing-mark=to-isp1
add chain=prerouting in-interface-list=LAN connection-mark=isp2-conn action=mark-routing new-routing-mark=to-isp2
add chain=output connection-mark=isp1-conn action=mark-routing new-routing-mark=to-isp1
add chain=output connection-mark=isp2-conn action=mark-routing new-routing-mark=to-isp2
/ip/route
add dst-address=0.0.0.0/0 gateway=192.168.1.1 routing-table=to-isp1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.2.1 routing-table=to-isp1 distance=2
add dst-address=0.0.0.0/0 gateway=192.168.2.1 routing-table=to-isp2 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.1.1 routing-table=to-isp2 distance=2هر جدول روتینگ یک مسیر پشتیبان از لینک دیگر دارد؛ پس اگر یکی قطع شود، اتصالهای تازهٔ آن جدول از لینک سالم میروند. both-addresses:2/0 یعنی اتصالها بر اساس آدرس مبدأ و مقصد به دو گروه تقسیم شوند. اگر سرعت لینکها فرق دارد (مثلاً ۱۰۰ و ۵۰)، سه گروه بسازید و دو گروه را به لینک سریعتر بدهید.
تست
- کابل لینک اول را بکشید و ببینید در
/ip/route/printکدام مسیر فعال (A) است. - برای تست واقعیتر، کابل بین مودم و اینترنت را بکشید (نه بین مودم و روتر)؛ روتینگ بازگشتی باید ظرف چند ثانیه لینک را عوض کند.
- زمان عوض شدن را در
/log/printچک کنید. هشدار پیامکی یا پیامرسانی هنگام قطعی را در مقالهٔ اسکریپت میسازیم.
منابع
- MikroTik Manual — Failover (WAN backup) help.mikrotik.com/docs/display/ROS/Failover+%28WAN+Backup%29
- MikroTik Manual — Per connection classifier manual.mikrotik.com/docs/high-availability-solutions/load-balancing/per-connection-classifier