موليفان والتوجيه على Mikrotik RouterOS

مع تصحيحات وإضافات من 02/11/2020

مقدمة


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

مصدر البيانات


كموضوع اختبار ، تم اختيار جهاز توجيه Mikrotik بخمسة منافذ مع إصدار ROS 6.45+. سيتم توجيه حركة المرور بين شبكتين محليتين (LAN1 و LAN2) وثلاثة موفري (ISP1 و ISP2 و ISP3). تحتوي القناة إلى ISP1 على عنوان "رمادي" ثابت ، ISP2 "أبيض" تم استلامه عبر DHCP ، ISP3 "أبيض" مع مصادقة PPPoE. يظهر مخطط الاتصال في الشكل:



تتمثل المهمة في تكوين جهاز توجيه MTK استنادًا إلى المخطط بحيث:

  1. توفير التبديل التلقائي إلى مزود النسخ الاحتياطي. المزود الرئيسي هو ISP2 ، والاحتياطي الأول هو ISP1 ، والاحتياطي الثاني هو ISP3.
  2. لتنظيم وصول LAN1 إلى الإنترنت فقط من خلال ISP1.
  3. توفير القدرة على توجيه حركة المرور من الشبكات المحلية إلى الإنترنت من خلال الموفر المحدد بناءً على قائمة العناوين.
  4. لتوفير إمكانية نشر خدمات من شبكة محلية إلى الإنترنت (DSTNAT)
  5. قم بتكوين مرشح جدار الحماية لتوفير الحد الأدنى من الأمان الكافي من الإنترنت.
  6. يمكن لجهاز التوجيه إصدار حركة المرور الخاصة به من خلال أي من الموفرين الثلاثة ، حسب عنوان المصدر المحدد.
  7. توفير توجيه حزم الاستجابة للقناة التي أتت منها (بما في ذلك LAN).

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

القليل من النقاش حول ماهية الشاحنة المتعددة ، سواء كانت مشكلة أم نسج أشخاص أذكياء شبكات من المؤامرات حول


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

هل يمكننا تكوين عنونة على واجهات وبوابات افتراضية؟ نعم:

تم تسجيل العنوان والعبّارة ذات المسافة = 2 وعبّارة الاختيار = ping على ISP1 .
في ISP2 ، يكون إعداد dhcp الافتراضي للعميل ، وفقًا لذلك ، المسافة تساوي واحدًا.
على ISP3 في إعدادات pppoe للعميل مع add-default-route = yes تعيين default-route-distance = 3 .

لا تنسى تسجيل NAT للإخراج:

/ ip fire nat add action = سلسلة حفلة تنكرية = srcnat out-interface-list = WAN

نتيجة لذلك ، يتمتع مستخدمو شبكات LAN (LAN) بأختام يتم تحميلها من خلال مزود ISP2 الرئيسي ويوجد حجز للقناة باستخدام آلية بوابة الفحص .

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

وعلاوة على ذلك. تحتاج إلى تحرير عملاء محددين من LAN عبر ISP1:

/ ip جدار الحماية mangle add action = سلسلة المسار = prerouting dst-address-list =! BOGONS \
العبور = yes route-dst = 100.66.66.1 src-address-list = Via_ISP1
/ ip جدار الحماية mangle add action = سلسلة المسار = prerouting dst-address-list =! BOGONS \
العبور = لا يوجد مسار- dst = 100.66.66.1 src- العنوان = 192.168.88.0 / 24

يتم تنفيذ البندين 2 و 3 من المهمة. العلامات ، الطوابع ، قواعد الطريق ، أين أنت؟!

هل تحتاج إلى منح حق الوصول إلى خادم OpenVPN المفضل لديك بعنوان 172.17.17.17 للعملاء من الإنترنت؟ من فضلك:

/ ip مجموعة السحابية تمكين ddns = نعم

نعطي نتيجة الإخراج للعملاء كعيد: " : put [ip cloud get dns-name] "

نسجل ميناء الشحن من الإنترنت:

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

النقطة 4 جاهزة.

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

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

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

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

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

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

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

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

