Multivan و مسیریابی در Mikrotik RouterOS

معرفی

گرفتن مقاله، علاوه بر بیهودگی، به دلیل فراوانی مضطرب سوالات در مورد این موضوع در گروه های پروفایل جامعه تلگرام روسی زبان بود. هدف این مقاله مدیران تازه کار Mikrotik RouterOS (از این پس ROS) است. این تنها با مولتی ون، با تاکید بر مسیریابی سروکار دارد. به عنوان یک امتیاز، تنظیمات حداقل کافی برای اطمینان از عملکرد ایمن و راحت وجود دارد. کسانی که به دنبال افشای موضوعات صف، تعادل بار، vlans، بریج، تجزیه و تحلیل عمیق چند مرحله ای از وضعیت کانال و موارد مشابه هستند - ممکن است وقت و تلاش خود را برای مطالعه تلف نکنند.

داده های خام

به عنوان یک موضوع آزمایشی، یک روتر میکروتیک پنج پورت با ROS نسخه 6.45.3 انتخاب شد. ترافیک را بین دو شبکه محلی (LAN1 و LAN2) و سه ارائه دهنده (ISP1، ISP2، ISP3) هدایت می کند. کانال ISP1 دارای یک آدرس استاتیک "خاکستری" است، ISP2 - "سفید" که از طریق DHCP، ISP3 - "سفید" با مجوز PPPoE به دست آمده است. نمودار اتصال در شکل نشان داده شده است:

Multivan و مسیریابی در Mikrotik RouterOS

وظیفه این است که روتر MTK را بر اساس این طرح پیکربندی کنید تا:

  1. سوئیچ خودکار را به یک ارائه دهنده پشتیبان ارائه دهید. ارائه دهنده اصلی ISP2 است، ذخیره اول ISP1، ذخیره دوم ISP3 است.
  2. دسترسی شبکه LAN1 به اینترنت را فقط از طریق ISP1 سازماندهی کنید.
  3. امکان هدایت ترافیک از شبکه های محلی به اینترنت را از طریق ارائه دهنده انتخاب شده بر اساس لیست آدرس فراهم کنید.
  4. ارائه امکان انتشار خدمات از شبکه محلی به اینترنت (DSTNAT)
  5. یک فیلتر فایروال تنظیم کنید تا حداقل امنیت کافی را از اینترنت فراهم کند.
  6. روتر بسته به آدرس منبع انتخاب شده می تواند ترافیک خود را از طریق هر یک از سه ارائه دهنده صادر کند.
  7. اطمینان حاصل کنید که بسته های پاسخ به کانالی که از آن آمده (از جمله LAN) هدایت می شوند.

سخنان ما روتر را "از ابتدا" پیکربندی می کنیم تا از عدم وجود شگفتی در تنظیمات اولیه "خارج از جعبه" که از نسخه به نسخه تغییر می کنند اطمینان حاصل کنیم. Winbox به عنوان یک ابزار پیکربندی انتخاب شد که در آن تغییرات به صورت بصری نمایش داده می شود. تنظیمات خود با دستورات در ترمینال Winbox تنظیم می شوند. اتصال فیزیکی برای پیکربندی با اتصال مستقیم به رابط Ether5 ایجاد می شود.

کمی استدلال در مورد چیستی مولتی ون، آیا این یک مشکل است یا افراد باهوش حیله گر در حال ایجاد شبکه های توطئه هستند.

یک مدیر کنجکاو و توجه که به تنهایی چنین یا یک طرح مشابه را تنظیم می کند، ناگهان متوجه می شود که در حال حاضر به طور معمول کار می کند. بله، بله، بدون جداول مسیریابی سفارشی شما و سایر قوانین مسیر، که اکثر مقالات در این موضوع مملو از آن هستند. بررسی کنیم؟

آیا می توانیم آدرس دهی را روی رابط ها و دروازه های پیش فرض پیکربندی کنیم؟ آره:

در ISP1، آدرس و دروازه با آن ثبت شد فاصله = 2 и check-gateway=پینگ.
در ISP2، تنظیمات پیش فرض مشتری dhcp - بر این اساس، فاصله برابر با یک خواهد بود.
در ISP3 در تنظیمات مشتری pppoe وقتی add-default-route=بله قرار دادن default-route-distance=3.

فراموش نکنید که NAT را در خروجی ثبت کنید:

/ip فایروال nat add action=masquerade chain=srcnat out-interface-list=WAN

در نتیجه، کاربران سایت های محلی از دانلود گربه ها از طریق ارائه دهنده اصلی ISP2 لذت می برند و با استفاده از مکانیزم رزرو کانال وجود دارد. دروازه را بررسی کنید به یادداشت 1 مراجعه کنید

نقطه 1 وظیفه اجرا می شود. مولتی ون با علائمش کجاست؟ نه…

به علاوه. شما باید مشتریان خاصی را از طریق ISP1 از شبکه LAN آزاد کنید:

/ip firewall mangle add action=route chain=prerouting dst-address-list=!BOGONS
passthrough=بله route-dst=100.66.66.1 src-address-list=از طریق_ISP1
/ip firewall mangle add action=route chain=prerouting dst-address-list=!BOGONS
passthrough=no route-dst=100.66.66.1 src-address=192.168.88.0/24

