Multivans un maršrutēšana uz Mikrotik RouterOS

Ievads

Uzņemties rakstu, papildus iedomībai, pamudināja nomācošais jautājumu biežums par šo tēmu krievvalodīgo telegrammu kopienas profilu grupās. Raksts ir paredzēts iesācējiem Mikrotik RouterOS (turpmāk tekstā ROS) administratoriem. Tas attiecas tikai uz multivenu, uzsvaru liekot uz maršrutēšanu. Kā bonuss ir minimāli pietiekami iestatījumi, lai nodrošinātu drošu un ērtu darbību. Tie, kas vēlas atklāt tēmas par rindām, slodzes balansēšanu, vlaniem, tiltiem, daudzpakāpju dziļu kanāla stāvokļa analīzi un tamlīdzīgi - var netērēt laiku un pūles lasīšanai.

Neapstrādāti dati

Kā testa subjekts tika izvēlēts piecu portu Mikrotik maršrutētājs ar ROS versiju 6.45.3. Tas maršrutēs trafiku starp diviem vietējiem tīkliem (LAN1 un LAN2) un trim pakalpojumu sniedzējiem (ISP1, ISP2, ISP3). Kanālam uz ISP1 ir statiska "pelēka" adrese, ISP2 - "balta", iegūta caur DHCP, ISP3 - "balta" ar PPPoE autorizāciju. Savienojuma shēma ir parādīta attēlā:

Multivans un maršrutēšana uz Mikrotik RouterOS

Uzdevums ir konfigurēt MTK maršrutētāju, pamatojoties uz shēmu, lai:

  1. Nodrošiniet automātisku pārslēgšanos uz rezerves nodrošinātāju. Galvenais nodrošinātājs ir ISP2, pirmā rezerve ir ISP1, otrā rezerve ir ISP3.
  2. Organizējiet LAN1 tīkla piekļuvi internetam tikai caur ISP1.
  3. Nodrošiniet iespēju maršrutēt trafiku no vietējiem tīkliem uz internetu, izmantojot atlasīto pakalpojumu sniedzēju, pamatojoties uz adrešu sarakstu.
  4. Nodrošiniet iespēju publicēt pakalpojumus no lokālā tīkla uz internetu (DSTNAT)
  5. Iestatiet ugunsmūra filtru, lai nodrošinātu minimālu pietiekamu drošību no interneta.
  6. Atkarībā no izvēlētās avota adreses maršrutētājs var nodrošināt savu trafiku, izmantojot jebkuru no trim pakalpojumu sniedzējiem.
  7. Nodrošiniet, lai atbildes paketes tiktu novirzītas uz kanālu, no kura tās nāca (ieskaitot LAN).

PIEZĪME. Mēs konfigurēsim maršrutētāju “no nulles”, lai garantētu pārsteigumu neesamību sākuma konfigurācijās “no kastes”, kas mainās no versijas uz versiju. Winbox tika izvēlēts kā konfigurācijas rīks, kurā izmaiņas tiks vizuāli attēlotas. Paši iestatījumi tiks iestatīti ar komandām Winbox terminālī. Fiziskais savienojums konfigurācijai tiek veikts, izmantojot tiešu savienojumu ar Ether5 interfeisu.

Nedaudz argumentācijas par to, kas ir multivens, vai tā ir problēma vai viltīgi gudri cilvēki auž sazvērestības tīklus

Ziņkārīgs un uzmanīgs administrators, patstāvīgi izveidojot šādu vai līdzīgu shēmu, pēkšņi saprot, ka tā jau darbojas normāli. Jā, jā, bez jūsu pielāgotajām maršrutēšanas tabulām un citiem maršruta noteikumiem, ar kuriem ir pilns vairums rakstu par šo tēmu. Pārbaudīsim?

Vai mēs varam konfigurēt adresēšanu saskarnēs un noklusējuma vārtejās? Jā:

ISP1 adrese un vārteja tika reģistrēta attālums=2 и check-gateway=ping.
ISP2 noklusējuma dhcp klienta iestatījums - attiecīgi attālums būs vienāds ar vienu.
ISP3 pppoe klienta iestatījumos, kad add-default-route=yes ielieciet default-route-distance=3.

