मिकरोटिक राउटरओएस पर मल्टीवैन और रूटिंग

परिचय

घमंड के अलावा, मुझे रूसी भाषी टेलीग्राम समुदाय के विशेष समूहों में इस विषय पर प्रश्नों की निराशाजनक आवृत्ति द्वारा लेख लेने के लिए प्रेरित किया गया था। यह लेख मिकरोटिक राउटरओएस (इसके बाद आरओएस के रूप में संदर्भित) के नौसिखिए प्रशासकों के लिए लक्षित है। यह रूटिंग पर जोर देते हुए केवल मल्टीवैन पर विचार करता है। बोनस के रूप में, सुरक्षित और सुविधाजनक संचालन सुनिश्चित करने के लिए न्यूनतम पर्याप्त सेटिंग्स हैं। जो लोग क्यू, लोड बैलेंसिंग, वीएलएएन, ब्रिज, चैनल स्थिति के मल्टी-स्टेज गहन विश्लेषण और इसी तरह के विषयों पर चर्चा की तलाश में हैं, उन्हें पढ़ने में समय और प्रयास बर्बाद नहीं करना चाहिए।

कच्चा डेटा

आरओएस संस्करण 6.45.3 के साथ एक पांच-पोर्ट मिकरोटिक राउटर को परीक्षण विषय के रूप में चुना गया था। यह दो स्थानीय नेटवर्क (LAN1 और LAN2) और तीन प्रदाताओं (ISP1, ISP2, ISP3) के बीच ट्रैफ़िक को रूट करेगा। ISP1 के चैनल का एक स्थिर "ग्रे" पता है, ISP2 का DHCP के माध्यम से प्राप्त एक "सफ़ेद" पता है, ISP3 का PPPoE प्राधिकरण के साथ एक "सफ़ेद" पता है। कनेक्शन आरेख चित्र में दिखाया गया है:

मिकरोटिक राउटरओएस पर मल्टीवैन और रूटिंग

कार्य योजना के आधार पर "एमटीके" राउटर को कॉन्फ़िगर करना है ताकि:

  1. बैकअप प्रदाता पर स्वचालित स्विचिंग सुनिश्चित करें। मुख्य प्रदाता ISP2 है, पहला रिज़र्व ISP1 है, दूसरा रिज़र्व ISP3 है।
  2. इंटरनेट तक LAN1 नेटवर्क पहुंच को केवल ISP1 के माध्यम से व्यवस्थित करें।
  3. पता-सूची के आधार पर चयनित प्रदाता के माध्यम से स्थानीय नेटवर्क से इंटरनेट पर ट्रैफ़िक रूट करने की क्षमता प्रदान करें।
  4. स्थानीय नेटवर्क से इंटरनेट (डीएसटीएनएटी) पर सेवाएं प्रकाशित करने की क्षमता प्रदान करें
  5. न्यूनतम पर्याप्त इंटरनेट सुरक्षा सुनिश्चित करने के लिए फ़ायरवॉल फ़िल्टर कॉन्फ़िगर करें।
  6. राउटर चयनित स्रोत पते के आधार पर, तीन प्रदाताओं में से किसी के माध्यम से अपना ट्रैफ़िक जारी कर सकता है।
  7. सुनिश्चित करें कि प्रतिक्रिया पैकेट उसी चैनल पर रूट किए गए हैं जहां से वे आए थे (LAN सहित)।

नोट। हम राउटर को "स्क्रैच से" कॉन्फ़िगर करेंगे ताकि यह सुनिश्चित किया जा सके कि आउट-ऑफ़-द-बॉक्स शुरुआती कॉन्फ़िगरेशन में कोई आश्चर्य न हो जो संस्करण से संस्करण में बदलता है। विनबॉक्स को कॉन्फ़िगरेशन टूल के रूप में चुना गया है, जहां परिवर्तन दृश्यमान रूप से प्रदर्शित किए जाएंगे। सेटिंग्स स्वयं Winbox टर्मिनल में कमांड द्वारा निर्दिष्ट की जाएंगी। कॉन्फ़िगरेशन के लिए भौतिक कनेक्शन Ether5 इंटरफ़ेस से सीधे कनेक्शन द्वारा बनाया गया है।