موارد 2 و 3 وظیفه اجرا شده است. برچسب ها، تمبرها، قوانین مسیر، کجایی؟!

آیا نیاز به دسترسی به سرور OpenVPN مورد علاقه خود با آدرس 172.17.17.17 برای مشتریان از اینترنت دارید؟ لطفا:

/ip cloud set ddns-enabled=yes

ما به عنوان یک همتا، نتیجه خروجی را به مشتری می‌دهیم::put [IP cloud get dns-name]"

ما ارسال پورت را از اینترنت ثبت می کنیم:

فایروال IP / nat add action=dst-nat chain=dstnat dst-port=1194
in-interface-list=پروتکل WAN=udp to-addresses=172.17.17.17

مورد 4 آماده است.

ما یک فایروال و سایر امنیت را برای نقطه 5 راه اندازی کردیم، در عین حال خوشحالیم که همه چیز در حال حاضر برای کاربران کار می کند و به ظرفی با نوشیدنی مورد علاقه می رسیم ...
آ! تونل ها فراموش شده اند.

l2tp-client، پیکربندی شده توسط مقاله گوگل، به VDS هلندی مورد علاقه شما رسیده است؟ آره.
سرور l2tp با IPsec افزایش یافته است و مشتریان با نام DNS از IP Cloud (به بالا مراجعه کنید.) چسبیده اند؟ آره.
با تکیه دادن به صندلی خود و نوشیدن یک نوشیدنی، با تنبلی نکات 6 و 7 کار را در نظر می گیریم. ما فکر می کنیم - آیا به آن نیاز داریم؟ با این حال، آن را مانند آن کار می کند (ج) ... بنابراین، اگر هنوز هم مورد نیاز نیست، پس همین است. Multivan پیاده سازی شده است.

مولتی ون چیست؟ این اتصال چندین کانال اینترنتی به یک روتر است.

شما مجبور نیستید مقاله را بیشتر بخوانید، زیرا چه چیزی می تواند وجود داشته باشد به جز نشان دادن قابلیت کاربردی مشکوک؟

برای کسانی که باقی مانده اند و به نکات 6 و 7 کار علاقه مند هستند و همچنین خارش کمال گرایی را احساس می کنند، عمیق تر شیرجه می زنیم.

مهمترین وظیفه اجرای مولتی ون، مسیریابی صحیح ترافیک است. یعنی: صرف نظر از اینکه کدام (یا کدام) را ببینید. نکته 3 کانال(های) ISP به مسیر پیش فرض روتر ما نگاه می کند، باید پاسخی را به کانال دقیقی که بسته از آن آمده است، بازگرداند. تکلیف روشن است. مشکل کجاست؟ در واقع، در یک شبکه محلی ساده، کار یکسان است، اما هیچ کس با تنظیمات اضافی اذیت نمی شود و مشکلی را احساس نمی کند. تفاوت این است که هر گره قابل مسیریابی در اینترنت از طریق هر یک از کانال های ما قابل دسترسی است و نه از طریق یک کانال کاملاً خاص، مانند یک LAN ساده. و "مشکل" این است که اگر درخواستی برای آدرس IP ISP3 برای ما آمد ، در مورد ما پاسخ از طریق کانال ISP2 می رود ، زیرا دروازه پیش فرض به آنجا هدایت می شود. برگ می شود و توسط ارائه دهنده به عنوان نادرست دور انداخته می شود. مشکل شناسایی شده است. چگونه آن را حل کنیم؟

راه حل به سه مرحله تقسیم می شود:

  1. از پیش تنظیم. در این مرحله تنظیمات اولیه روتر تنظیم می شود: شبکه محلی، فایروال، لیست های آدرس، NAT و غیره.
  2. مولتی ون. در این مرحله اتصالات لازم علامت گذاری و در جداول مسیریابی مرتب می شوند.
  3. اتصال به یک ISP در این مرحله رابط هایی که اتصال به اینترنت را فراهم می کنند پیکربندی، مسیریابی و مکانیسم رزرو کانال اینترنتی فعال می شود.

1. از پیش تنظیم

1.1. پیکربندی روتر را با دستور پاک می کنیم:

/system reset-configuration skip-backup=yes no-defaults=yes

موافق با "خطرناک! به هر حال بازنشانی شود؟ [y/N]:” و پس از راه اندازی مجدد، از طریق MAC به Winbox متصل می شویم. در این مرحله پیکربندی و پایگاه کاربر پاک می شوند.

1.2. یک کاربر جدید ایجاد کنید:

/user add group=full name=knight password=ultrasecret comment=”Not horse”

در زیر آن وارد شوید و پیش فرض را حذف کنید:

/user remove admin

سخنان این حذف و غیرفعال نکردن کاربر پیش‌فرض است که نویسنده آن را ایمن‌تر می‌داند و برای استفاده توصیه می‌کند.

1.3. ما لیست های رابط اصلی را برای راحتی کار در فایروال، تنظیمات کشف و سایر سرورهای MAC ایجاد می کنیم:

/interface list add name=WAN comment="For Internet"
/interface list add name=LAN comment="For Local Area"

امضای رابط با نظرات