المذكرة. تم اختيار ثلاثة أنواع مختلفة من الاتصال بـ ISP على وجه التحديد لإظهار أنه لا يوجد شيء غير قابل للحل في إعداد multivans بعناوين ديناميكية وإظهار أحد خيارات الحلول.
! المهم لتبديل القنوات وفقًا للخوارزمية المحددة باستخدام تكلفة طرق المسافة ، يتم استخدام آلية بوابة التحقق. انظر الملاحظة 1
البرامج النصية الواردة في المقالة لا علاقة لها بحجز القناة.

1. مسبقا


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

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

أتفق مع " خطورة! إعادة تعيين على أي حال؟ [y / N]: "وبعد إعادة التشغيل ، نتصل بـ 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 ثوان. لا يتم إجراء العودة تلقائيًا عند استئناف "الخادم الساقط". نظرًا لهذه الخوارزمية ووجود مولفان ، يوصي المؤلف بعدم استخدام الخوادم التي أصدرها مقدمو الخدمة.

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" 

المذكرة. هذه هي واحدة من أسهل وأسرع الطرق للوصول إلى عناوين الشبكة المحلية مع عناوين 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 

المذكرة. يسمح ذلك للمستخدمين من LAN1 و LAN2 بالوصول من خلال IP خارجي (dstnat) إلى الخوادم الموجودة مع المستخدمين في نفس قطاع الشبكة.

2. في الواقع ، وتنفيذ multivans الصحيح


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

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

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



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

ملاحظة . في ROS ، يشار إلى تسميات "علامة التوجيه" في قسم Ip / Routes / Rules على أنه "جدول" ، وفي الأقسام المتبقية باسم "علامة التوجيه". قد يتسبب هذا في حدوث بعض الالتباس في الفهم ، ولكنه في الواقع واحد ونفس الشيء ، وهو تناظرية rt_tables في iproute2 على نظام التشغيل linux.

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 

المذكرة.
يكرر هؤلاء القراء الذين يحاولون حرفيًا وفي ترتيب القراءة الإعداد المقترح في المقالة ، عند إدخال الأمر الثالث ، سيواجهون الخطأ: "الإدخال لا يتطابق مع أي قيمة للواجهة". هذا بسبب عدم وجود واجهة "pppoe-isp3" ، والتي سيتم تهيئتها في القسم 3.3.2. في هذه المرحلة ، يمكنك إدخال "ether3" بدلاً من "pppoe-isp3". بعد الانتهاء من الفقرة 3.3.2 ، يجب عليك العودة ووضع الاسم الحالي للواجهة.

لكي لا أضع علامة على الاتصالات التي تم وضع علامة عليها بالفعل ، استخدم علامة حالة الاتصال = لا علامة بدلاً من حالة الاتصال = جديدة.

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

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

"Input Interface" => "Prerouting" => "قرار التوجيه" => "إعادة توجيه" => "نشر التوجيه" => "واجهة الإخراج" ووصلت إلى وجهتها على الشبكة المحلية.

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

"Input Interface" => "Prerouting" => "قرار التوجيه" => "إعادة توجيه" => "نشر التوجيه" => "واجهة الإخراج" فقط لطلب " واجهة الإدخال " كان هناك واجهة 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 بدون عنوان الوجهة لعناوين واجهة جهاز التوجيه نفسه.


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

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

! المهم ستذهب الإجابة على المسار التالي:

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

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 

نتيجةً لذلك ، يبدو مثل هذا (الصورة قابلة للنقر):



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 check-gateway=ping 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 

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

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