Neaizmirstiet reģistrēt NAT pie izejas:

/ip ugunsmūris nat add action=masquerade chain=srcnat out-interface-list=WAN

Rezultātā vietējo vietņu lietotāji izklaidējas, lejupielādējot kaķus, izmantojot galveno ISP2 pakalpojumu sniedzēju, un tiek veikta kanālu rezervēšana, izmantojot mehānismu. pārbaudes vārteja Skatīt 1. piezīmi

Uzdevuma 1.punkts tiek īstenots. Kur ir multivens ar tā zīmēm? Nē…

Tālāk. Jums ir jāatbrīvo konkrēti klienti no LAN, izmantojot ISP1:

/ip ugunsmūra mangle pievienot darbība=maršruta ķēde=pirmsmaršrutēšana dst-address-list=!BOGONS
passthrough=yes route-dst=100.66.66.1 src-address-list=Via_ISP1
/ip ugunsmūra mangle pievienot darbība=maršruta ķēde=pirmsmaršrutēšana dst-address-list=!BOGONS
passthrough=nav maršruta-dst=100.66.66.1 src-address=192.168.88.0/24

Uzdevuma 2. un 3.punkts ir īstenots. Etiķetes, zīmogi, maršruta noteikumi, kur tu esi?!

Vai klientiem no interneta jāpiešķir piekļuve savam iecienītākajam OpenVPN serverim ar adresi 172.17.17.17? Lūdzu:

/ip mākoņa komplekts ddns-enabled=yes

Kā līdzinieks mēs sniedzam klientam izejas rezultātu: “:put [ip mākonis get dns-name]"

Mēs reģistrējam portu pāradresāciju no interneta:

/ip ugunsmūris nat pievienot darbība=dst-nat ķēde=dstnat dst-port=1194
in-interface-list=WAN protokols=udp to-addresses=172.17.17.17

4. punkts ir gatavs.

5. punktam uzstādām ugunsmūri un citu drošību, tajā pašā laikā priecājamies, ka lietotājiem jau viss strādā un ķeramies pie trauka ar iecienītāko dzērienu...
A! Tuneļi ir aizmirsti.

l2tp-client, kas konfigurēts pēc Google raksta, ir kļuvis par jūsu iecienītāko holandiešu VDS? Jā.
l2tp-serveris ar IPsec ir palielinājies un klienti pēc DNS nosaukuma no IP Cloud (skat. iepriekš) pieķeras? Jā.
Atspiedušies krēslā, malkojot dzērienu, laiski apsveram uzdevuma 6. un 7. punktu. Mēs domājam – vai mums to vajag? Tomēr tas darbojas šādi (c) ... Tātad, ja tas joprojām nav vajadzīgs, tad tas ir viss. Multivens ieviests.

Kas ir multivens? Tas ir vairāku interneta kanālu savienojums ar vienu maršrutētāju.

Raksts nav jālasa tālāk, jo kas gan var būt bez apšaubāmas pielietojamības izrādīšanas?

Tiem, kas palikuši, kurus interesē uzdevuma 6. un 7. punkts, kā arī jūt perfekcionisma niezi, nirtam dziļāk.

Vissvarīgākais multivena ieviešanas uzdevums ir pareiza satiksmes maršrutēšana. Proti: neatkarīgi no tā, kura (vai kura) Skat. 3. piezīme. ISP kanāls(-i) aplūko mūsu maršrutētāja noklusējuma maršrutu, tam vajadzētu atbildēt uz precīzu kanālu, no kura nāca pakete. Uzdevums skaidrs. Kur ir problēma? Patiešām, vienkāršā lokālajā tīklā uzdevums ir vienāds, taču neviens neuztraucas ar papildu iestatījumiem un nejūtas nepatikšanas. Atšķirība ir tāda, ka jebkurš maršrutējams mezgls internetā ir pieejams caur katru no mūsu kanāliem, nevis caur stingri noteiktu kanālu, kā vienkāršā LAN. Un “problēma” ir tāda, ka, ja mums tika saņemts pieprasījums pēc ISP3 IP adreses, tad mūsu gadījumā atbilde tiks sniegta caur ISP2 kanālu, jo tur ir novirzīta noklusējuma vārteja. Atstāj un pakalpojumu sniedzējs tos atmetīs kā nepareizu. Problēma ir apzināta. Kā to atrisināt?