/interface ethernet set ether1 comment="to ISP1"
/interface ethernet set ether2 comment="to ISP2"
/interface ethernet set ether3 comment="to ISP3"
/interface ethernet set ether4 comment="to LAN1"
/interface ethernet set ether5 comment="to LAN2"

و لیست های رابط را پر کنید:

/interface list member add interface=ether1 list=WAN comment=ISP1
/interface list member add interface=ether2 list=WAN comment=ISP2 
/interface list member add interface=ether3 list=WAN comment="to ISP3"
/interface list member add interface=ether4 list=LAN  comment="LAN1"
/interface list member add interface=ether5 list=LAN  comment="LAN2"

سخنان نوشتن نظرات قابل فهم ارزش زمان صرف شده برای این کار را دارد، به علاوه عیب یابی و درک پیکربندی را تا حد زیادی تسهیل می کند.

نویسنده به دلایل امنیتی ضروری می داند که رابط ether3 را به لیست رابط "WAN" اضافه کند، علیرغم اینکه پروتکل IP از آن عبور نمی کند.

فراموش نکنید که پس از ارتقاء رابط PPP در ether3، باید به لیست رابط "WAN" نیز اضافه شود.

1.4. ما روتر را از تشخیص و کنترل همسایگی از شبکه های ارائه دهنده از طریق MAC پنهان می کنیم:

/ip neighbor discovery-settings set discover-interface-list=!WAN
/tool mac-server set allowed-interface-list=LAN
/tool mac-server mac-winbox set allowed-interface-list=LAN

1.5. ما حداقل مجموعه کافی از قوانین فیلتر فایروال را برای محافظت از روتر ایجاد می کنیم:

/ip firewall filter add action=accept chain=input comment="Related Established Untracked Allow" 
connection-state=established,related,untracked

(این قانون برای اتصالات ایجاد شده و مرتبط که هم از شبکه های متصل و هم از خود روتر شروع می شوند مجوز می دهد)

/ip firewall filter add action=accept chain=input comment="ICMP from ALL" protocol=icmp

(پینگ و نه تنها پینگ. همه icmp مجاز هستند. برای یافتن مشکلات MTU بسیار مفید است)

/ip firewall filter add action=drop chain=input comment="All other WAN Drop" in-interface-list=WAN

(قانونی که زنجیره ورودی را می بندد، هر چیز دیگری را که از اینترنت می آید ممنوع می کند)

/ip firewall filter add action=accept chain=forward 
comment="Established, Related, Untracked allow" 
connection-state=established,related,untracked

(قانون اجازه می دهد تا اتصالات ایجاد شده و مرتبط که از طریق روتر عبور می کنند)

/ip firewall filter add action=drop chain=forward comment="Invalid drop" connection-state=invalid

(قاعده اتصالات با Connect-state=invalid عبور از روتر را بازنشانی می کند. Mikrotik به شدت توصیه می کند، اما در برخی شرایط نادر می تواند ترافیک مفید را مسدود کند)

/ip firewall filter add action=drop chain=forward comment="Drop all from WAN not DSTNATed"  
connection-nat-state=!dstnat connection-state=new in-interface-list=WAN

(این قانون بسته هایی را که از اینترنت می آیند و از رویه dstnat عبور نکرده اند، از عبور از روتر منع می کند. این امر از شبکه های محلی در برابر مزاحمان محافظت می کند که با قرار گرفتن در یک دامنه پخش با شبکه های خارجی ما، IP های خارجی ما را به عنوان یک ثبت نام می کنند. دروازه و بنابراین، سعی کنید شبکه های محلی ما را "کاوش" کنید.)

سخنان فرض کنید شبکه های LAN1 و LAN2 قابل اعتماد هستند و ترافیک بین آنها و از آنها فیلتر نمی شود.

1.6. یک لیست با لیستی از شبکه های غیر قابل مسیریابی ایجاد کنید:

/ip firewall address-list
add address=0.0.0.0/8 comment=""This" Network" list=BOGONS
add address=10.0.0.0/8 comment="Private-Use Networks" list=BOGONS
add address=100.64.0.0/10 comment="Shared Address Space. RFC 6598" list=BOGONS
add address=127.0.0.0/8 comment=Loopback list=BOGONS
add address=169.254.0.0/16 comment="Link Local" list=BOGONS
add address=172.16.0.0/12 comment="Private-Use Networks" list=BOGONS
add address=192.0.0.0/24 comment="IETF Protocol Assignments" list=BOGONS
add address=192.0.2.0/24 comment=TEST-NET-1 list=BOGONS
add address=192.168.0.0/16 comment="Private-Use Networks" list=BOGONS
add address=198.18.0.0/15 comment="Network Interconnect Device Benchmark Testing"
 list=BOGONS
add address=198.51.100.0/24 comment=TEST-NET-2 list=BOGONS
add address=203.0.113.0/24 comment=TEST-NET-3 list=BOGONS
add address=224.0.0.0/4 comment=Multicast list=BOGONS
add address=192.88.99.0/24 comment="6to4 Relay Anycast" list=BOGONS
add address=240.0.0.0/4 comment="Reserved for Future Use" list=BOGONS
add address=255.255.255.255 comment="Limited Broadcast" list=BOGONS

