Route نویسی در MikroTik؛ از مسیر ساده تا دو خط اینترنت
سرفصل: میکروتیک

روتر برای هر بسته باید تصمیم بگیرد آن را از کدام مسیر بفرستد. این تصمیم بر اساس جدول مسیریابی گرفته می‌شود. روتر شبکه‌هایی را که مستقیم به آن وصل‌اند خودش می‌شناسد؛ برای بقیه باید Route بنویسید. مثال‌های این مقاله با RouterOS 7 نوشته شده‌اند.

دیدن جدول مسیریابی

/ip route print

در خروجی، مسیرهایی با پرچم C (Connected) شبکه‌های مستقیماً متصل‌اند، S مسیرهای ثابتی است که شما نوشته‌اید و D مسیرهای پویاست؛ مثل مسیری که DHCP Client یا PPPoE اضافه می‌کند. پرچم A یعنی آن مسیر فعال است.

۱. مسیر ثابت به شبکهٔ دیگر

فرض کنید شبکهٔ 192.168.20.0/24 پشت روتر دیگری با آدرس 10.0.0.2 است:

/ip route add dst-address=192.168.20.0/24 gateway=10.0.0.2 comment="To Branch LAN"

یادتان باشد مسیر برگشت هم لازم است. روتر مقابل هم باید بداند شبکهٔ شما از کجا در دسترس است.

۲. مسیر پیش‌فرض

مسیر پیش‌فرض (0.0.0.0/0) یعنی «هر مقصدی که مسیر دیگری برایش نیست، از این راه برود»؛ معمولاً یعنی اینترنت:

/ip route add dst-address=0.0.0.0/0 gateway=203.0.113.9

اگر اینترنت با DHCP یا PPPoE وصل است و گزینهٔ add-default-route=yes فعال است، این مسیر خودکار اضافه می‌شود.

۳. Failover بین دو خط اینترنت

دو خط اینترنت دارید و می‌خواهید اگر خط اول قطع شد، ترافیک خودکار از خط دوم برود. distance اولویت مسیر است؛ عدد کمتر یعنی اولویت بیشتر:

/ip route add dst-address=0.0.0.0/0 gateway=203.0.113.9 distance=1 check-gateway=ping comment="ISP1 main"
/ip route add dst-address=0.0.0.0/0 gateway=198.51.100.1 distance=2 comment="ISP2 backup"

check-gateway=ping هر چند ثانیه به Gateway پینگ می‌زند و اگر جواب نیاید، مسیر را غیرفعال می‌کند.

محدودیت این روش: فقط Gateway مستقیم بررسی می‌شود. اگر مودم روشن است اما اینترنت پشت آن قطع است، Gateway جواب پینگ می‌دهد و Failover انجام نمی‌شود.

۴. Recursive Routing: Failover واقعی

راه‌حل این است که به جای Gateway، یک آدرس در اینترنت را بررسی کنیم. آدرس 8.8.8.8 را فقط از مسیر خط اول در دسترس قرار می‌دهیم و مسیر پیش‌فرض را از طریق آن تعریف می‌کنیم:

/ip route add dst-address=8.8.8.8/32 gateway=203.0.113.9 scope=10 comment="Monitor via ISP1"
/ip route add dst-address=0.0.0.0/0 gateway=8.8.8.8 target-scope=11 check-gateway=ping distance=1 comment="Default via ISP1 (recursive)"
/ip route add dst-address=0.0.0.0/0 gateway=198.51.100.1 distance=2 comment="Default via ISP2"

حالا اگر اینترنت خط اول به هر دلیلی قطع شود، 8.8.8.8 جواب نمی‌دهد، مسیر اول غیرفعال می‌شود و ترافیک به خط دوم می‌رود. برای پایداری بیشتر، برای خط دوم هم یک آدرس مانیتورینگ جدا (مثلاً 1.1.1.1) به همین شکل تعریف کنید.

NAT هم باید برای هر دو خط وجود داشته باشد؛ ساده‌ترین راه این است که هر دو اینترفیس اینترنت عضو لیست WAN باشند و masquerade روی این لیست تعریف شده باشد.

۵. Policy Routing: ترافیک خاص از خط خاص

گاهی می‌خواهید بخشی از ترافیک از یک خط مشخص برود؛ مثلاً سرور حسابداری همیشه از خط دوم که IP ثابت دارد به اینترنت برود. در RouterOS 7 این کار با جدول مسیریابی جداگانه انجام می‌شود:

/routing table add name=via-isp2 fib
/ip route add dst-address=0.0.0.0/0 gateway=198.51.100.1 routing-table=via-isp2
/routing rule add src-address=192.168.10.50/32 action=lookup-only-in-table table=via-isp2
  • جدول via-isp2 فقط یک مسیر پیش‌فرض از خط دوم دارد.
  • قانون routing می‌گوید ترافیک سرور 192.168.10.50 فقط از این جدول مسیر بگیرد.
  • اگر به جای lookup-only-in-table از lookup استفاده کنید، وقتی خط دوم قطع شود ترافیک به جدول اصلی برمی‌گردد.

برای انتخاب ترافیک بر اساس پورت یا مقصد، از Mangle استفاده کنید:

/ip firewall mangle add chain=prerouting src-address=192.168.10.0/24 dst-port=443 protocol=tcp action=mark-routing new-routing-mark=via-isp2 passthrough=no

نکته: FastTrack ترافیک را از مسیر Mangle عبور نمی‌دهد. اگر Policy Routing با Mangle کار نمی‌کند، قانون FastTrack در فایروال را برای همین ترافیک محدود کنید.

بررسی مسیر

/ip route print where dst-address=0.0.0.0/0
/ip route print where active
/tool traceroute 8.8.8.8

خطاهای رایج

  • مسیر نوشته شده اما کار نمی‌کند: مسیر برگشت در روتر مقابل وجود ندارد.
  • مسیر غیرفعال است (بدون پرچم A): Gateway در دسترس نیست یا در شبکه‌های متصل روتر نیست.
  • بعد از Failover، اینترنت کاربران کار نمی‌کند: NAT برای خط دوم تعریف نشده است.
  • ترافیک برمی‌گردد اما قطع می‌شود: در Policy Routing، پاسخ ترافیک ورودی از خط دیگری خارج می‌شود. برای ترافیک ورودی هر خط، اتصال را علامت بزنید (connection mark) و پاسخ را از همان خط برگردانید.

جمع‌بندی

مسیر ثابت برای شبکه‌های دیگر، distance برای اولویت، Recursive Routing برای Failover واقعی و Policy Routing برای فرستادن ترافیک خاص از خط خاص. با /tool traceroute همیشه بررسی کنید که ترافیک همان راهی می‌رود که انتظار دارید. مقالهٔ بعد: برقراری امنیت در شبکه با میکروتیک.

  • MikroTik
  • Routing
  • Failover
  • Policy Routing
  • RouterOS 7