मल्टीवैन क्या है, क्या यह कोई समस्या है या आसपास के चतुर चतुर लोग साजिशों का जाल बुन रहे हैं, इस पर थोड़ी चर्चा

एक जिज्ञासु और चौकस प्रशासक, स्वतंत्र रूप से ऐसी या इसी तरह की योजना स्थापित कर रहा है, अचानक उसे एहसास होता है कि यह वैसे भी ठीक काम करता है। हाँ, हाँ, इन कस्टम रूटिंग टेबलों और अन्य रूट नियमों के बिना, जिनसे इस विषय पर अधिकांश लेख भरे पड़े हैं। क्या हम जाँच करें?

क्या हम इंटरफेस और डिफ़ॉल्ट गेटवे पर एड्रेसिंग कॉन्फ़िगर कर सकते हैं? हाँ:

ISP1 पर हमने पता और गेटवे पंजीकृत किया दूरी=2 и चेक-गेटवे=पिंग.
ISP2 पर, डिफ़ॉल्ट dhcp क्लाइंट सेटिंग यह है कि दूरी एक के बराबर होगी।
Pppoe क्लाइंट सेटिंग्स में ISP3 पर जब जोड़ें-डिफ़ॉल्ट-मार्ग=हाँ रखना डिफ़ॉल्ट-मार्ग-दूरी=3.

आउटपुट पर NAT सेट करना न भूलें:

/आईपी फ़ायरवॉल नाट एक्शन जोड़ें = बहाना श्रृंखला = srcnat आउट-इंटरफ़ेस-सूची = WAN

परिणामस्वरूप, LAN उपयोगकर्ताओं को मुख्य ISP2 प्रदाता के माध्यम से कैट डाउनलोड करने में मज़ा आता है और एक तंत्र का उपयोग करके चैनल आरक्षण मिलता है गेटवे की जाँच करें नोट 1 देखें

कार्य का बिन्दु 1 क्रियान्वित किया जा चुका है। टैग सहित मल्टीवैन कहाँ है? नहीं…

आगे। आपको ISP1 के माध्यम से LAN से विशिष्ट क्लाइंट को रिलीज़ करने की आवश्यकता है:

/आईपी फ़ायरवॉल मैंगल एक्शन जोड़ें = रूट चेन = प्रीरूटिंग डीएसटी-एड्रेस-लिस्ट =! BOGONS
पासथ्रू=हाँ मार्ग-डीएसटी=100.66.66.1 स्रोत-पता-सूची=वाया_आईएसपी1
/आईपी फ़ायरवॉल मैंगल एक्शन जोड़ें = रूट चेन = प्रीरूटिंग डीएसटी-एड्रेस-लिस्ट =! BOGONS
पासथ्रू=कोई रूट-डीएसटी=100.66.66.1 स्रोत-पता=192.168.88.0/24

कार्य के बिन्दु 2 एवं 3 को क्रियान्वित किया जा चुका है। टैग, ब्रांड, मार्ग नियम, आप कहाँ हैं?!

क्या आपको इंटरनेट से ग्राहकों को 172.17.17.17 पते के साथ अपने पसंदीदा ओपनवीपीएन सर्वर तक पहुंच देने की आवश्यकता है? कृपया:

/आईपी क्लाउड सेट ddns-सक्षम = हाँ

हम ग्राहकों को एक सहकर्मी के रूप में आउटपुट परिणाम देते हैं: ":डालें [आईपी क्लाउड को डीएनएस-नाम मिलता है]"

हम इंटरनेट से पोर्ट फ़ॉरवर्डिंग पंजीकृत करते हैं:

/आईपी फ़ायरवॉल nat क्रिया जोड़ें=dst-nat श्रृंखला=dstnat dst-port=1194
इन-इंटरफ़ेस-सूची=WAN प्रोटोकॉल=udp से-पते=172.17.17.17