(این لیستی از آدرس ها و شبکه هایی است که قابل مسیریابی به اینترنت نیستند و بر این اساس دنبال خواهند شد.)

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

1.7. DNS را برای خود روتر تنظیم کنید:

/ip dns set servers=1.1.1.1,8.8.8.8

سخنان در نسخه فعلی ROS، سرورهای پویا بر سرورهای ایستا اولویت دارند. درخواست حل نام به ترتیب در لیست به سرور اول ارسال می شود. انتقال به سرور بعدی زمانی انجام می شود که سرور فعلی در دسترس نباشد. تایم اوت بزرگ است - بیش از 5 ثانیه. بازگشت به عقب، زمانی که "سرور سقوط کرده" از سر گرفته می شود، به طور خودکار اتفاق نمی افتد. با توجه به این الگوریتم و وجود مولتی ون، نویسنده توصیه می کند از سرورهای ارائه شده توسط ارائه دهندگان استفاده نکنید.

1.8. یک شبکه محلی راه اندازی کنید.
1.8.1. ما آدرس های IP ثابت را در رابط های LAN پیکربندی می کنیم:

/ip address add interface=ether4 address=192.168.88.254/24 comment="LAN1 IP"
/ip address add interface=ether5 address=172.16.1.0/23 comment="LAN2 IP"

1.8.2. ما قوانین مسیرها را به شبکه های محلی خود از طریق جدول مسیریابی اصلی تنظیم می کنیم:

/ip route rule add dst-address=192.168.88.0/24 table=main comment=”to LAN1”
/ip route rule add dst-address=172.16.0.0/23 table=main comment="to LAN2"

سخنان این یکی از راه‌های سریع و آسان برای دسترسی به آدرس‌های LAN با منابع آدرس‌های IP خارجی رابط‌های روتر است که از مسیر پیش‌فرض عبور نمی‌کنند.

1.8.3. Hairpin NAT را برای LAN1 و LAN2 فعال کنید:

/ip firewall nat add action=src-nat chain=srcnat comment="Hairpin to LAN1" 
out-interface=ether4 src-address=192.168.88.0/24 to-addresses=192.168.88.254
/ip firewall nat add action=src-nat chain=srcnat comment="Hairpin to LAN2" 
out-interface=ether5 src-address=172.16.0.0/23 to-addresses=172.16.1.0

سخنان این به شما این امکان را می دهد که در حین حضور در شبکه از طریق یک IP خارجی به منابع خود (dstnat) دسترسی داشته باشید.

2. در واقع اجرای مولتی ون بسیار صحیح

برای حل مشکل «پاسخ دادن به جایی که پرسیده اند» از دو ابزار ROS استفاده می کنیم: علامت اتصال и علامت مسیریابی. علامت اتصال به شما اجازه می دهد تا اتصال مورد نظر را علامت بزنید و سپس با این علامت به عنوان شرط اعمال کار کنید علامت مسیریابی. و در حال حاضر با علامت مسیریابی امکان کار در مسیر IP и قوانین مسیر. ما ابزارها را کشف کردیم، اکنون باید تصمیم بگیرید که کدام اتصالات را علامت گذاری کنید - یک بار، دقیقاً کجا علامت گذاری کنید - دو.

با مورد اول، همه چیز ساده است - ما باید تمام اتصالاتی را که از اینترنت به روتر می آیند از طریق کانال مناسب علامت گذاری کنیم. در مورد ما، اینها سه برچسب (براساس تعداد کانال) خواهند بود: "conn_isp1"، "conn_isp2" و "conn_isp3".

نکته ظریف در مورد دوم این است که اتصالات ورودی دو نوع خواهد بود: ترانزیت و آنهایی که برای خود روتر در نظر گرفته شده است. مکانیسم علامت اتصال در جدول کار می کند لگد زدن. حرکت بسته را روی یک نمودار ساده، که با مهربانی توسط متخصصان منبع mikrotik-trainings.com (نه تبلیغاتی) گردآوری شده است، در نظر بگیرید:

Multivan و مسیریابی در Mikrotik RouterOS

با دنبال کردن فلش ها، می بینیم که بسته به "رابط ورودی"، از زنجیره می گذرد"پیش مسیریابیو تنها پس از آن در بلوک به ترانزیت و محلی تقسیم می شود.تصمیم مسیریابی". بنابراین برای کشتن دو پرنده با یک سنگ از آن استفاده می کنیم علامت اتصال در جدول Mangle Pre-Routing زنجیر پیش مسیریابی.

توجه داشته باشید. در ROS، برچسب‌های "علامت مسیریابی" به عنوان "جدول" در بخش Ip/Routes/Rules و به عنوان "علامت مسیریابی" در بخش‌های دیگر فهرست می‌شوند. این ممکن است باعث سردرگمی در درک شود، اما، در واقع، این همان چیزی است، و آنالوگ rt_tables در iproute2 در لینوکس است.

2.1. ما اتصالات ورودی از هر یک از ارائه دهندگان را علامت گذاری می کنیم:

/ip firewall mangle add action=mark-connection chain=prerouting 
comment="Connmark in from ISP1" connection-mark=no-mark in-interface=ether1  new-connection-mark=conn_isp1 passthrough=no

