Multivan والتوجيه على Mikrotik RouterOS

مقدمة

كان الدافع وراء تناول المقالة ، بالإضافة إلى الغرور ، هو التردد المحبط للأسئلة حول هذا الموضوع في مجموعات الملف الشخصي لمجتمع التلغرام الناطق بالروسية. هذه المقالة موجهة للمسؤولين المبتدئين في Mikrotik RouterOS (المشار إليها فيما يلي باسم ROS). إنها تتعامل فقط مع المالتيفان ، مع التركيز على التوجيه. على سبيل المكافأة ، هناك حد أدنى من الإعدادات الكافية لضمان التشغيل الآمن والمريح. أولئك الذين يبحثون عن الكشف عن مواضيع قوائم الانتظار ، وموازنة الأحمال ، و vlans ، والجسور ، والتحليل العميق متعدد المراحل لحالة القناة وما شابه - قد لا يضيعون الوقت والجهد في القراءة.

البيانات الأولية

كموضوع اختبار ، تم اختيار جهاز توجيه Mikrotik بخمس منافذ بإصدار 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 = ping.
في ISP2 ، الإعداد الافتراضي لعميل dhcp - وفقًا لذلك ، ستكون المسافة مساوية لواحد.
على ISP3 في إعدادات عميل pppoe عندما إضافة المسار الافتراضي = نعم يضع مسافة المسار الافتراضية = 3.

لا تنس تسجيل NAT عند الخروج:

/ ip firewall nat add action = masquerade chain = srcnat out-interface-list = WAN

نتيجة لذلك ، يستمتع مستخدمو المواقع المحلية بتنزيل القطط من خلال مزود ISP2 الرئيسي وهناك حجز قناة باستخدام الآلية تحقق من البوابة انظر الملاحظة 1

تم تنفيذ النقطة 1 من المهمة. أين هو المالتيفان بعلاماته؟ لا…

إضافي. تحتاج إلى تحرير عملاء معينين من الشبكة المحلية عبر ISP1:

/ ip firewall mangle add action = سلسلة المسار = prerouting dst-address-list =! BOGONS
العبور = نعم route-dst = 100.66.66.1 src-address-list = Via_ISP1
/ ip firewall mangle add action = سلسلة المسار = prerouting dst-address-list =! BOGONS
العبور = لا يوجد 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 = نعم

بصفتنا نظيرًا ، نمنح العميل نتيجة الإخراج: ": ضع [ip cloud get dns-name]"

نسجل إعادة توجيه المنفذ من الإنترنت:

/ ip firewall nat add action = dst-nat chain = dstnat dst-port = 1194
في قائمة الواجهة = بروتوكول WAN = udp إلى عناوين = 172.17.17.17

العنصر 4 جاهز.

لقد أنشأنا جدار حماية وأمنًا آخر للنقطة 5 ، وفي نفس الوقت يسعدنا أن كل شيء يعمل بالفعل للمستخدمين ونصل إلى حاوية بها مشروب مفضل ...
أ! تم نسيان الأنفاق.

صعد l2tp-client ، الذي تم تكوينه بواسطة مقالة google ، إلى نظام VDS الهولندي المفضل لديك؟ نعم.
ارتفع خادم l2tp مع IPsec والعملاء من خلال اسم DNS من IP Cloud (انظر أعلاه) يتشبثون؟ نعم.
نميل إلى الخلف في كرسينا ، ونحتسي مشروبًا ، ونفكر بتكاسل في النقطتين 6 و 7 من المهمة. نعتقد - هل نحتاجها؟ كل نفس ، يعمل على هذا النحو (ج) ... لذلك ، إذا لم تكن هناك حاجة إليه ، فهذا كل شيء. تم تنفيذ Multivan.

ما هو مالتيفان؟ هذا هو اتصال عدة قنوات إنترنت بجهاز توجيه واحد.

لست مضطرًا لقراءة المقال أكثر ، لأنه ما الذي يمكن أن يكون هناك إلى جانب إظهار قابلية التطبيق المشكوك فيها؟

بالنسبة لأولئك الذين بقوا ، والذين يهتمون بالنقطتين 6 و 7 من المهمة ، ويشعرون أيضًا بحكة الكمال ، فإننا نغوص بشكل أعمق.

إن أهم مهمة لتنفيذ نظام multivan هو التوجيه الصحيح لحركة المرور. وهي: بغض النظر عن أي (أو أي منها) انظر. ملاحظة 3 ، تنظر قناة (قنوات) ISP إلى المسار الافتراضي على جهاز التوجيه الخاص بنا ، ويجب أن تعيد استجابة للقناة الدقيقة التي جاءت منها الحزمة. المهمة واضحة. أين المشكلة؟ في الواقع ، في شبكة محلية بسيطة ، تكون المهمة هي نفسها ، لكن لا أحد يزعج إعدادات إضافية ولا يشعر بالمتاعب. الفرق هو أن أي عقدة قابلة للتوجيه على الإنترنت يمكن الوصول إليها من خلال كل قناة من قنواتنا ، وليس من خلال قناة محددة بدقة ، كما هو الحال في شبكة LAN بسيطة. والمشكلة هي أنه إذا جاء إلينا طلب للحصول على عنوان IP الخاص بـ ISP3 ، ففي حالتنا ستمر الإجابة عبر قناة ISP2 ، حيث يتم توجيه البوابة الافتراضية هناك. يغادر وسيتم تجاهلها من قبل المزود باعتبارها غير صحيحة. تم تحديد المشكلة. كيف حلها؟