प्वाइंट 4 तैयार है.

हमने बिंदु 5 के लिए फ़ायरवॉल और अन्य सुरक्षा स्थापित की है, साथ ही हम खुश हैं कि सब कुछ पहले से ही उपयोगकर्ताओं के लिए काम कर रहा है और उनके पसंदीदा पेय के साथ कंटेनर तक पहुंच रहा है...
ए! सुरंगों को अभी भी भुला दिया गया है।

क्या Google पर खोजे गए आलेख के आधार पर कॉन्फ़िगर किया गया L2tp क्लाइंट आपके पसंदीदा डच VDS तक पहुंच गया है? हाँ।
IPsec वाला l2tp सर्वर चालू है और IP क्लाउड (ऊपर देखें) से DNS नाम का उपयोग करने वाले क्लाइंट कनेक्ट हो रहे हैं? हाँ।
कुर्सी पर पीछे झुककर, पेय पीते हुए, हम आलस्य से समस्या के बिंदु 6 और 7 पर विचार करते हैं। हम सोचते हैं - क्या हमें इसकी आवश्यकता है? यह अभी भी उसी तरह काम करता है (सी)... इसलिए यदि इसकी आवश्यकता नहीं है, तो बस इतना ही। मल्टीवैन लागू किया गया।

मल्टीवैन क्या है? यह कई इंटरनेट चैनलों को एक राउटर से जोड़ रहा है।

आपको बाकी लेख पढ़ने की ज़रूरत नहीं है, क्योंकि संदिग्ध प्रयोज्यता का दिखावा करने के अलावा और क्या हो सकता है?

जो लोग बचे हैं, जो कार्य के बिंदु 6 और 7 में रुचि रखते हैं, और पूर्णतावाद की खुजली भी महसूस करते हैं, आइए गहराई से जानें।

मल्टीवैन को लागू करने का सबसे महत्वपूर्ण कार्य सही ट्रैफ़िक रूटिंग है। अर्थात्: इससे कोई फर्क नहीं पड़ता कि कौन सा (या कौन सा) देखें। नोट 3 प्रदाता का चैनल हमारे राउटर पर डिफ़ॉल्ट रूट को देखता है, उसे ठीक उसी चैनल पर प्रतिक्रिया लौटानी चाहिए जहां से पैकेट आया था। कार्य स्पष्ट है. समस्या कहाँ है? आखिरकार, एक साधारण स्थानीय नेटवर्क में कार्य समान होता है, लेकिन कोई भी अतिरिक्त सेटिंग्स से परेशान नहीं होता है और परेशानी महसूस नहीं करता है। अंतर यह है कि इंटरनेट पर कोई भी रूट किया गया नोड हमारे प्रत्येक चैनल के माध्यम से पहुंच योग्य है, न कि किसी विशिष्ट चैनल के माध्यम से, जैसा कि एक साधारण LAN में होता है। और "परेशानी" यह है कि अगर हमें ISP3 के आईपी पते के लिए अनुरोध प्राप्त होता है, तो हमारे मामले में प्रतिक्रिया ISP2 चैनल के माध्यम से जाएगी, क्योंकि डिफ़ॉल्ट गेटवे वहां निर्देशित है। यह चला जाएगा और प्रदाता द्वारा गलत मानकर खारिज कर दिया जाएगा। हमने समस्या पर निर्णय ले लिया है. इसे कैसे हल करें?

हम समाधान को तीन चरणों में विभाजित करेंगे:

  1. पूर्व-सेटिंग. इस स्तर पर, राउटर की मूल सेटिंग्स सेट की जाएंगी: स्थानीय नेटवर्क, फ़ायरवॉल, पता सूचियां, हेयरपिन NAT, आदि।
  2. मल्टीवैन। इस स्तर पर, आवश्यक कनेक्शनों को चिह्नित किया जाएगा और रूटिंग तालिकाओं में क्रमबद्ध किया जाएगा।
  3. आईएसपी से कनेक्शन. इस स्तर पर, इंटरनेट कनेक्शन प्रदान करने वाले इंटरफेस को कॉन्फ़िगर किया जाएगा, रूटिंग और इंटरनेट चैनलों को आरक्षित करने के लिए तंत्र सक्रिय किया जाएगा।