وضع قبل = 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 remove [ find gateway=\"4.2.2.2\" ]; /ip route remove \ [ find where dst-address ~\"4.2.2.2\" ]\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=10\r\ \n /ip route add check-gateway=ping 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\"\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 remove [ find gateway=\"4.2.2.2\" ]; /ip route remove \ [ find where dst-address ~\"4.2.2.2\" ]\r\ \n /ip firewall nat remove [find comment=\"NAT via ISP2\"]\r\ \n /ip route rule remove [find comment=\"From ISP2 IP to Inet\"]\r\ \n}\r\ \n" use-peer-dns=no use-peer-ntp=no 

البرنامج النصي نفسه في نافذة Winbox (قابل للنقر):


المذكرة. يتم تشغيل الجزء الأول من البرنامج النصي عند استلام عقد الإيجار بنجاح ، والجزء الثاني - بعد إصدار عقد الإيجار. انظر الملاحظة 2

3.3. نحن تكوين الاتصال بموفر ISP3.

نظرًا لأن مزود التهيئة يعطينا ديناميكية ، فمن المعقول إجراء التغييرات اللازمة مع البرامج النصية التي تبدأ بعد الارتفاع وبعد سقوط واجهة ppp.

المذكرة. يمكن تحديد واجهة ppp كبوابة بدلاً من عنوان IP. ومع ذلك ، في هذه الحالة ، لا يمكن تنشيط المسار العودية. لذلك ، نحصل على عنوان IP لجانب المزود في المتغير ونستخدمه بشكل أكبر بنفس الطريقة المتبعة مع الموفرين الآخرين

3.3.1. أولاً ، قم بتكوين ملف التعريف:

 /ppp profile add comment="for PPPoE to ISP3" interface-list=WAN name=isp3_client \ on-down="/ip route remove [ find gateway=\"4.2.2.3\" ]\r\ \n/ip route remove [ find where dst-address ~\"4.2.2.3\" ]\r\ \n/ip firewall nat remove [find comment=\"NAT via ISP3\"]\r\ \n/ip route rule remove [find comment=\"From ISP3 IP to Inet\"]" \ on-up="/ip route remove [ find gateway=\"4.2.2.3\" ]; /ip route remove \ [ find where dst-address ~\"4.2.2.3\" ]\r\ \n/ip route add check-gateway=ping comment=\"For recursion via ISP3\" distance=1 \ dst-address=4.2.2.3/32 gateway=\$\"remote-address\" scope=10\r\ \n/ip route add check-gateway=ping 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\"\r\ \n/ip route rule add comment=\"From ISP3 IP to Inet\" \ src-address=\$\"local-address\" table=to_isp3 " 

البرنامج النصي نفسه في نافذة Winbox (قابل للنقر):


المذكرة. صف
/ 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 


المذكرة. "ينسى" بعض الموفرين إعطاء المعلمة "عنوان بعيد". في هذه الحالة ، عند الاتصال ، لن يعمل البرنامج النصي للتكوين بشكل صحيح ، وفي السجل سترى الخطأ التالي:
pppoe ، ppp ، info pppoe-isp3: تعذر تحديد العنوان البعيد ، باستخدام xxx.xxx.xxx.xxx
لحل هذه المشكلة ، تحتاج إلى تعيين العنوان يدويًا في ملف تعريف ppp (أي دمية):
 /ppp profile set isp3_client remote-address=169.254.69.96 

صف
/ ip firewall mangle set [find comment = "Connmark in from ISP3"] in-interface = $ "interface"؛
يتيح لك معالجة إعادة تسمية الواجهة بشكل صحيح ، لأنها تعمل بكودها وليس مع اسم العرض.

كالمسة أخيرة ، اضبط الساعة:

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

بالنسبة لأولئك الذين يقرؤون حتى النهاية


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

الملاحظات


  1. Check-gateway — , . 10 , . , 20-30 . — Netwatch , .
    Check-gateway .

    ! , . check-gateway=ping .
  2. يحدث أن يحدث عطل في آلية تشغيل DHP ، والتي تبدو وكأنها عميل معلق في حالة تجديد. في هذه الحالة ، لن يعمل الجزء الثاني من البرنامج النصي ، ولكن لن تتأذى حركة المرور بشكل صحيح ، لأن الدولة تراقب المسار العودية المقابل.
  3. ECMP (مسار متعدد التكلفة متساوٍ) - تتمتع ROS بالقدرة على تحديد مسار مع عبّارات متعددة والمسافة نفسها. في هذه الحالة ، سيتم توزيع الاتصالات عبر القنوات باستخدام خوارزمية روبن المستديرة ، بما يتناسب مع عدد البوابات المحددة.

لحفز الزخم لكتابة المقال ، ساعد في تشكيل هيكله والتركيز - بفضل شخصية لـ Eugene @ jscar

Source: https://habr.com/ru/post/ar463813/


All Articles