Մուլտիվան և երթուղում Mikrotik RouterOS-ում

Ներածություն

Հոդվածն ընդունելը, ի լրումն ունայնության, դրդել է ռուսալեզու հեռագրային համայնքի պրոֆիլային խմբերում այս թեմայով հարցերի ճնշող հաճախականությունը: Հոդվածն ուղղված է Mikrotik RouterOS-ի (այսուհետ՝ ROS) սկսնակ ադմինիստրատորներին: Այն գործ ունի միայն մուլտիվանի հետ՝ շեշտը դնելով երթուղիների վրա: Որպես բոնուս, կան նվազագույն բավարար կարգավորումներ՝ անվտանգ և հարմարավետ աշխատանք ապահովելու համար: Նրանք, ովքեր փնտրում են հերթերի, բեռի հավասարակշռման, վլանների, կամուրջների, ալիքի վիճակի բազմափուլ խորը վերլուծության և նմանատիպ թեմաների բացահայտում, կարող են ժամանակ և ջանք չկորցնել կարդալով:

Նախնական տվյալներ

Որպես թեստային առարկա՝ ընտրվել է հինգ նավահանգիստ Mikrotik երթուղիչ ROS 6.45.3 տարբերակով: Այն կուղղորդի երթևեկությունը երկու տեղական ցանցերի (LAN1 և LAN2) և երեք մատակարարների (ISP1, ISP2, ISP3) միջև: ISP1-ի ալիքն ունի ստատիկ «մոխրագույն» հասցե, ISP2՝ «սպիտակ», ստացված DHCP-ի միջոցով, ISP3՝ «սպիտակ»՝ PPPoE թույլտվությամբ: Միացման դիագրամը ներկայացված է նկարում.

Մուլտիվան և երթուղում Mikrotik RouterOS-ում

Խնդիրն է կարգավորել MTK երթուղիչը սխեմայի հիման վրա այնպես, որ.

  1. Ապահովեք ավտոմատ անցում պահուստային մատակարարին: Հիմնական մատակարարը ISP2 է, առաջին ռեզերվը՝ ISP1, երկրորդ ռեզերվը՝ ISP3։
  2. Կազմակերպեք LAN1 ցանցի մուտք դեպի ինտերնետ միայն ISP1-ի միջոցով:
  3. Հասցեների ցանկի հիման վրա ընտրված մատակարարի միջոցով տեղական ցանցերից դեպի ինտերնետ երթևեկելու հնարավորություն տրամադրեք:
  4. Տրամադրել տեղական ցանցից ինտերնետ (DSTNAT) ծառայությունների հրապարակման հնարավորությունը
  5. Ստեղծեք firewall ֆիլտր՝ ապահովելու նվազագույն բավարար անվտանգություն ինտերնետից:
  6. Երթուղիչը կարող է թողարկել իր սեփական տրաֆիկը երեք պրովայդերներից որևէ մեկի միջոցով՝ կախված ընտրված աղբյուրի հասցեից:
  7. Համոզվեք, որ պատասխանների փաթեթները ուղղորդված են դեպի այն ալիքը, որտեղից նրանք եկել են (ներառյալ LAN):

Մեկնաբանություն. Մենք կկազմաձևենք երթուղիչը «զրոյից», որպեսզի երաշխավորենք անակնկալների բացակայությունը մեկնարկային կոնֆիգուրացիաներում, որոնք փոխվում են տարբերակից տարբերակ: Որպես կազմաձևման գործիք ընտրվել է Winbox-ը, որտեղ փոփոխությունները տեսողականորեն կցուցադրվեն: Պարամետրերն իրենք կսահմանվեն Winbox տերմինալի հրամաններով: Կազմաձևման համար ֆիզիկական կապն իրականացվում է Ether5 ինտերֆեյսի հետ ուղղակի կապի միջոցով:

Մի քիչ պատճառաբանել, թե ինչ է մուլտիվանը, դա խնդիր է, թե խորամանկ խելացի մարդիկ դավադրության ցանցեր են հյուսում:

Հետաքրքրասեր ու ուշադիր ադմինը, ինքնուրույն ստեղծելով նման կամ նմանատիպ սխեման, հանկարծ հասկանում է, որ այն արդեն նորմալ է աշխատում։ Այո, այո, առանց ձեր հատուկ երթուղային աղյուսակների և երթուղու այլ կանոնների, որոնցով լի են այս թեմայի հոդվածների մեծ մասը: Եկեք ստուգե՞նք:

Կարո՞ղ ենք կարգավորել հասցեավորումը միջերեսների և լռելյայն դարպասների վրա: Այո:

ISP1-ում հասցեն և դարպասը գրանցվել են հեռավորություն=2 и check-gateway=ping.
ISP2-ում լռելյայն dhcp հաճախորդի կարգավորումը, համապատասխանաբար, հեռավորությունը հավասար կլինի մեկի:
ISP3-ում pppoe հաճախորդի կարգավորումներում, երբ add-default-route=այո դնել default-route-distance=3.

Մի մոռացեք գրանցել NAT ելքի վրա.

/ip firewall nat ավելացնել գործողություն=դիմակահանդես շղթա=srcnat out-interface-list=WAN

Արդյունքում, տեղական կայքերի օգտատերերը զվարճանում են կատուներ ներբեռնելով հիմնական ISP2 մատակարարի միջոցով, և կա ալիքի ամրագրում մեխանիզմի միջոցով: ստուգեք դարպասը Տես ծանոթագրություն 1

Առաջադրանքի 1-ին կետը կատարվում է. Որտե՞ղ է մուլտիվանն իր նշաններով: Ոչ…

Հետագա. Դուք պետք է ազատեք հատուկ հաճախորդներ LAN-ից ISP1-ի միջոցով.

/ip firewall mangle add action=route chain=prerouting dst-address-list=!BOGONS
անցում=այո route-dst=100.66.66.1 src-address-list=Via_ISP1
/ip firewall mangle add action=route chain=prerouting dst-address-list=!BOGONS
անցում=առանց երթուղու-dst=100.66.66.1 src-հասցե=192.168.88.0/24

Առաջադրանքի 2-րդ և 3-րդ կետերը կատարված են. Պիտակներ, նամականիշներ, երթուղու կանոններ, որտեղ եք դուք:

Ուզո՞ւմ եք մուտք գործել ձեր սիրելի OpenVPN սերվեր 172.17.17.17 հասցեով ինտերնետից հաճախորդների համար: Խնդրում եմ.

/ip cloud set ddns-enabled=yes

Որպես գործընկեր, մենք հաճախորդին տալիս ենք արդյունքի արդյունքը.:դրել [ip cloud ստանալ dns-name]"

Մենք գրանցում ենք նավահանգիստների վերահասցեավորում ինտերնետից.

/ip firewall nat ավելացնել գործողություն=dst-nat chain=dstnat dst-port=1194
in-interface-list=WAN արձանագրություն=udp դեպի հասցեներ=172.17.17.17

4-րդ կետը պատրաստ է։

Մենք ստեղծեցինք firewall և այլ անվտանգություն 5-րդ կետի համար, միևնույն ժամանակ ուրախ ենք, որ ամեն ինչ արդեն աշխատում է օգտատերերի համար և հասնում ենք սիրելի ըմպելիքով կոնտեյների…
Ա! Թունելները մոռացված են.

l2tp-client-ը, որը կազմաձևված է google հոդվածի կողմից, հասել է ձեր սիրած հոլանդական VDS-ին: Այո՛։
IPsec-ով l2tp-սերվերը բարձրացել է, և IP Cloud-ից DNS անունով հաճախորդները (տես վերևում): Այո՛։
Հենվելով մեր աթոռին, խմիչք ըմպելով՝ ծուլորեն դիտարկում ենք առաջադրանքի 6-րդ և 7-րդ կետերը: Մտածում ենք՝ մեզ դա պե՞տք է։ Միեւնույն է, այդպես է աշխատում (գ) ... Ուրեմն, եթե դեռ պետք չէ, ուրեմն վերջ։ Multivan իրականացված.

Ի՞նչ է մուլտիվանը: Սա մի քանի ինտերնետային ալիքների միացումն է մեկ երթուղղիչին:

Դուք չունեք հաղորդագրություն փակցնելու համար անհրաժեշտ հոդվածը հետագայում կարդալ, քանի որ ի՞նչ կարող է լինել այնտեղ, բացի կասկածելի կիրառելիության ցուցադրությունից:

Նրանց համար, ովքեր մնում են, ովքեր հետաքրքրված են առաջադրանքի 6-րդ և 7-րդ կետերով, ինչպես նաև զգում են պերֆեկցիոնիզմի քորը, մենք ավելի խորն ենք սուզվում:

Մուլտիվանի ներդրման ամենակարևոր խնդիրը երթևեկության ճիշտ երթուղավորումն է: Այսինքն՝ անկախ նրանից, թե որից (կամ որից) Տե՛ս. Ծանոթագրություն 3 ISP-ի ալիք(ներ)ը նայում է մեր երթուղիչի լռելյայն երթուղուն, այն պետք է պատասխան տա այն ալիքին, որից ստացվել է փաթեթը: Խնդիրը պարզ է. Որտե՞ղ է խնդիրը։ Իրոք, պարզ տեղական ցանցում խնդիրը նույնն է, բայց ոչ ոք չի անհանգստացնում լրացուցիչ պարամետրերով և չի զգում անհանգստություն: Տարբերությունն այն է, որ ինտերնետի ցանկացած երթուղային հանգույց հասանելի է մեր յուրաքանչյուր ալիքով, այլ ոչ թե խիստ կոնկրետ, ինչպես պարզ LAN-ում: Եվ «դժբախտությունն» այն է, որ եթե մեզ մոտ հարցում է եկել ISP3-ի IP հասցեի համար, ապա մեր դեպքում պատասխանը կանցնի ISP2 ալիքով, քանի որ լռելյայն դարպասն ուղղված է այնտեղ: Հեռանում է և մատակարարի կողմից կհեռացվի որպես սխալ: Խնդիրը բացահայտված է. Ինչպե՞ս լուծել այն:

Լուծումը բաժանված է երեք փուլի.

  1. Նախադրում. Այս փուլում կսահմանվեն երթուղիչի հիմնական կարգավորումները՝ տեղական ցանց, firewall, հասցեների ցուցակներ, վարսահարդարիչ NAT և այլն:
  2. Multivan. Այս փուլում անհրաժեշտ կապերը կնշվեն և կդասավորվեն երթուղային աղյուսակների մեջ:
  3. Միացում ISP-ին: Այս փուլում կկազմաձևվեն ինտերֆեյսները, որոնք ապահովում են միացում ինտերնետին, կգործարկվեն երթուղիներ և կակտիվացվեն ինտերնետ կապուղիների ամրագրման մեխանիզմը։

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. Մենք ստեղծում ենք հիմնական ինտերֆեյսի ցուցակներ՝ firewall-ում, հայտնաբերման կարգավորումներում և այլ 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. Մենք ստեղծում ենք firewall-ի ֆիլտրի կանոնների նվազագույն բավարար փաթեթ՝ երթուղիչը պաշտպանելու համար.

/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

(կանոնը զրոյացնում է կապերը կապի վիճակով=անվավեր երթուղիչով անցնող: Այն խստորեն խորհուրդ է տրվում 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-ները որպես gateway և, այդպիսով, փորձեք «ուսումնասիրել» մեր տեղական ցանցերը:)

Մեկնաբանություն. Ենթադրենք, որ 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

Մեկնաբանություն. Սա թույլ է տալիս մուտք գործել ձեր ռեսուրսները (dstnat) արտաքին IP-ի միջոցով ցանցի ներսում գտնվելու ժամանակ:

2. Փաստորեն, շատ ճիշտ մուլտիվանի իրականացում

«Պատասխանելու, թե որտեղից են հարցրել» խնդիրը լուծելու համար մենք կօգտագործենք երկու ROS գործիք. կապի նշան и երթուղային նշան. կապի նշան թույլ է տալիս նշել ցանկալի կապը և այնուհետև աշխատել այս պիտակի հետ՝ որպես դիմելու պայման երթուղային նշան. Եվ արդեն հետ երթուղային նշան հնարավոր է աշխատել ip երթուղին и երթուղու կանոններ. Մենք պարզեցինք գործիքները, այժմ դուք պետք է որոշեք, թե որ կապերը նշեք՝ մեկ անգամ, կոնկրետ որտեղ նշեք՝ երկու:

Առաջինի հետ ամեն ինչ պարզ է. մենք պետք է նշենք բոլոր կապերը, որոնք երթուղիչին գալիս են ինտերնետից համապատասխան ալիքով: Մեր դեպքում դրանք կլինեն երեք պիտակներ (ըստ ալիքների քանակի՝ «conn_isp1», «conn_isp2» և «conn_isp3»:

Երկրորդի նրբությունն այն է, որ մուտքային կապերը կլինեն երկու տեսակի՝ տրանզիտ և նրանք, որոնք նախատեսված են հենց երթուղիչի համար: Միացման նշանի մեխանիզմը գործում է աղյուսակում մանգրով. Դիտարկենք փաթեթի շարժումը պարզեցված գծապատկերի վրա, որը սիրով կազմվել է mikrotik-trainings.com ռեսուրսի մասնագետների կողմից (ոչ գովազդ).

Մուլտիվան և երթուղում Mikrotik RouterOS-ում

Հետևելով սլաքներին՝ մենք տեսնում ենք, որ փաթեթը հասնում է «մուտք ինտերֆեյսը», անցնում է շղթայի միջով «Նախնական երթուղի«Եվ միայն դրանից հետո այն բաժանվում է տարանցիկ և տեղական բլոկում»Երթուղային որոշում«. Հետեւաբար, մեկ քարով երկու թռչուն սպանելու համար մենք օգտագործում ենք Միացման նշան սեղանին Mangle Pre-routing շղթաներ Նախնական երթուղի.

Նշում.. 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

Մեկնաբանություն. Որպեսզի չնշեմ արդեն նշված կապերը, ես օգտագործում եմ connection-mark=no-mark պայմանը Connect-state=new-ի փոխարեն, քանի որ կարծում եմ, որ սա ավելի ճիշտ է, ինչպես նաև մուտքագրման ֆիլտրում անվավեր միացումների մերժումը:


passthrough=no - քանի որ այս իրականացման մեթոդում վերանշանակումը բացառվում է, և արագացնելու համար կարող եք ընդհատել կանոնների թվարկումը առաջին խաղից հետո:

Պետք է նկատի ունենալ, որ դեռևս որևէ կերպ չենք միջամտում երթուղիներին։ Այժմ մնում են միայն նախապատրաստման փուլերը։ Իրականացման հաջորդ փուլը կլինի տարանցիկ երթևեկի մշակումը, որը վերադարձվում է հաստատված կապով տեղական ցանցի նպատակակետից: Նրանք. այն փաթեթները, որոնք (տես գծապատկերը) անցել են երթուղիչով ճանապարհին.

“Input Interface”=>”Prerouting”=>”Routing Decision”=>”Forward”=>”Post Routing”=>”Output Interface” և հասել են իրենց հասցեատիրոջը տեղական ցանցում:

Կարեւոր! ROS-ում չկա տրամաբանական բաժանում արտաքին և ներքին ինտերֆեյսների: Եթե ​​պատասխանի փաթեթի ուղին հետևենք վերը նշված գծապատկերի համաձայն, ապա այն կհետևի նույն տրամաբանական ճանապարհին, ինչ հարցումը.

“Input Interface”=>”Prerouting”=>”Routing Decision”=>”Forward”=>”Post Routing”=>”Output Interface” միայն խնդրանքով»Input 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”=>”Տեղական գործընթաց”

Կարեւոր! Պատասխանը կգնա հետևյալ կերպ.

«Տեղական գործընթաց»=>«Երթուղիների որոշում»=>«Ելք»=>«Հաղորդագրության երթուղում»=>«Ելքային ինտերֆեյս»

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-ում մենք ունենք չուղղվող հասցե: Այս էֆեկտը կարևոր է, օրինակ, փոստի սերվերի համար, որն ունի երկու 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

Արդյունքում, այն ունի հետևյալ տեսքը.

Մուլտիվան և երթուղում Mikrotik RouterOS-ում

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 կետերը կընտրվեն որպես այդպիսի «փորձարկման» դարպասներ համապատասխանաբար 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 քաղաքականության մեջ: Ես աշխատում եմ չօգտագործել գործողություն=դիմակահանդես, եթե խիստ անհրաժեշտ չէ: Այն ավելի դանդաղ է և ավելի շատ ռեսուրսներ է պահանջում, քան 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 պատուհանում.

Մուլտիվան և երթուղում 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 պատուհանում.

Մուլտիվան և երթուղում 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=ping ոչ անհրաժեշտ.

  2. Պատահում է, որ DHCP մեխանիզմում խափանում է տեղի ունենում, որը նման է նորացման վիճակում խրված հաճախորդի: Այս դեպքում սցենարի երկրորդ մասը չի աշխատի, բայց չի խանգարի երթեւեկությանը ճիշտ քայլել, քանի որ պետությունը հետեւում է համապատասխան ռեկուրսիվ երթուղուն։
  3. ECMP (Հավասար ծախսերի բազմաուղի) - ROS-ում հնարավոր է երթուղի սահմանել մի քանի դարպասներով և նույն հեռավորությամբ: Այս դեպքում միացումները կբաշխվեն ալիքների վրա՝ օգտագործելով կլոր ռոբին ալգորիթմը՝ նշված դարպասների քանակին համամասնորեն:

Հոդվածը գրելու խթանի համար օգնեք դրա կառուցվածքի ձևավորմանը և շեշտադրումների տեղադրմանը. անձնական երախտագիտություն Եվգենիին @jscar

Source: www.habr.com