Risinājums ir sadalīts trīs posmos:

  1. Iepriekšēja iestatīšana. Šajā posmā tiks iestatīti maršrutētāja pamata iestatījumi: vietējais tīkls, ugunsmūris, adrešu saraksti, matadata NAT utt.
  2. Multivans. Šajā posmā nepieciešamie savienojumi tiks atzīmēti un sakārtoti maršrutēšanas tabulās.
  3. Savienojuma izveide ar ISP. Šajā posmā tiks konfigurētas saskarnes, kas nodrošina savienojumu ar internetu, maršrutēšana un interneta kanālu rezervēšanas mehānisms.

1. Iepriekšēja iestatīšana

1.1. Mēs notīrām maršrutētāja konfigurāciju ar komandu:

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

piekrītu "Bīstami! Tik un tā atiestatīt? [y/N]:” un pēc pārstartēšanas mēs izveidojam savienojumu ar Winbox, izmantojot MAC. Šajā posmā tiek notīrīta konfigurācija un lietotāju bāze.

1.2. Izveidot jaunu lietotāju:

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

piesakieties zem tā un izdzēsiet noklusējuma:

/user remove admin

PIEZĪME. Autors uzskata par drošāku un iesaka lietot noklusējuma lietotāja noņemšanu un neatspējošanu.

1.3. Mēs izveidojam pamata interfeisu sarakstus, lai būtu ērtāk darboties ugunsmūrī, atklāšanas iestatījumos un citos MAC serveros:

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

Parakstīšanas saskarnes ar komentāriem

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

un aizpildiet saskarnes sarakstus:

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

PIEZĪME. Rakstot saprotamus komentārus, ir vērts tam veltīt laiku, turklāt tas ievērojami atvieglo problēmu novēršanu un konfigurācijas izpratni.

Autors uzskata par nepieciešamu drošības apsvērumu dēļ pievienot ether3 interfeisu “WAN” interfeisu sarakstam, neskatoties uz to, ka ip protokols tam neiet cauri.

Neaizmirstiet, ka pēc PPP interfeisa pacelšanas uz ether3 tas būs jāpievieno arī interfeisa sarakstam “WAN”

1.4. Mēs slēpjam maršrutētāju no apkārtnes noteikšanas un kontroles no pakalpojumu sniedzēju tīkliem, izmantojot 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. Mēs izveidojam minimāli pietiekamu ugunsmūra filtru noteikumu kopu, lai aizsargātu maršrutētāju:

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

(noteikums nodrošina atļauju izveidotiem un saistītiem savienojumiem, kas tiek uzsākti gan no savienotajiem tīkliem, gan no paša maršrutētāja)

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

(ping un ne tikai ping. Visi icmp ir atļauti. Ļoti noderīgi, lai atrastu MTU problēmas)

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

(noteikums, kas aizver ievades ķēdi, aizliedz visu pārējo, kas nāk no interneta)

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

(noteikums atļauj izveidotos un saistītos savienojumus, kas iet caur maršrutētāju)

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

(noteikums atiestata savienojumus ar savienojumu-state=invalid, kas iet caur maršrutētāju. Mikrotik to ļoti iesaka, taču dažās retās situācijās tas var bloķēt noderīgu trafiku)

/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

(noteikums aizliedz paketēm, kas nāk no interneta un nav izturējušas dstnat procedūru, iziet cauri maršrutētājam. Tas pasargās vietējos tīklus no iebrucējiem, kuri, atrodoties vienā apraides domēnā ar mūsu ārējiem tīkliem, reģistrēs mūsu ārējos IP kā vārteju un tādējādi mēģiniet “izpētīt” mūsu vietējos tīklus.)

PIEZĪME. Pieņemsim, ka tīkli LAN1 un LAN2 ir uzticami un satiksme starp tiem un no tiem netiek filtrēta.

1.6. Izveidojiet sarakstu ar nemaršrutējamo tīklu sarakstu:

/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