/ip firewall mangle add action=mark-connection chain=prerouting 
comment="Connmark in from ISP2" connection-mark=no-mark in-interface=ether2  new-connection-mark=conn_isp2 passthrough=no

/ip firewall mangle add action=mark-connection chain=prerouting 
comment="Connmark in from ISP3" connection-mark=no-mark in-interface=pppoe-isp3  new-connection-mark=conn_isp3 passthrough=no

سخنان برای اینکه اتصالات علامت گذاری شده قبلی را علامت نزنم، به جای Connect-state=new از شرط connection-mark=no-mark استفاده می کنم زیرا فکر می کنم این درست تر است و همچنین رد کردن اتصالات نامعتبر در فیلتر ورودی.


passthrough=no - زیرا در این روش پیاده سازی، علامت گذاری مجدد حذف شده است و برای افزایش سرعت می توانید شمارش قوانین را پس از اولین مسابقه قطع کنید.

باید در نظر داشت که ما هنوز به هیچ وجه در مسیریابی دخالتی نداریم. اکنون فقط مراحل آماده سازی وجود دارد. مرحله بعدی پیاده سازی، پردازش ترافیک عبوری است که از طریق اتصال برقرار شده از مقصد در شبکه محلی برمی گردد. آن ها بسته هایی که (نمودار را ببینید) در طول مسیر از مسیریاب عبور کردند:

“Input Interface”=>”Prerouting”=>”Routing Decision”=>”Forward”=>”Post Routing”=>”Output Interface” و به مخاطب خود در شبکه محلی رسیدند.

مهم! در ROS، هیچ تقسیم منطقی به رابط های خارجی و داخلی وجود ندارد. اگر مسیر بسته پاسخ را طبق نمودار بالا دنبال کنیم، همان مسیر منطقی درخواست را دنبال می کند:

“Input Interface”=>”Prerouting”=>”Routing Decision”=>”Forward”=>”Post Routing”=>”Output Interface” فقط برای یک درخواست"رابط ورودی” رابط ISP بود و برای پاسخ - LAN

2.2. ما ترافیک ترانزیت پاسخ را به جداول مسیریابی مربوطه هدایت می کنیم:

/ip firewall mangle add action=mark-routing chain=prerouting 
comment="Routemark transit out via ISP1" connection-mark=conn_isp1 
dst-address-type=!local in-interface-list=!WAN new-routing-mark=to_isp1 passthrough=no

/ip firewall mangle add action=mark-routing chain=prerouting 
comment="Routemark transit out via ISP2" connection-mark=conn_isp2 
dst-address-type=!local in-interface-list=!WAN new-routing-mark=to_isp2 passthrough=no

/ip firewall mangle add action=mark-routing chain=prerouting 
comment="Routemark transit out via ISP3" connection-mark=conn_isp3 
dst-address-type=!local in-interface-list=!WAN new-routing-mark=to_isp3 passthrough=no

اظهار نظر. in-interface-list=!WAN - ما فقط با ترافیک شبکه محلی و dst-address-type=!local کار می کنیم که آدرس مقصد آدرس رابط های خود روتر را ندارد.

همین امر برای بسته های محلی که در طول مسیر به روتر می رسد:

“Input Interface”=>”Prerouting”=>”Routing Decision”=>”Input”=>”Process Local”

مهم! پاسخ به شکل زیر خواهد بود:

”فرآیند محلی”=>”تصمیم مسیریابی”=>”خروجی”=>”مسیریابی پست”=>”رابط خروجی”

2.3. ما ترافیک محلی را به جداول مسیریابی مربوطه هدایت می کنیم:

/ip firewall mangle add action=mark-routing chain=output 
comment="Routemark local out via ISP1" connection-mark=conn_isp1 dst-address-type=!local 
new-routing-mark=to_isp1 passthrough=no

/ip firewall mangle add action=mark-routing chain=output 
comment="Routemark local out via ISP2" connection-mark=conn_isp2 dst-address-type=!local 
new-routing-mark=to_isp2 passthrough=no

/ip firewall mangle add action=mark-routing chain=output 
comment="Routemark local out via ISP3" connection-mark=conn_isp3 dst-address-type=!local 
new-routing-mark=to_isp3 passthrough=no

در این مرحله می توان وظیفه آماده سازی ارسال پاسخ به کانال اینترنتی که درخواست از آن رسیده است را حل شده تلقی کرد. همه چیز علامت گذاری شده، برچسب گذاری شده و آماده مسیریابی است.
یک اثر جانبی عالی این تنظیم، توانایی کار با ارسال پورت DSNAT از هر دو ارائه دهنده (ISP2، ISP3) به طور همزمان است. به هیچ وجه، زیرا در ISP1 یک آدرس غیر قابل مسیریابی داریم. این اثر برای مثال برای یک سرور پست الکترونیکی با دو MX که به کانال های اینترنتی مختلف نگاه می کند مهم است.

برای از بین بردن تفاوت های ظریف عملکرد شبکه های محلی با روترهای IP خارجی، از راه حل های پاراگراف ها استفاده می کنیم. 1.8.2 و 3.1.2.6.