1. पूर्व-सेटिंग

1.1. हम कमांड के साथ राउटर कॉन्फ़िगरेशन को साफ़ करते हैं:

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

हम इससे सहमत हैं"खतरनाक! फिर भी रीसेट करें? [Y n]:” और, रिबूट के बाद, हम मैक के माध्यम से विनबॉक्स से जुड़ते हैं। इस स्तर पर, कॉन्फ़िगरेशन और उपयोगकर्ता आधार साफ़ कर दिया जाता है।

1.2. एक नया उपयोगकर्ता बनाएं:

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

इसके अंतर्गत लॉगिन करें और डिफ़ॉल्ट को हटा दें:

/user remove admin

नोट। लेखक डिफ़ॉल्ट उपयोगकर्ता को अक्षम करने के बजाय हटाने को अधिक सुरक्षित मानता है और इसके उपयोग की अनुशंसा करता है।

1.3. हम फ़ायरवॉल, डिस्कवरी सेटिंग्स और अन्य मैक सर्वर में संचालन में आसानी के लिए बुनियादी इंटरफ़ेस सूचियाँ बनाते हैं:

/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"

नोट। स्पष्ट टिप्पणियाँ लिखना उस पर खर्च किए गए समय के लायक है, साथ ही यह समस्या निवारण और कॉन्फ़िगरेशन को समझने को बहुत आसान बनाता है।

लेखक सुरक्षा कारणों से, ईथर3 इंटरफ़ेस को "WAN" इंटरफ़ेस सूची में जोड़ना आवश्यक मानता है, इस तथ्य के बावजूद कि आईपी प्रोटोकॉल इस पर यात्रा नहीं करेगा।

यह न भूलें कि PPP इंटरफ़ेस को ether3 पर बढ़ाए जाने के बाद, इसे इंटरफ़ेस सूची "WAN" में भी जोड़ना होगा।

1.4. हम राउटर को मैक के माध्यम से प्रदाता नेटवर्क से पड़ोस का पता लगाने और नियंत्रण से छिपाते हैं:

/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

(पिंग और न केवल पिंग। इनपुट पर सभी आईसीएमपी की अनुमति है। एमटीयू के साथ समस्याओं का पता लगाने के लिए बहुत उपयोगी)

/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

(नियम राउटर से गुजरने वाले कनेक्शन-स्टेट=अमान्य के साथ कनेक्शन को रीसेट करता है। मिकरोटिक द्वारा इसकी अत्यधिक अनुशंसा की जाती है, लेकिन कुछ दुर्लभ स्थितियों में यह उपयोगी ट्रैफ़िक को अवरुद्ध कर सकता है)

/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 प्रक्रिया को पारित नहीं करता है। यह स्थानीय नेटवर्क को हमलावरों से बचाएगा, जो हमारे बाहरी नेटवर्क के साथ एक ही प्रसारण डोमेन में होने के कारण, हमारे बाहरी आईपी को एक के रूप में पंजीकृत करेंगे। गेटवे और इस प्रकार हमारे स्थानीय नेटवर्क का "अन्वेषण" करने का प्रयास करें)

नोट। आइए मान लें कि नेटवर्क 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 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"

नोट। यह राउटर इंटरफेस के बाहरी आईपी पते के स्रोतों के साथ स्थानीय नेटवर्क पते तक पहुंचने के सरल और तेज़ तरीकों में से एक है जिसके माध्यम से डिफ़ॉल्ट मार्ग नहीं जाता है।

1.8.3. LAN1 और LAN2 के लिए हेयरपिन NAT सक्षम करें:

/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) तक पहुंचने की अनुमति देता है।