(Šis ir to adrešu un tīklu saraksts, kurus nevar novirzīt uz internetu, un tas tiks attiecīgi ievērots.)

PIEZĪME. Saraksts var tikt mainīts, tāpēc iesaku periodiski pārbaudīt atbilstību.

1.7. Iestatiet DNS pašam maršrutētājam:

/ip dns set servers=1.1.1.1,8.8.8.8

PIEZĪME. Pašreizējā ROS versijā dinamiskajiem serveriem ir prioritāte pār statiskajiem serveriem. Nosaukuma atrisināšanas pieprasījums tiek nosūtīts pirmajam serverim saraksta secībā. Pāreja uz nākamo serveri tiek veikta, ja pašreizējais nav pieejams. Taimauts ir liels - vairāk nekā 5 sekundes. Atgriešanās atpakaļ, kad tiek atsākts “kritušais serveris”, nenotiek automātiski. Ņemot vērā šo algoritmu un multivena klātbūtni, autors iesaka neizmantot pakalpojumu sniedzēju nodrošinātos serverus.

1.8. Iestatiet lokālo tīklu.
1.8.1. Mēs konfigurējam statiskās IP adreses LAN saskarnēs:

/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. Mēs iestatām noteikumus maršrutiem uz mūsu vietējiem tīkliem, izmantojot galveno maršrutēšanas tabulu:

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

PIEZĪME. Šis ir viens no ātrajiem un vienkāršajiem veidiem, kā piekļūt LAN adresēm, izmantojot maršrutētāju saskarņu ārējo IP adrešu avotus, kas neiet cauri noklusējuma maršrutam.

1.8.3. Iespējot matadata NAT LAN1 un 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

PIEZĪME. Tas ļauj piekļūt saviem resursiem (dstnat), izmantojot ārējo IP, atrodoties tīklā.

2. Patiesībā ļoti pareiza multivena ieviešana

Lai atrisinātu problēmu “atbildēt, no kurienes viņi jautāja”, mēs izmantosim divus ROS rīkus: savienojuma zīme и maršrutēšanas zīme. savienojuma zīme ļauj atzīmēt vajadzīgo savienojumu un pēc tam strādāt ar šo etiķeti kā nosacījumu pieteikšanai maršrutēšanas zīme. Un jau ar maršrutēšanas zīme iespējams strādāt ip maršruts и maršruta noteikumi. Mēs izdomājām rīkus, tagad jums ir jāizlemj, kurus savienojumus atzīmēt - vienu reizi, tieši kur atzīmēt - divus.

Ar pirmo viss ir vienkārši - mums ir jāatzīmē visi savienojumi, kas maršrutētājam nāk no interneta, izmantojot atbilstošo kanālu. Mūsu gadījumā tās būs trīs etiķetes (pēc kanālu skaita): “conn_isp1”, “conn_isp2” un “conn_isp3”.

Ar otro nianse ir tāda, ka ienākošie savienojumi būs divu veidu: tranzīts un tie, kas paredzēti pašam maršrutētājam. Savienojuma atzīmju mehānisms darbojas tabulā mangle. Apsveriet iepakojuma kustību vienkāršotā diagrammā, kuru laipni sastādījuši mikrotik-trainings.com resursa speciālisti (nevis reklāma):

Multivans un maršrutēšana uz Mikrotik RouterOS

Sekojot bultiņām, mēs redzam, ka pakete pienāk uz "ieejas interfeiss”, iet cauri ķēdei “Iepriekšēja maršrutēšanaun tikai pēc tam blokā tas tiek sadalīts tranzītā un vietējāLēmums par maršrutēšanu". Tāpēc, lai nogalinātu divus putnus ar vienu akmeni, mēs izmantojam Savienojuma atzīme tabulā Mangle Iepriekšēja maršrutēšana ķēdes Iepriekšēja maršrutēšana.

Piezīme:. ROS sadaļā “Maršruta atzīme” etiķetes ir norādītas kā “Tabula” sadaļā Ip/Routes/Rules un kā “Maršruta atzīme” citās sadaļās. Tas var radīt zināmu neskaidrību izpratnē, taču patiesībā tas ir viens un tas pats un ir rt_tables analogs iproute2 operētājsistēmā Linux.