علاوه بر این، می توانید از ابزاری با علامت گذاری برای حل بند 3 مسئله استفاده کنید. ما آن را به این صورت پیاده سازی می کنیم:

2.4. ما ترافیک مشتریان محلی را از لیست های مسیریابی به جداول مربوطه هدایت می کنیم:

/ip firewall mangle add action=mark-routing chain=prerouting 
comment="Address List via ISP1" dst-address-list=!BOGONS new-routing-mark=to_isp1 
passthrough=no src-address-list=Via_ISP1

/ip firewall mangle add action=mark-routing chain=prerouting 
comment="Address List via ISP2" dst-address-list=!BOGONS new-routing-mark=to_isp2 
passthrough=no src-address-list=Via_ISP2

/ip firewall mangle add action=mark-routing chain=prerouting 
comment="Address List via ISP3" dst-address-list=!BOGONS new-routing-mark=to_isp3 
passthrough=no src-address-list=Via_ISP3

در نتیجه، چیزی شبیه به این به نظر می رسد:

Multivan و مسیریابی در Mikrotik RouterOS

3. یک اتصال به ISP راه اندازی کنید و مسیریابی مارک را فعال کنید

3.1. راه اندازی اتصال به ISP1:
3.1.1. یک آدرس IP ثابت را پیکربندی کنید:

/ip address add interface=ether1 address=100.66.66.2/30 comment="ISP1 IP"

3.1.2. تنظیم مسیریابی استاتیک:
3.1.2.1. یک مسیر پیش‌فرض «اضطراری» اضافه کنید:

/ip route add comment="Emergency route" distance=254 type=blackhole

سخنان این مسیر به ترافیک فرآیندهای محلی اجازه می دهد تا بدون توجه به وضعیت پیوندهای هر یک از ارائه دهندگان، از مرحله تصمیم گیری مسیر عبور کنند. نکته ظریف ترافیک محلی خروجی این است که برای اینکه بسته حداقل در جایی حرکت کند، جدول مسیریابی اصلی باید یک مسیر فعال به دروازه پیش فرض داشته باشد. اگر نه، بسته به سادگی از بین می رود.

به عنوان پسوند ابزار دروازه را بررسی کنید برای تحلیل عمیق تر وضعیت کانال، پیشنهاد می کنم از روش مسیر بازگشتی استفاده کنید. ماهیت روش این است که ما به روتر می گوییم که به دنبال مسیری به دروازه خود باشد نه مستقیم، بلکه از طریق یک دروازه میانی. 4.2.2.1، 4.2.2.2 و 4.2.2.3 به ترتیب به عنوان دروازه های آزمایشی برای ISP1، ISP2 و ISP3 انتخاب خواهند شد.

3.1.2.2. مسیر به آدرس "تأیید":

/ip route add check-gateway=ping comment="For recursion via ISP1"  
distance=1 dst-address=4.2.2.1 gateway=100.66.66.1 scope=10

سخنان برای استفاده از 4.2.2.1 به عنوان دروازه بازگشتی در آینده، مقدار دامنه را به پیش فرض در محدوده هدف ROS کاهش می دهیم. تاکید می کنم: محدوده مسیر تا آدرس آزمایشی باید کمتر یا مساوی با محدوده هدف مسیری باشد که به مسیر آزمایشی اشاره می کند.

3.1.2.3. مسیر پیش‌فرض بازگشتی برای ترافیک بدون علامت مسیریابی:

/ip route add comment="Unmarked via ISP1" distance=2 gateway=4.2.2.1

سخنان مقدار distance=2 استفاده می شود زیرا ISP1 به عنوان اولین پشتیبان با توجه به شرایط کار اعلام می شود.

3.1.2.4. مسیر پیش‌فرض بازگشتی برای ترافیک با علامت مسیریابی "to_isp1":

/ip route add comment="Marked via ISP1 Main" distance=1 gateway=4.2.2.1 
routing-mark=to_isp1

سخنان در واقع، در اینجا ما در نهایت شروع به لذت بردن از ثمرات کار مقدماتی که در بند 2 انجام شد، می کنیم.


در این مسیر، تمام ترافیکی که دارای علامت مسیر "to_isp1" است به دروازه اولین ارائه دهنده هدایت می شود، صرف نظر از اینکه در حال حاضر کدام دروازه پیش فرض برای جدول اصلی فعال است.

3.1.2.5. اولین مسیر پیش‌فرض بازگشتی بازگشتی برای ترافیک برچسب‌گذاری شده ISP2 و ISP3:

/ip route add comment="Marked via ISP2 Backup1" distance=2 gateway=4.2.2.1 
routing-mark=to_isp2
/ip route add comment="Marked via ISP3 Backup1" distance=2 gateway=4.2.2.1 
routing-mark=to_isp3

سخنان این مسیرها، از جمله موارد دیگر، برای رزرو ترافیک از شبکه‌های محلی که اعضای فهرست آدرس «to_isp*» هستند، مورد نیاز است.

3.1.2.6. ما مسیر را برای ترافیک محلی روتر به اینترنت از طریق ISP1 ثبت می کنیم:

/ip route rule add comment="From ISP1 IP to Inet" src-address=100.66.66.2 table=to_isp1