ينقسم الحل إلى ثلاث مراحل:

  1. الضبط المسبق. في هذه المرحلة ، سيتم تعيين الإعدادات الأساسية لجهاز التوجيه: الشبكة المحلية ، وجدار الحماية ، وقوائم العناوين ، ودبابيس NAT ، وما إلى ذلك.
  2. مالتيفان. في هذه المرحلة ، سيتم تمييز الاتصالات الضرورية وفرزها في جداول التوجيه.
  3. الاتصال بمزود خدمة الإنترنت. في هذه المرحلة ، سيتم تكوين الواجهات التي توفر الاتصال بالإنترنت ، وسيتم تنشيط التوجيه وآلية حجز قنوات الإنترنت.

1. الضبط المسبق

1.1 نقوم بمسح تكوين جهاز التوجيه بالأمر:

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

اتفق مع "خطير! إعادة تعيين على أي حال؟ [س / لا]:"وبعد إعادة التشغيل ، نتصل بـ Winbox عبر MAC. في هذه المرحلة ، يتم مسح التكوين وقاعدة المستخدمين.

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

(ping وليس فقط ping. يُسمح باستخدام جميع 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

(القاعدة تعيد تعيين الاتصالات مع حالة الاتصال = مرور غير صالح عبر جهاز التوجيه. يوصى بذلك بشدة بواسطة 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 ثوانٍ. العودة إلى الوراء ، عند استئناف "الخادم الساقط" ، لا يحدث تلقائيًا. بالنظر إلى هذه الخوارزمية ووجود multivan ، يوصي المؤلف بعدم استخدام الخوادم التي يوفرها المزودون.

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 للشبكات المحلية 1 و 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

تعليق. يتيح لك ذلك الوصول إلى مواردك (dstnat) عبر عنوان IP خارجي أثناء وجودك داخل الشبكة.

2. في الواقع ، تنفيذ multivan الصحيح للغاية

لحل مشكلة "الإجابة من أين طلبوا" ، سنستخدم أداتين من أدوات ROS: علامة الاتصال и علامة التوجيه. علامة الاتصال يسمح لك بوضع علامة على الاتصال المطلوب ثم العمل باستخدام هذا الملصق كشرط للتقديم علامة التوجيه. وبالفعل مع علامة التوجيه ممكن للعمل فيها مسار الملكية الفكرية и قواعد الطريق. لقد اكتشفنا الأدوات ، والآن أنت بحاجة إلى تحديد الاتصالات التي يجب تحديدها - مرة واحدة ، مكان تحديدها بالضبط - اثنان.

في الحالة الأولى ، كل شيء بسيط - يجب علينا تحديد جميع الاتصالات التي تأتي إلى جهاز التوجيه من الإنترنت عبر القناة المناسبة. في حالتنا ، ستكون هذه ثلاث تسميات (حسب عدد القنوات): "conn_isp1" و "conn_isp2" و "conn_isp3".

الفارق البسيط مع الثاني هو أن الاتصالات الواردة ستكون من نوعين: العبور وتلك المخصصة لجهاز التوجيه نفسه. تعمل آلية علامة الاتصال في الجدول مفقود. ضع في اعتبارك حركة الحزمة على مخطط مبسط ، تم جمعه من قبل المتخصصين في مورد mikrotik-trainings.com (وليس الإعلان):

Multivan والتوجيه على Mikrotik RouterOS

بعد الأسهم ، نرى أن الحزمة تصل إلى "واجهة الإدخال"، يمر عبر السلسلة"التوجيه المسبق"وعندها فقط يتم تقسيمها إلى عبور ومحلية في الكتلة"قرار التوجيه". لذلك لقتل عصفورين بحجر واحد نستخدمه علامة الاتصال في الطاولة مانجل التوجيه المسبق السلاسل التوجيه المسبق.

تعليق. في 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

تعليق. من أجل عدم وضع علامة على الاتصالات المحددة بالفعل ، أستخدم علامة الاتصال = حالة عدم وجود علامة بدلاً من حالة الاتصال = جديد لأنني أعتقد أن هذا أكثر صحة ، بالإضافة إلى رفض إسقاط الاتصالات غير الصالحة في مرشح الإدخال.


passthrough = no - لأنه في طريقة التنفيذ هذه ، يتم استبعاد إعادة التصحيح ، وللتسريع ، يمكنك مقاطعة تعداد القواعد بعد المباراة الأولى.

يجب أن يؤخذ في الاعتبار أننا لا نتدخل بأي شكل من الأشكال في التوجيه حتى الآن. الآن هناك فقط مراحل التحضير. ستكون المرحلة التالية من التنفيذ هي معالجة حركة المرور العابر التي تعود عبر الاتصال الذي تم إنشاؤه من الوجهة في الشبكة المحلية. أولئك. تلك الحزم (انظر الرسم البياني) التي مرت عبر جهاز التوجيه على طول الطريق:

“واجهة الإدخال” => ”Prerouting” => ”قرار التوجيه” => ”Forward” => “Post Routing” => ”Output Interface” وحصلت على المرسل إليه في الشبكة المحلية.

المهم! في ROS ، لا يوجد تقسيم منطقي إلى واجهات خارجية وداخلية. إذا قمنا بتتبع مسار حزمة الاستجابة وفقًا للرسم البياني أعلاه ، فسوف تتبع نفس المسار المنطقي للطلب:

“واجهة الإدخال” => ”Prerouting” => ”قرار التوجيه” => ”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 الذي لا يحتوي على عنوان الوجهة لعنوان واجهات جهاز التوجيه نفسه.

الشيء نفسه بالنسبة للحزم المحلية التي وصلت إلى جهاز التوجيه على طول الطريق:

"واجهة الإدخال" => "Prerouting" => "قرار التوجيه" => "الإدخال" => "العملية المحلية"

المهم! ستكون الإجابة على النحو التالي:

"العملية المحلية" => "قرار التوجيه" => "الإخراج" => "توجيه الإرسال" => "واجهة الإخراج"

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 لدينا عنوان غير قابل للتوجيه. هذا التأثير مهم ، على سبيل المثال ، لخادم البريد مع اثنين من MXs التي تبحث في قنوات الإنترنت المختلفة.

للتخلص من الفروق الدقيقة في تشغيل الشبكات المحلية باستخدام أجهزة توجيه 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

تعليق. يتم تخفيض قيمة النطاق إلى القيمة الافتراضية في نطاق هدف ROS من أجل استخدام 4.2.2.1 كبوابة تكرارية في المستقبل. أؤكد: يجب أن يكون نطاق المسار إلى عنوان "الاختبار" أقل من النطاق المستهدف للمسار الذي سيشير إلى الاختبار الأول أو مساويًا له.

3.1.2.3. مسار افتراضي متكرر لحركة المرور بدون علامة توجيه:

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

تعليق. يتم استخدام قيمة المسافة = 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

تعليق. NATim كل ما يخرج ، باستثناء ما يدخل في سياسات IPsec. أحاول عدم استخدام action = masquerade إلا للضرورة القصوى. إنه أبطأ وأكثر كثافة للموارد من 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

تعليق. الإجراء = المسار له أولوية أعلى ويتم تطبيقه قبل قواعد التوجيه الأخرى.


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

لمن قرأ حتى النهاية

الطريقة المقترحة لتطبيق multivan هي التفضيل الشخصي للمؤلف وليست الطريقة الوحيدة الممكنة. إن مجموعة أدوات ROS واسعة النطاق ومرنة ، والتي ، من ناحية ، تسبب صعوبات للمبتدئين ، ومن ناحية أخرى ، هي سبب شعبيتها. تعلم ، جرب ، اكتشف أدوات وحلول جديدة. على سبيل المثال ، كتطبيق للمعرفة المكتسبة ، من الممكن استبدال الأداة في هذا التنفيذ للشاحنة المتعددة تحقق من البوابة مع المسارات العودية إلى نتواتش.

الملاحظات

  1. تحقق من البوابة - آلية تسمح لك بإلغاء تنشيط المسار بعد فحصين متتاليين غير ناجحين للبوابة للتأكد من توفرها. يتم إجراء الفحص مرة كل 10 ثوانٍ ، بالإضافة إلى مهلة الاستجابة. في المجموع ، يكمن توقيت التبديل الفعلي في نطاق 20-30 ثانية. إذا لم يكن توقيت التبديل هذا كافيًا ، فهناك خيار لاستخدام الأداة نتواتش، حيث يمكن ضبط عداد الفحص يدويًا. تحقق من البوابة لا يتم إطلاقه عند فقد الحزمة المتقطع على الارتباط.

    مهم! سيؤدي إلغاء تنشيط مسار أساسي إلى إلغاء تنشيط جميع المسارات الأخرى التي تشير إليه. لذلك ، بالنسبة لهم للإشارة check-gateway = ping ليس من الضروري.

  2. يحدث فشل في آلية DHCP ، والتي تبدو وكأنها عميل عالق في حالة التجديد. في هذه الحالة ، لن يعمل الجزء الثاني من البرنامج النصي ، لكنه لن يمنع حركة المرور من السير بشكل صحيح ، لأن الحالة تتعقب المسار العودي المقابل.
  3. ECMP (مسارات متعددة متساوية التكلفة) - في ROS ، من الممكن تحديد مسار بعدة بوابات ونفس المسافة. في هذه الحالة ، سيتم توزيع الاتصالات عبر القنوات باستخدام خوارزمية round robin ، بما يتناسب مع عدد البوابات المحددة.

للدفع لكتابة المقال ، ساعد في تشكيل هيكله ووضع لهجات - امتنان شخصي لـ Evgeny تضمين التغريدة

المصدر: www.habr.com