2.1. Mēs atzīmējam ienākošos savienojumus no katra pakalpojumu sniedzēja:

/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

PIEZĪME. Lai neatzīmētu jau atzīmētos savienojumus, savienojuma-state=new vietā izmantoju nosacījumu connection-mark=no-mark, jo tas, manuprāt, ir pareizāk, kā arī nederīgu savienojumu noraidīšanu ievades filtrā.


passthrough=no - jo šajā ieviešanas metodē atkārtota atzīmēšana ir izslēgta, un, lai paātrinātu, jūs varat pārtraukt noteikumu uzskaitīšanu pēc pirmās spēles.

Jāpatur prātā, ka mēs pagaidām nekādā veidā neiejaucamies maršrutēšanas procesā. Tagad ir tikai sagatavošanās posmi. Nākamais ieviešanas posms būs tranzīta trafika apstrāde, kas atgriežas pa izveidoto savienojumu no galamērķa vietējā tīklā. Tie. tās paketes, kuras (skatiet diagrammu) ir izgājušas cauri maršrutētājam:

“Input Interface”=>”Prerouting”=>”Routing Decision”=>”Forward”=>”Post Routing”=>”Output Interface” un nokļuva pie adresāta vietējā tīklā.

Svarīgi! ROS nav loģiska iedalījuma ārējās un iekšējās saskarnēs. Ja mēs izsekojam atbildes paketes ceļu saskaņā ar iepriekš minēto diagrammu, tad tas sekos tādam pašam loģiskajam ceļam kā pieprasījums:

“Input Interface”=>”Prerouting”=>”Routing Decision”=>”Forward”=>”Post Routing”=>”Output Interface” tikai pēc pieprasījuma"ieejas Interface” bija ISP interfeiss, un atbildei - LAN

2.2. Mēs novirzām atbildes tranzīta trafiku uz attiecīgajām maršrutēšanas tabulām:

/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

komentēt. in-interface-list=!WAN - mēs strādājam tikai ar trafiku no lokālā tīkla un dst-address-type=!local, kam nav paša maršrutētāja saskarņu adreses galamērķa adreses.

Tas pats attiecas uz vietējām paketēm, kas maršrutētājā nonāca pa ceļam:

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

Svarīgi! Atbilde tiks sniegta šādā veidā:

”Local Process”=>”Routing Decision”=>”Output”=>”Post Routing”=>”Output Interface”

2.3. Mēs novirzām atbildes vietējo trafiku uz attiecīgajām maršrutēšanas tabulām:

/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

Šajā posmā uzdevumu sagatavot atbildi uz interneta kanālu, no kura saņemts pieprasījums, var uzskatīt par atrisinātu. Viss ir marķēts, marķēts un gatavs maršrutēšanai.
Lielisks šīs iestatīšanas "blakusefekts" ir iespēja vienlaikus strādāt ar DSNAT portu pārsūtīšanu no abiem (ISP2, ISP3) pakalpojumu sniedzējiem. Nebūt ne, jo ISP1 mums ir nemaršrutējama adrese. Šis efekts ir svarīgs, piemēram, pasta serverim ar diviem MX, kas skatās uz dažādiem interneta kanāliem.

Lai novērstu lokālo tīklu darbības nianses ar ārējiem IP maršrutētājiem, mēs izmantojam risinājumus no rindkopām. 1.8.2. un 3.1.2.6.

Turklāt, lai atrisinātu problēmas 3. punktu, varat izmantot rīku ar marķējumu. Mēs to īstenojam šādi:

2.4. Mēs novirzām trafiku no vietējiem klientiem no maršrutēšanas sarakstiem uz attiecīgajām tabulām:

/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

Rezultātā tas izskatās apmēram šādi:

Multivans un maršrutēšana uz Mikrotik RouterOS

3. Iestatiet savienojumu ar ISP un iespējojiet zīmola maršrutēšanu

3.1. Iestatiet savienojumu ar ISP1:
3.1.1. Konfigurējiet statisku IP adresi:

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

3.1.2. Statiskā maršrutēšanas iestatīšana:
3.1.2.1. Pievienojiet noklusējuma "avārijas" maršrutu:

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

