ثبت سفارش آنلاین به‌زودی فعال می‌شود. تا آن موقع برای سفارش با ما تماس بگیرید.Online ordering is coming soon. Until then, please contact us to order.تماس با ماContact us
JolfaCLOUD

مرکز آموزش / شبکه و میکروتیک

دو لینک اینترنت در میکروتیک: failover خودکار و تقسیم بار

وقتی یک اینترنت قطع شد، روتر خودش به لینک دوم برود: failover با distance، چرا check-gateway کافی نیست، روتینگ بازگشتی (recursive)، و تقسیم بار با PCC؛ با نکته‌های مخصوص اینترنت ایران.

۱۰ دقیقه مطالعه · به‌روزرسانی آبان ۱۴۰۵

This guide is available in Persian for now. Switch to FA to read it.

اینترنت قطع می‌شود؛ گاهی از ISP، گاهی از کابل و گاهی از مودم. برای دفتری که فروش آنلاین، صندوق فروشگاه یا تماس تلفنی اینترنتی دارد، یک لینک دوم (مثلاً یک مودم ۴G/5G یا ISP دوم) و failover خودکار ارزان‌ترین بیمه است.

ساده‌ترین failover: distance

دو مسیر پیش‌فرض با distance متفاوت؛ روتر همیشه مسیر با distance کمتر را استفاده می‌کند:

RouterOS
/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)

RouterOS
/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 به مشکل نخورند:

RouterOS
/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 یعنی اتصال‌ها بر اساس آدرس مبدأ و مقصد به دو گروه تقسیم شوند. اگر سرعت لینک‌ها فرق دارد (مثلاً ۱۰۰ و ۵۰)، سه گروه بسازید و دو گروه را به لینک سریع‌تر بدهید.

تست

  1. کابل لینک اول را بکشید و ببینید در /ip/route/print کدام مسیر فعال (A) است.
  2. برای تست واقعی‌تر، کابل بین مودم و اینترنت را بکشید (نه بین مودم و روتر)؛ روتینگ بازگشتی باید ظرف چند ثانیه لینک را عوض کند.
  3. زمان عوض شدن را در /log/print چک کنید. هشدار پیامکی یا پیام‌رسانی هنگام قطعی را در مقالهٔ اسکریپت می‌سازیم.
برای سرویس‌هایتان هاست پایدار لازم دارید؟دیدن پلن‌های هاست

منابع

  1. MikroTik Manual — Failover (WAN backup) help.mikrotik.com/docs/display/ROS/Failover+%28WAN+Backup%29
  2. MikroTik Manual — Per connection classifier manual.mikrotik.com/docs/high-availability-solutions/load-balancing/per-connection-classifier