2. दरअसल, उस बहुत ही सही मल्टीवैन का कार्यान्वयन

"जहां पूछा गया वहां उत्तर देना" की समस्या को हल करने के लिए हम दो आरओएस टूल का उपयोग करेंगे: कनेक्शन चिह्न и रूटिंग मार्क. कनेक्शन चिह्न आपको वांछित कनेक्शन को चिह्नित करने और बाद में आवेदन के लिए एक शर्त के रूप में इस चिह्न के साथ काम करने की अनुमति देता है रूटिंग मार्क. और पहले से ही साथ रूटिंग मार्क में काम करना संभव है आईपी ​​मार्ग и मार्ग नियम. हमने उपकरण सुलझा लिए हैं, अब हमें यह तय करना है कि किन कनेक्शनों को चिह्नित करना है - एक, कहां चिह्नित करना है - दो।

पहले वाले के साथ, सब कुछ सरल है - हमें उचित चैनल के माध्यम से इंटरनेट से राउटर पर आने वाले सभी कनेक्शनों को चिह्नित करना होगा। हमारे मामले में, ये तीन लेबल होंगे (चैनलों की संख्या के अनुसार): "conn_isp1", "conn_isp2" और "conn_isp3"।

दूसरे के साथ बारीकियां यह है कि आने वाले कनेक्शन दो प्रकार के होंगे: ट्रांज़िट और राउटर के लिए इच्छित कनेक्शन। कनेक्शन चिह्न तंत्र तालिका में कार्य करता है वध करना. आइए एक सरलीकृत आरेख पर पैकेज की गति को देखें, जिसे mikrotik-trainings.com (विज्ञापन नहीं) संसाधन के विशेषज्ञों द्वारा संकलित किया गया है:

मिकरोटिक राउटरओएस पर मल्टीवैन और रूटिंग

तीरों का अनुसरण करते हुए, हम देखते हैं कि पैकेट "पर आ रहा है"इनपुट इंटरफ़ेस", श्रृंखला के साथ चलता है"प्रीरूटिंग"और उसके बाद ही इसे ब्लॉक में पारगमन और स्थानीय में विभाजित किया गया है"रूटिंग निर्णय" इसलिए, एक तीर से दो शिकार करने के लिए हम इसका प्रयोग करेंगे कनेक्शन मार्क तालिका में मैंगल प्री-रूटिंग चेन प्रीरूटिंग.

टिप्पणी. आरओएस में, "रूटिंग मार्क्स" को आईपी/रूट्स/नियम अनुभाग में "टेबल" के रूप में और अन्य अनुभागों में "रूटिंग मार्क" के रूप में दर्शाया गया है। इससे समझने में कुछ भ्रम हो सकता है, लेकिन, संक्षेप में, यह एक ही बात है, और लिनक्स पर iproute2 में rt_tables का एक एनालॉग है।

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

नोट। पहले से चिह्नित कनेक्शनों को चिह्नित न करने के लिए, मैं कनेक्शन-स्टेट=नया के बजाय कनेक्शन-मार्क=नो-मार्क शर्त का उपयोग करता हूं क्योंकि मुझे लगता है कि यह अधिक सही है, साथ ही इनपुट फ़िल्टर में अमान्य कनेक्शन को छोड़ने से इनकार करता हूं।


पासथ्रू=नहीं - क्योंकि इस कार्यान्वयन विधि में पुन: लेबलिंग को बाहर रखा गया है और, गति बढ़ाने के लिए, आप पहले मिलान के बाद नियमों की खोज को बाधित कर सकते हैं।

यह ध्यान में रखना चाहिए कि हम अभी तक रूटिंग में किसी भी तरह से हस्तक्षेप नहीं कर रहे हैं। अभी सिर्फ तैयारी का दौर चल रहा है. कार्यान्वयन का अगला चरण पारगमन ट्रैफ़िक का प्रसंस्करण होगा जो स्थानीय नेटवर्क पर किसी गंतव्य से स्थापित कनेक्शन पर लौटता है। वे। वे पैकेट जो (आरेख देखें) पथ के साथ राउटर से होकर गुजरे:

“इनपुट इंटरफ़ेस”=>”प्रीरूटिंग”=>”रूटिंग निर्णय”=>”फॉरवर्ड”=>”पोस्ट रूटिंग”=>”आउटपुट इंटरफ़ेस” और स्थानीय नेटवर्क पर अपने गंतव्य तक पहुंच गए।

महत्वपूर्ण! आरओएस में बाहरी और आंतरिक इंटरफेस में कोई तार्किक विभाजन नहीं है। यदि आप उपरोक्त चित्र के अनुसार प्रतिक्रिया पैकेट का पथ ट्रेस करते हैं, तो यह अनुरोध के समान तार्किक पथ का अनुसरण करेगा:

“इनपुट इंटरफ़ेस”=>”प्रीरूटिंग”=>”रूटिंग निर्णय”=>”फॉरवर्ड”=>”पोस्ट रूटिंग”=>”आउटपुट इंटरफ़ेस” बस अनुरोध करने के लिए "इनपुट इंटरफ़ेस"वहाँ एक 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

इस स्तर पर, जिस इंटरनेट चैनल से अनुरोध आया है, उस पर प्रतिक्रिया भेजने की तैयारी का कार्य हल माना जा सकता है। हर चीज़ को टैग किया गया है, लेबल किया गया है और रूट करने के लिए तैयार है।
इस सेटअप का एक उत्कृष्ट "साइड" प्रभाव दोनों (ISP2, ISP3) प्रदाताओं से DSNAT पोर्ट को एक साथ अग्रेषित करने की क्षमता है। उन सभी पर नहीं, क्योंकि हमारे पास ISP1 पर कोई नियमित पता नहीं है। यह प्रभाव महत्वपूर्ण है, उदाहरण के लिए, दो एमएक्स वाले मेल सर्वर के लिए जो विभिन्न इंटरनेट चैनलों को देखता है।

बाहरी आईपी राउटर के साथ स्थानीय नेटवर्क के संचालन की बारीकियों को खत्म करने के लिए, हम पैराग्राफ से समाधान का उपयोग करते हैं। 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. आईएसपी से कनेक्शन स्थापित करें और ब्रांड द्वारा रूटिंग सक्षम करें

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 को क्रमशः आईएसपी1, आईएसपी2 और आईएसपी3 के लिए ऐसे "परीक्षण" गेटवे के रूप में चुना जाएगा।

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

नोट। दूरी = 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 के नियमों के संयोजन में, किसी दिए गए स्रोत के साथ वांछित चैनल तक पहुंच प्रदान की जाती है। यह सुरंगों के निर्माण के लिए महत्वपूर्ण है जिसमें स्थानीय साइड आईपी पता निर्दिष्ट है (ईओआईपी, आईपी-आईपी, जीआरई)। चूंकि आईपी रूट नियमों में नियम ऊपर से नीचे तक निष्पादित होते हैं, शर्तों के पहले मिलान तक, यह नियम खंड 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 नीतियों में आता है। मैं कोशिश करता हूं कि जब तक अत्यंत आवश्यक न हो, मैं 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

नोट। क्रिया = मार्ग की प्राथमिकता उच्च है और इसे अन्य रूटिंग नियमों से पहले लागू किया जाता है।


स्थान-पहले=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

विनबॉक्स विंडो में ही स्क्रिप्ट:

मिकरोटिक राउटरओएस पर मल्टीवैन और रूटिंग
नोट। स्क्रिप्ट का पहला भाग तब चालू होता है जब पट्टा सफलतापूर्वक प्राप्त हो जाता है, दूसरा - पट्टा जारी होने के बाद।नोट 2 देखें

3.3. ISP3 प्रदाता से कनेक्शन स्थापित करना।

चूंकि प्रदाता हमें गतिशील सेटिंग्स देता है, इसलिए स्क्रिप्ट का उपयोग करके आवश्यक परिवर्तन करना उचित है जो पीपीपी इंटरफ़ेस के बढ़ने के बाद और उसके गिरने के बाद शुरू होते हैं।

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"