PIEZĪME. Šis maršruts ļauj satiksmei no vietējiem procesiem iziet maršruta lēmuma posmu neatkarīgi no jebkura pakalpojumu sniedzēja saišu stāvokļa. Izejošās vietējās trafika nianse ir tāda, ka, lai pakete vismaz kaut kur pārvietotos, galvenajā maršrutēšanas tabulā ir jābūt aktīvam maršrutam uz noklusējuma vārteju. Ja nē, tad iepakojums tiks vienkārši iznīcināts.

Kā instrumenta paplašinājums pārbaudes vārteja Lai iegūtu dziļāku kanāla stāvokļa analīzi, es iesaku izmantot rekursīvā maršruta metodi. Metodes būtība ir tāda, ka mēs sakām maršrutētājam meklēt ceļu uz savu vārteju nevis tieši, bet caur starpvārteju. 4.2.2.1., 4.2.2.2. un 4.2.2.3. tiks atlasīti kā tādi "pārbaudes" vārti attiecīgi ISP1, ISP2 un ISP3.

3.1.2.2. Maršruts uz “verifikācijas” adresi:

/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

PIEZĪME. Mēs samazinām tvēruma vērtību līdz noklusējuma vērtībai ROS mērķa tvērumā, lai turpmāk izmantotu 4.2.2.1 kā rekursīvo vārteju. Es uzsveru: maršruta tvērumam uz “pārbaudes” adresi jābūt mazākam vai vienādam ar maršruta mērķa jomu, kas attieksies uz testa adresi.

3.1.2.3. Rekursīvs noklusējuma maršruts satiksmei bez maršruta atzīmes:

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

PIEZĪME. Vērtība distance=2 tiek izmantota, jo saskaņā ar uzdevuma nosacījumiem ISP1 ir deklarēts kā pirmais dublējums.

3.1.2.4. Rekursīvs noklusējuma maršruts satiksmei ar maršruta atzīmi “to_isp1”:

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

PIEZĪME. Patiesībā mēs beidzot sākam baudīt 2. punktā veiktā sagatavošanas darba augļus.


Šajā maršrutā visa satiksme, kurai ir atzīme maršruts “to_isp1”, tiks novirzīta uz pirmā pakalpojumu sniedzēja vārteju neatkarīgi no tā, kura noklusējuma vārteja pašlaik ir aktīva galvenajai tabulai.

3.1.2.5. Pirmais rezerves rekursīvais noklusējuma maršruts ISP2 un ISP3 marķētai trafikai:

/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

PIEZĪME. Šie maršruti, cita starpā, ir nepieciešami, lai rezervētu trafiku no vietējiem tīkliem, kas ir adrešu saraksta “to_isp*” dalībnieki.

3.1.2.6. Mēs reģistrējam maršrutu maršrutētāja vietējai trafikam uz internetu, izmantojot ISP1:

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

PIEZĪME. Apvienojumā ar 1.8.2. punkta noteikumiem tas nodrošina piekļuvi vēlamajam kanālam ar noteiktu avotu. Tas ir ļoti svarīgi, veidojot tuneļus, kas norāda vietējās puses IP adresi (EoIP, IP-IP, GRE). Tā kā ip maršruta noteikumos noteikumi tiek izpildīti no augšas uz leju, līdz pirmajai nosacījumu sakritībai, tad šim noteikumam jābūt aiz 1.8.2.punkta noteikumiem.

3.1.3. Mēs reģistrējam NAT noteikumu izejošajai trafikai:

/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

PIEZĪME. NATim visu, kas pazūd, izņemot to, kas tiek iekļauts IPsec politikās. Es cenšos neizmantot action=masquerade, ja vien tas nav absolūti nepieciešams. Tas ir lēnāks un resursietilpīgāks nekā src-nat, jo tas aprēķina NAT adresi katram jaunam savienojumam.

3.1.4. Mēs nosūtām klientus no saraksta, kuriem ir aizliegts piekļūt, izmantojot citus pakalpojumu sniedzējus, tieši uz ISP1 pakalpojumu sniedzēja vārteju.

/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