سخنان در ترکیب با قوانین پاراگراف 1.8.2، دسترسی به کانال مورد نظر را با یک منبع مشخص فراهم می کند. این برای ساخت تونل هایی که آدرس IP جانبی محلی (EoIP، IP-IP، GRE) را مشخص می کنند، حیاتی است. از آنجایی که قوانین در قوانین مسیر IP از بالا به پایین اجرا می شوند، تا اولین تطابق شرایط، پس این قانون باید بعد از قوانین بند 1.8.2 باشد.

3.1.3. ما قانون NAT را برای ترافیک خروجی ثبت می کنیم:

/ip firewall nat add action=src-nat chain=srcnat comment="NAT via ISP1"  
ipsec-policy=out,none out-interface=ether1 to-addresses=100.66.66.2

سخنان همه چیزهایی را که خارج می شود، به جز مواردی که وارد خط مشی های IPsec می شوند، NAT کنید. من سعی می کنم از عمل = بالماسکه استفاده نکنم مگر اینکه کاملاً ضروری باشد. کندتر و منابع فشرده تر از src-nat است زیرا آدرس NAT را برای هر اتصال جدید محاسبه می کند.

3.1.4. ما مشتریانی را از فهرستی که دسترسی به آنها از طریق سایر ارائه دهندگان ممنوع است، مستقیماً به دروازه ارائه دهنده ISP1 ارسال می کنیم.

/ip firewall mangle add action=route chain=prerouting comment="Address List via ISP1 only" 
dst-address-list=!BOGONS passthrough=no route-dst=100.66.66.1 
src-address-list=Via_only_ISP1 place-before=0

سخنان action=route اولویت بیشتری دارد و قبل از سایر قوانین مسیریابی اعمال می شود.


place-before=0 - قانون ما را در لیست اول قرار می دهد.

3.2. اتصال به ISP2 را تنظیم کنید.

از آنجایی که ارائه‌دهنده ISP2 تنظیمات را از طریق DHCP به ما می‌دهد، منطقی است که تغییرات لازم را با اسکریپتی که هنگام راه‌اندازی کلاینت DHCP شروع می‌شود، انجام دهیم:

/ip dhcp-client
add add-default-route=no disabled=no interface=ether2 script=":if ($bound=1) do={r
    n    /ip route add check-gateway=ping comment="For recursion via ISP2" distance=1 
           dst-address=4.2.2.2/32 gateway=$"gateway-address" scope=10r
    n    /ip route add comment="Unmarked via ISP2" distance=1 gateway=4.2.2.2;r
    n    /ip route add comment="Marked via ISP2 Main" distance=1 gateway=4.2.2.2 
           routing-mark=to_isp2;r
    n    /ip route add comment="Marked via ISP1 Backup1" distance=2 gateway=4.2.2.2 
           routing-mark=to_isp1;r
    n    /ip route add comment="Marked via ISP3 Backup2" distance=3 gateway=4.2.2.2 
           routing-mark=to_isp3;r
    n    /ip firewall nat add action=src-nat chain=srcnat ipsec-policy=out,none 
           out-interface=$"interface" to-addresses=$"lease-address" comment="NAT via ISP2" 
           place-before=1;r
    n    if ([/ip route rule find comment="From ISP2 IP to Inet"] ="") do={r
    n        /ip route rule add comment="From ISP2 IP to Inet" 
               src-address=$"lease-address" table=to_isp2 r
    n    } else={r
    n       /ip route rule set [find comment="From ISP2 IP to Inet"] disabled=no 
              src-address=$"lease-address"r
    n    }      r
    n} else={r
    n   /ip firewall nat remove  [find comment="NAT via ISP2"];r
    n   /ip route remove [find comment="For recursion via ISP2"];r
    n   /ip route remove [find comment="Unmarked via ISP2"];r
    n   /ip route remove [find comment="Marked via ISP2 Main"];r
    n   /ip route remove [find comment="Marked via ISP1 Backup1"];r
    n   /ip route remove [find comment="Marked via ISP3 Backup2"];r
    n   /ip route rule set [find comment="From ISP2 IP to Inet"] disabled=yesr
    n}r
    n" use-peer-dns=no use-peer-ntp=no

خود اسکریپت در پنجره Winbox:

Multivan و مسیریابی در Mikrotik RouterOS
سخنان قسمت اول اسکریپت زمانی که اجاره نامه با موفقیت به دست می آید راه اندازی می شود، قسمت دوم - پس از انتشار اجاره نامه.به یادداشت 2 مراجعه کنید

3.3. ما یک اتصال به ارائه دهنده ISP3 راه اندازی کردیم.

از آنجایی که ارائه‌دهنده تنظیمات به ما پویا می‌دهد، منطقی است که تغییرات لازم را با اسکریپت‌هایی انجام دهیم که پس از ارتقاء رابط ppp و پس از سقوط شروع می‌شوند.

3.3.1. ابتدا پروفایل را پیکربندی می کنیم:

/ppp profile
add comment="for PPPoE to ISP3" interface-list=WAN name=isp3_client 
on-down="/ip firewall nat remove  [find comment="NAT via ISP3"];r
    n/ip route remove [find comment="For recursion via ISP3"];r
    n/ip route remove [find comment="Unmarked via ISP3"];r
    n/ip route remove [find comment="Marked via ISP3 Main"];r
    n/ip route remove [find comment="Marked via ISP1 Backup2"];r
    n/ip route remove [find comment="Marked via ISP2 Backup2"];r
    n/ip route rule set [find comment="From ISP3 IP to Inet"] disabled=yes;" 
on-up="/ip route add check-gateway=ping comment="For recursion via ISP3" distance=1 
    dst-address=4.2.2.3/32 gateway=$"remote-address" scope=10r
    n/ip route add comment="Unmarked via ISP3" distance=3 gateway=4.2.2.3;r
    n/ip route add comment="Marked via ISP3 Main" distance=1 gateway=4.2.2.3 
    routing-mark=to_isp3;r
    n/ip route add comment="Marked via ISP1 Backup2" distance=3 gateway=4.2.2.3 
    routing-mark=to_isp1;r
    n/ip route add comment="Marked via ISP2 Backup2" distance=3 gateway=4.2.2.3 
    routing-mark=to_isp2;r
    n/ip firewall mangle set [find comment="Connmark in from ISP3"] 
    in-interface=$"interface";r
    n/ip firewall nat add action=src-nat chain=srcnat ipsec-policy=out,none 
    out-interface=$"interface" to-addresses=$"local-address" comment="NAT via ISP3" 
    place-before=1;r
    nif ([/ip route rule find comment="From ISP3 IP to Inet"] ="") do={r
    n   /ip route rule add comment="From ISP3 IP to Inet" src-address=$"local-address" 
    table=to_isp3 r
    n} else={r
    n   /ip route rule set [find comment="From ISP3 IP to Inet"] disabled=no 
    src-address=$"local-address"r
    n};r
    n"

خود اسکریپت در پنجره Winbox:

Multivan و مسیریابی در Mikrotik RouterOS
سخنان خط
/ip firewall mangle set [find comment="Connmark in from ISP3"] in-interface=$"interface";
به شما امکان می دهد تا تغییر نام رابط را به درستی انجام دهید، زیرا با کد آن کار می کند و نه با نام نمایشی.

3.3.2. اکنون با استفاده از نمایه، یک اتصال ppp ایجاد کنید:

/interface pppoe-client add allow=mschap2 comment="to ISP3" disabled=no 
interface=ether3 name=pppoe-isp3 password=isp3_pass profile=isp3_client user=isp3_client

به عنوان آخرین لمس، بیایید ساعت را تنظیم کنیم:

/system ntp client set enabled=yes server-dns-names=0.pool.ntp.org,1.pool.ntp.org,2.pool.ntp.org

برای کسانی که تا آخر می خوانند

روش پیشنهادی برای اجرای مولتی ون ترجیح شخصی نویسنده است و تنها راه ممکن نیست. جعبه ابزار ROS گسترده و منعطف است که از یک طرف برای مبتدیان مشکلاتی ایجاد می کند و از طرف دیگر دلیل محبوبیت آن است. یاد بگیرید، امتحان کنید، ابزارها و راه حل های جدید را کشف کنید. به عنوان مثال، به عنوان یک کاربرد دانش به دست آمده، می توان ابزار را در این پیاده سازی مولتی ون جایگزین کرد دروازه چک با مسیرهای بازگشتی به ساعت شبکه.

یادداشت ها

  1. دروازه چک - مکانیزمی که به شما امکان می دهد مسیر را پس از دو بررسی ناموفق متوالی دروازه برای در دسترس بودن غیرفعال کنید. بررسی هر 10 ثانیه یک بار انجام می شود، به اضافه زمان پاسخ. در مجموع، زمان بندی واقعی سوئیچینگ در محدوده 20-30 ثانیه قرار دارد. اگر چنین زمان بندی سوئیچینگ کافی نباشد، گزینه ای برای استفاده از ابزار وجود دارد ساعت شبکه، جایی که تایمر بررسی را می توان به صورت دستی تنظیم کرد. دروازه چک از دست دادن متناوب بسته در پیوند شلیک نمی کند.

    مهم! غیرفعال کردن یک مسیر اصلی، تمام مسیرهای دیگری را که به آن اشاره می کنند غیرفعال می کند. بنابراین، برای آنها نشان می دهد check-gateway=پینگ لازم نیست.

  2. این اتفاق می افتد که در مکانیزم DHCP یک خرابی رخ می دهد، که به نظر می رسد یک کلاینت در حالت تمدید گیر کرده است. در این حالت، قسمت دوم اسکریپت کار نخواهد کرد، اما مانع از راه رفتن صحیح ترافیک نمی شود، زیرا ایالت مسیر بازگشتی مربوطه را دنبال می کند.
  3. ECMP (هزینه برابر چند مسیر) - در ROS امکان تعیین مسیر با چندین دروازه و فاصله یکسان وجود دارد. در این حالت، اتصالات با استفاده از الگوریتم گرد رابین، متناسب با تعداد دروازه‌های مشخص شده، در بین کانال‌ها توزیع می‌شوند.

برای انگیزه نوشتن مقاله، به شکل دادن به ساختار آن و قرار دادن لهجه ها کمک کنید - تشکر شخصی از اوگنی @jscar

منبع: www.habr.com