विनबॉक्स विंडो में ही स्क्रिप्ट:

मिकरोटिक राउटरओएस पर मल्टीवैन और रूटिंग
नोट। रेखा
/आईपी फ़ायरवॉल मैंगल सेट [टिप्पणी ढूंढें = "आईएसपी3 से कॉनमार्क"] इन-इंटरफ़ेस=$"इंटरफ़ेस";
आपको इंटरफ़ेस का नाम बदलने को सही ढंग से संभालने की अनुमति देता है, क्योंकि यह अपने कोड के साथ काम करता है न कि डिस्प्ले नाम के साथ।

3.3.2. अब, प्रोफ़ाइल का उपयोग करके, हम एक पीपीपी कनेक्शन बनाते हैं:

/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

उन लोगों के लिए जो अंत तक पढ़ते हैं

मल्टीवैन को लागू करने की प्रस्तावित विधि लेखक की व्यक्तिगत प्राथमिकता है और यह एकमात्र संभव विधि नहीं है। आरओएस टूलकिट व्यापक और लचीला है, जो एक ओर, शुरुआती लोगों के लिए कठिनाइयों का कारण बनता है, और दूसरी ओर, इसकी लोकप्रियता का कारण है। अध्ययन करें, प्रयास करें, नए उपकरण और समाधान खोजें। उदाहरण के लिए, अर्जित ज्ञान के अनुप्रयोग के रूप में, आप इस मल्टीवैन कार्यान्वयन में टूल को प्रतिस्थापित कर सकते हैं चेक-गेटवे पुनरावर्ती मार्गों के साथ नेटवॉच.

नोट्स

  1. चेक-गेटवे - एक तंत्र जो आपको उपलब्धता के लिए गेटवे की लगातार दो असफल जांच के बाद एक मार्ग को निष्क्रिय करने की अनुमति देता है। जाँच हर 10 सेकंड में एक बार की जाती है, साथ ही प्रतिक्रिया समयबाह्य भी। कुल मिलाकर, वास्तविक स्विचिंग समय 20-30 सेकंड की सीमा में है। यदि यह स्विचिंग टाइमिंग पर्याप्त नहीं है, तो टूल का उपयोग करने का एक विकल्प है नेटवॉच, जहां चेक टाइमर को मैन्युअल रूप से सेट किया जा सकता है चेक-गेटवे यदि चैनल में आवधिक पैकेट हानि होती है तो यह काम नहीं करता है।

    महत्वपूर्ण! मुख्य मार्ग को निष्क्रिय करने में इसे संदर्भित करने वाले अन्य सभी मार्गों को निष्क्रिय करना शामिल है। इसलिए, उन्हें इंगित करने के लिए चेक-गेटवे=पिंग आवश्यक नहीं।

  2. ऐसा होता है कि डीएचसीपी तंत्र में विफलता होती है, जो ऐसा लगता है जैसे क्लाइंट नवीनीकरण स्थिति में रुका हुआ है। इस मामले में, स्क्रिप्ट का दूसरा भाग काम नहीं करेगा, लेकिन यह ट्रैफ़िक के सही प्रवाह में हस्तक्षेप नहीं करेगा, क्योंकि राज्य संबंधित पुनरावर्ती मार्ग को ट्रैक करता है।
  3. ईसीएमपी (समान लागत बहु-पथ) - आरओएस में कई गेटवे और समान दूरी के साथ एक मार्ग निर्धारित करना संभव है। इस मामले में, निर्दिष्ट गेटवे की संख्या के अनुपात में, राउंड रॉबिन एल्गोरिदम का उपयोग करके चैनलों में कनेक्शन वितरित किए जाएंगे।

लेख लिखने की प्रेरणा, इसकी संरचना बनाने और जोर देने में मदद के लिए - एवगेनी को व्यक्तिगत धन्यवाद @jscar

स्रोत: www.habr.com