PIEZĪME. action=route ir augstāka prioritāte, un tā tiek piemērota pirms citiem maršrutēšanas noteikumiem.


place-befor=0 — mūsu kārtulu ievieto pirmajā sarakstā.

3.2. Iestatiet savienojumu ar ISP2.

Tā kā ISP2 pakalpojumu sniedzējs mums nodrošina iestatījumus, izmantojot DHCP, ir saprātīgi veikt nepieciešamās izmaiņas ar skriptu, kas sākas, kad tiek aktivizēts DHCP klients:

/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

Pats skripts Winbox logā:

Multivans un maršrutēšana uz Mikrotik RouterOS
PIEZĪME. Pirmā skripta daļa tiek iedarbināta, kad nomas līgums ir veiksmīgi iegūts, otrā - pēc nomas līguma atbrīvošanas.Skatīt 2. piezīmi

3.3. Mēs izveidojām savienojumu ar ISP3 pakalpojumu sniedzēju.

Tā kā iestatījumu nodrošinātājs mums nodrošina dinamisku, ir saprātīgi veikt nepieciešamās izmaiņas ar skriptiem, kas sākas pēc ppp interfeisa paaugstināšanas un pēc kritiena.

3.3.1. Vispirms mēs konfigurējam profilu:

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

Pats skripts Winbox logā:

Multivans un maršrutēšana uz Mikrotik RouterOS
PIEZĪME. String
/ip firewall mangle set [find comment="Connmark in from ISP3"] in-interface=$"interfeiss";
ļauj pareizi rīkoties ar saskarnes pārdēvēšanu, jo tas darbojas ar tā kodu, nevis parādāmo nosaukumu.

3.3.2. Tagad, izmantojot profilu, izveidojiet ppp savienojumu:

/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

Kā pēdējo pieskārienu iestatīsim pulksteni:

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

Tiem, kas izlasa līdz galam

Piedāvātais multivena ieviešanas veids ir autora personīgā izvēle, un tas nav vienīgais iespējamais. ROS rīku komplekts ir plašs un elastīgs, kas, no vienas puses, sagādā grūtības iesācējiem, un, no otras puses, ir tās popularitātes iemesls. Mācieties, izmēģiniet, atklājiet jaunus rīkus un risinājumus. Piemēram, kā iegūto zināšanu pielietojumu, ir iespējams nomainīt rīku šajā multivena realizācijā čeku vārteja ar rekursīviem maršrutiem uz tīkla pulkstenis.

piezīmes

  1. čeku vārteja - mehānisms, kas ļauj deaktivizēt maršrutu pēc divām secīgām neveiksmīgām vārtejas pieejamības pārbaudēm. Pārbaude tiek veikta reizi 10 sekundēs, kā arī atbildes noildze. Kopumā faktiskais pārslēgšanas laiks ir 20-30 sekunžu diapazonā. Ja šāds pārslēgšanas laiks nav pietiekams, ir iespēja izmantot rīku tīkla pulkstenis, kur pārbaudes taimeri var iestatīt manuāli. čeku vārteja neaktivizējas, ja saitē tiek zaudēts periodisks pakešu zudums.

    Svarīgs! Deaktivizējot primāro maršrutu, tiks deaktivizēti visi pārējie maršruti, kas uz to attiecas. Tāpēc viņiem precizēt check-gateway=ping nav nepieciešams.

  2. Gadās, ka DHCP mehānismā rodas kļūme, kas izskatās kā klients, kas iestrēdzis atjaunošanas stāvoklī. Šajā gadījumā skripta otrā daļa nedarbosies, taču tā netraucēs satiksmei pareizi staigāt, jo valsts izseko atbilstošo rekursīvo maršrutu.
  3. ECMP (Equal Cost Multi-Path) - ROS ir iespējams iestatīt maršrutu ar vairākiem vārtiem un vienādu attālumu. Šajā gadījumā savienojumi tiks sadalīti pa kanāliem, izmantojot apļveida algoritmu, proporcionāli norādīto vārteju skaitam.

Par stimulu raksta rakstīšanai, palīdzība tā struktūras veidošanā un akcentu izvietojumā - personīga pateicība Jevgeņijam @jscar

Avots: www.habr.com