Multivan kaj vojigo sur Mikrotik RouterOS

Enkonduko

Repreni la artikolon, krom vanteco, estis instigita de la malĝojiga ofteco de demandoj pri ĉi tiu temo en la profilgrupoj de la ruslingva telegrama komunumo. La artikolo celas komencantajn administrantojn de Mikrotik RouterOS (ĉi-poste nomataj ROS). Ĝi traktas nur la multkamioneton, kun emfazo de vojigo. Kiel gratifiko, ekzistas minimume sufiĉaj agordoj por certigi sekuran kaj oportunan funkciadon. Tiuj, kiuj serĉas malkaŝon de la temoj de atendovicoj, ŝarĝoekvilibro, vlanoj, pontoj, plurŝtupa profunda analizo de la stato de la kanalo kaj similaj - eble ne malŝparos tempon kaj penadon legante.

Fontaj datumoj

Kiel testobjekto, kvin-havena Mikrotik-enkursigilo kun ROS-versio 6.45.3 estis elektita. Ĝi direktos trafikon inter du lokaj retoj (LAN1 kaj LAN2) kaj tri provizantoj (ISP1, ISP2, ISP3). La kanalo al ISP1 havas senmovan "grizan" adreson, ISP2 - "blankan", akiritan per DHCP, ISP3 - "blankan" kun PPPoE-rajtigo. La koneksa diagramo estas montrita en la figuro:

Multivan kaj vojigo sur Mikrotik RouterOS

La tasko estas agordi la MTK-enkursigilon laŭ la skemo tiel ke:

  1. Provizu aŭtomatan ŝanĝadon al rezerva provizanto. La ĉefa provizanto estas ISP2, la unua rezervo estas ISP1, la dua rezervo estas ISP3.
  2. Organizu LAN1 retan aliron al Interreto nur per ISP1.
  3. Provizu la kapablon direkti trafikon de lokaj retoj al Interreto tra la elektita provizanto surbaze de la adreslisto.
  4. Provizu la eblecon publikigi servojn de la loka reto al la Interreto (DSTNAT)
  5. Agordu fajroŝirmilon por provizi la minimuman sufiĉan sekurecon de la Interreto.
  6. La enkursigilo povus elsendi sian propran trafikon per iu el la tri provizantoj, depende de la elektita fontadreso.
  7. Certigu, ke respondpakaĵoj estas direktitaj al la kanalo de kiu ili venis (inkluzive de LAN).

Komento. Ni agordos la enkursigilon "de nulo" por garantii la foreston de surprizoj en la komencaj agordoj "el la skatolo", kiuj ŝanĝas de versio al versio. Winbox estis elektita kiel agorda ilo, kie ŝanĝoj estos videble montrataj. La agordoj mem estos fiksitaj per komandoj en la Winbox-terminalo. La fizika konekto por agordo estas farita per rekta konekto al la interfaco Ether5.

Iom da rezonado pri tio, kio estas multikamioneto, ĉu ĝi estas problemo aŭ estas ruzaj inteligentaj homoj ĉirkaŭ teksado de konspiraj retoj

Sciema kaj atentema administranto, starigante tian aŭ similan skemon memstare, subite subite rimarkas, ke ĝi jam funkcias normale. Jes, jes, sen viaj kutimaj vojtabeloj kaj aliaj itineraj reguloj, kiuj plej multaj artikoloj pri ĉi tiu temo estas plenaj. Ni kontrolu?

Ĉu ni povas agordi adresadon sur interfacoj kaj defaŭltaj enirejoj? Jes:

Sur ISP1, la adreso kaj enirejo estis registritaj kun distanco=2 и check-gateway=ping.
Sur ISP2, la defaŭlta dhcp-kliento agordo - sekve, distanco estos egala al unu.
Sur ISP3 en la pppoe-kliento-agordoj kiam add-default-route=jes meti default-route-distance=3.

Ne forgesu registri NAT ĉe la eliro:

/ip fajroŝirmilo nat add action=masquerade chain=srcnat out-interface-list=WAN

Kiel rezulto, uzantoj de lokaj retejoj amuziĝas elŝutante katojn per la ĉefa ISP2-provizanto kaj ekzistas kanala rezervado uzante la mekanismon. kontroli enirejon Vidu noton 1

Punkto 1 de la tasko estas efektivigita. Kie estas la multivan kun siaj markoj? Ne…

Plue. Vi devas liberigi specifajn klientojn de la LAN per ISP1:

/ip firewall mangle add action=route chain=prerouting dst-address-list=!BOGONS
passthrough=jes route-dst=100.66.66.1 src-address-list=Per_ISP1
/ip firewall mangle add action=route chain=prerouting dst-address-list=!BOGONS
passthrough = neniu route-dst = 100.66.66.1 src-address = 192.168.88.0/24

Eroj 2 kaj 3 de la tasko estis efektivigitaj. Etikedoj, poŝtmarkoj, itineraj reguloj, kie vi estas?!

Ĉu vi bezonas doni aliron al via plej ŝatata OpenVPN-servilo kun la adreso 172.17.17.17 por klientoj de la Interreto? Bonvolu:

/ip cloud set ddns-enabled=jes

Kiel kunulo, ni donas al la kliento la eligrezulton: ":puti [ip-nubo akiri dns-nomon]"

Ni registras havenon plusendita de la Interreto:

/ip fajroŝirmilo nat add action=dst-nat ĉeno=dstnat dst-port=1194
in-interface-list=WAN-protokolo=udp-al-adresoj=172.17.17.17

Item 4 estas preta.

Ni starigis fajroŝirmilon kaj alian sekurecon por punkto 5, samtempe ni ĝojas, ke ĉio jam funkcias por uzantoj kaj atingas ujon kun plej ŝatata trinkaĵo ...
A! Tuneloj estas forgesitaj.

l2tp-client, agordita de gugla artikolo, altiĝis al via plej ŝatata nederlanda VDS? Jes.
l2tp-servilo kun IPsec altiĝis kaj klientoj per DNS-nomo de IP Cloud (vidu supre.) alkroĉiĝas? Jes.
Rekliniĝinte sur nia seĝo, trinkante trinkaĵon, ni pigre pripensas punktojn 6 kaj 7 de la tasko. Ni pensas - ĉu ni bezonas ĝin? Tamen ĝi funkcias tiel (c) ... Do, se ĝi ankoraŭ ne estas bezonata, do jen. Multivan efektivigita.

Kio estas multkamioneto? Ĉi tio estas la konekto de pluraj interretaj kanaloj al unu enkursigilo.

Vi ne devas legi la artikolon plu, ĉar kio povas esti tie krom montrado de dubinda aplikebleco?

Por tiuj, kiuj restas, kiuj interesiĝas pri punktoj 6 kaj 7 de la tasko, kaj ankaŭ sentas la jukon de perfektismo, ni plonĝas pli profunden.

La plej grava tasko efektivigi multivan estas la ĝusta trafika vojigo. Nome: sendepende de kiu (aŭ kiu) Vidu. notu 3 la kanalo(j) de la ISP rigardas la defaŭltan itineron sur nia enkursigilo, ĝi devus resendi respondon al la ĝusta kanalo el kiu venis la pako. La tasko estas klara. Kie estas la problemo? Efektive, en simpla loka reto, la tasko estas la sama, sed neniu ĝenas kun pliaj agordoj kaj ne sentas problemojn. La diferenco estas, ke ĉiu enrutigebla nodo en Interreto estas alirebla per ĉiu el niaj kanaloj, kaj ne per strikte specifa, kiel en simpla LAN. Kaj la "problemo" estas, ke se peto venis al ni por la IP-adreso de ISP3, tiam en nia kazo la respondo trairos la ISP2-kanalon, ĉar la defaŭlta enirejo estas direktita tien. Foriras kaj estos forĵetita de la provizanto kiel malĝusta. La problemo estis identigita. Kiel solvi ĝin?

La solvo estas dividita en tri etapoj:

  1. Antaŭagordado. En ĉi tiu etapo, la bazaj agordoj de la enkursigilo estos fiksitaj: loka reto, fajroŝirmilo, adreslistoj, harpinglo NAT, ktp.
  2. Multivan. En ĉi tiu etapo, la necesaj konektoj estos markitaj kaj ordigitaj en vojajn tabelojn.
  3. Konektante al ISP. En ĉi tiu etapo, la interfacoj, kiuj provizas konekton al la Interreto, estos agorditaj, vojigo kaj la rezervmekanismo de Interreta kanalo estos aktivigita.

1. Antaŭagordado

1.1. Ni purigas la agordon de la enkursigilo per la komando:

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

konsentas kun "Danĝera! Restarigi ĉiukaze? [j/N]:” kaj, post rekomenco, ni konektas kun Winbox per MAC. En ĉi tiu etapo, la agordo kaj uzantbazo estas purigitaj.

1.2. Kreu novan uzanton:

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

ensalutu sub ĝi kaj forigu la defaŭltan:

/user remove admin

Komento. Estas la forigo kaj ne malŝalto de la defaŭlta uzanto, kiun la aŭtoro konsideras pli sekura kaj rekomendas por uzo.

1.3. Ni kreas bazajn interfacajn listojn por la komforto funkcii en fajroŝirmilo, malkovraj agordoj kaj aliaj MAC-serviloj:

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

Subskribante interfacojn kun komentoj

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

kaj plenigu la interfacajn listojn:

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

Komento. Skribi kompreneblajn komentojn valoras la tempon pasigitan pri tio, kaj ĝi multe faciligas solvi problemojn kaj kompreni la agordon.

La aŭtoro opinias necesa, pro sekurecaj kialoj, aldoni la interfacon ether3 al la listo de interfaco "WAN", malgraŭ tio, ke la ip-protokolo ne trairos ĝin.

Ne forgesu, ke post kiam la interfaco PPP estas levita sur ether3, ĝi ankaŭ devos esti aldonita al la listo de interfaco "WAN"

1.4. Ni kaŝas la enkursigilon de najbara detekto kaj kontrolo de provizantaj retoj per 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. Ni kreas la minimuman sufiĉan aron de fajroŝirmilaj filtrilaj reguloj por protekti la enkursigilon:

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

(la regulo disponigas permeson por establitaj kaj rilataj ligoj kiuj estas iniciatitaj de kaj konektitaj retoj kaj la enkursigilo mem)

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

(ping kaj ne nur ping. Ĉiuj icmp estas permesitaj en. Tre utila por trovi MTU-problemojn)

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

(la regulo, kiu fermas la enigĉenon, malpermesas ĉion alian, kio venas de la Interreto)

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

(la regulo permesas establitajn kaj rilatajn ligojn kiuj pasas tra la enkursigilo)

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

(la regulo restarigas konektojn kun connection-state=nevalida trapasado de la enkursigilo. Ĝi estas forte rekomendita de Mikrotik, sed en kelkaj maloftaj situacioj ĝi povas bloki utilan trafikon)

/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

(la regulo malpermesas pakojn kiuj venas de la Interreto kaj ne pasis la dstnat proceduron por pasi tra la enkursigilo. Ĉi tio protektos lokajn retojn de entruduloj kiuj, estante en la sama dissenda domajno kun niaj eksteraj retoj, registros niajn eksterajn IP-ojn kiel enirejo kaj, tiel, provu "esplori" niajn lokajn retojn.)

Komento. Ni supozu, ke la retoj LAN1 kaj LAN2 estas fidindaj kaj la trafiko inter ili kaj de ili ne estas filtrita.

1.6. Kreu liston kun listo de ne-vojigeblaj retoj:

/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

(Ĉi tio estas listo de adresoj kaj retoj kiuj ne estas enireblaj al la Interreto kaj estos sekvataj laŭe.)

Komento. La listo estas ŝanĝebla, do mi konsilas al vi periode kontroli la gravecon.

1.7. Agordu DNS por la enkursigilo mem:

/ip dns set servers=1.1.1.1,8.8.8.8

Komento. En la nuna versio de ROS, dinamikaj serviloj havas prioritaton super senmovaj. La nomsolvopeto estas sendita al la unua servilo en ordo en la listo. La transiro al la sekva servilo estas farita kiam la nuna estas neatingebla. La tempodaŭro estas granda - pli ol 5 sekundoj. Reveno, kiam la "falinta servilo" rekomenciĝas, ne aŭtomate okazas. Konsiderante ĉi tiun algoritmon kaj la ĉeeston de multivan, la aŭtoro rekomendas ne uzi servilojn provizitajn de provizantoj.

1.8. Agordu lokan reton.
1.8.1. Ni agordas statikajn IP-adresojn sur LAN-interfacoj:

/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. Ni starigas la regulojn por itineroj al niaj lokaj retoj per la ĉefa envojiga tablo:

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

Komento. Ĉi tiu estas unu el la rapidaj kaj facilaj manieroj aliri LAN-adresojn kun fontoj de eksteraj IP-adresoj de enkursigilo-interfacoj, kiuj ne trairas la defaŭltan itineron.

1.8.3. Ebligu Harpinglon NAT por LAN1 kaj 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

Komento. Ĉi tio ebligas al vi aliri viajn rimedojn (dstnat) per ekstera IP estante ene de la reto.

2. Fakte, la efektivigo de la tre ĝusta multivan

Por solvi la problemon de "respondi de kie ili demandis", ni uzos du ROS-iloj: marko de konekto и vojmarko. marko de konekto permesas vin marki la deziratan konekton kaj poste labori kun ĉi tiu marko kiel kondiĉo por kandidatiĝi vojmarko. Kaj jam kun vojmarko eblas labori enen ip itinero и itineraj reguloj. Ni eltrovis la ilojn, nun vi devas decidi, kiujn konektojn marki - unufoje, precize kie marki - du.

Kun la unua, ĉio estas simpla - ni devas marki ĉiujn ligojn, kiuj venas al la enkursigilo de Interreto per la taŭga kanalo. En nia kazo, ĉi tiuj estos tri etikedoj (laŭ la nombro da kanaloj): "conn_isp1", "conn_isp2" kaj "conn_isp3".

La nuanco kun la dua estas, ke envenantaj konektoj estos de du tipoj: transito kaj tiuj, kiuj estas destinitaj por la enkursigilo mem. La mekanismo de konektomarko funkcias en la tabelo mangle. Konsideru la movon de la pakaĵo sur simpligita diagramo, afable kompilita de la specialistoj de la rimedo mikrotik-trainings.com (ne reklamado):

Multivan kaj vojigo sur Mikrotik RouterOS

Sekvante la sagojn, ni vidas, ke la pakaĵo alvenas al "eniga interfaco", iras tra la ĉeno "Antaŭvojigo"kaj nur tiam ĝi estas dividita en transiton kaj lokan en la bloko"Voja decido". Tial, por mortigi du birdojn per unu ŝtono, ni uzas Konekto Mark en la tablo Mangle Antaŭ-vojigo ĉenoj Antaŭvojigo.

Noto. En ROS, "Routing mark" etikedoj estas listigitaj kiel "Tablo" en la sekcio Ip/Routes/Rules, kaj kiel "Routing Mark" en aliaj sekcioj. Ĉi tio povas enkonduki iom da konfuzo en la komprenon, sed, fakte, ĉi tio estas la sama afero, kaj estas analogo de rt_tables en iproute2 en Linukso.

2.1. Ni markas venontajn konektojn de ĉiu el la provizantoj:

/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

Komento. Por ne marki jam markitajn konektojn, mi uzas la kondiĉon connection-mark=no-mark anstataŭ connection-state=new ĉar mi opinias, ke tio estas pli ĝusta, same kiel la malakcepton de faligi nevalidajn konektojn en la eniga filtrilo.


passthrough=ne - ĉar en ĉi tiu efektivigmetodo, remarko estas ekskludita kaj, por akceli, oni povas interrompi la listigon de reguloj post la unua matĉo.

Oni devas memori, ke ni ankoraŭ neniel enmiksiĝas kun enrutado. Nun ekzistas nur etapoj de preparado. La sekva etapo de efektivigo estos la prilaborado de transita trafiko, kiu revenas tra la establita konekto de la celloko en la loka reto. Tiuj. tiuj pakoj kiuj (vidu la diagramon) pasis tra la enkursigilo laŭ la vojo:

"Eniga Interfaco" => "Prerouting" => "Routing Decido" => "Antaŭen" => "Post Routing" => "Eliga Interfaco" kaj atingis ilian adresaton en la loka reto.

Grava! En ROS, ekzistas neniu logika divido en eksterajn kaj internajn interfacojn. Se ni spuras la vojon de la respondpakaĵo laŭ la supra diagramo, tiam ĝi sekvos la saman logikan vojon kiel la peto:

"Eniga Interfaco" => "Prerouting" => "Routing Decido" => "Antaŭen" => "Post Routing" => "Eliga Interfaco" nur por peto"Enigo-Interfaco” estis la ISP-interfaco, kaj por la respondo - LAN

2.2. Ni direktas respondan transittrafikon al la respondaj vojtabloj:

/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

Komento. in-interface-list=!WAN - ni laboras nur kun trafiko de la loka reto kaj dst-address-type=!local kiu ne havas la cel-adreson de la adreso de la interfacoj de la enkursigilo mem.

Same por lokaj pakaĵoj, kiuj venis al la enkursigilo survoje:

"Eniga Interfaco" => "Prerouting" => "Routing Decido" => "Enigo" => "Loka Procezo"

Grava! La respondo iros en la sekva maniero:

”Loka Procezo” => ”Decido pri Envojigo” =>”Eligo” =>”Post-Venigo” =>”Eliga Interfaco”

2.3. Ni direktas respondan lokan trafikon al la respondaj vojtabloj:

/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

En ĉi tiu etapo, la tasko prepari por sendi respondon al la interreta kanalo de kiu venis la peto povas esti konsiderata solvita. Ĉio estas markita, etikedita kaj preta por esti sendita.
Bonega "flanka" efiko de ĉi tiu aranĝo estas la kapablo labori kun DSNAT haven plusendado de ambaŭ (ISP2, ISP3) provizantoj samtempe. Tute ne, ĉar ĉe ISP1 ni havas ne-irtineblan adreson. Ĉi tiu efiko estas grava, ekzemple, por poŝtservilo kun du MX-oj, kiuj rigardas malsamajn interretajn kanalojn.

Por forigi la nuancojn de funkciado de lokaj retoj kun eksteraj IP-enkursigiloj, ni uzas la solvojn de alineoj. 1.8.2 kaj 3.1.2.6.

Krome, vi povas uzi ilon kun markoj por solvi paragrafon 3 de la problemo. Ni efektivigas ĝin jene:

2.4. Ni direktas trafikon de lokaj klientoj de la vojlistoj al la taŭgaj tabeloj:

/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

Kiel rezulto, ĝi aspektas kiel ĉi tio:

Multivan kaj vojigo sur Mikrotik RouterOS

3. Agordu konekton al la ISP kaj ebligu markan vojigon

3.1. Agordu konekton al ISP1:
3.1.1. Agordu statikan IP-adreson:

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

3.1.2. Agordu statikan vojigon:
3.1.2.1. Aldonu defaŭltan "kriz" itineron:

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

Komento. Ĉi tiu itinero permesas al trafiko de lokaj procezoj pasi la stadion de Route Decision, sendepende de la stato de la ligiloj de iuj el la provizantoj. La nuanco de elira loka trafiko estas, ke por ke la pakaĵeto moviĝu almenaŭ ien, la ĉefa vojtabelo devas havi aktivan itineron al la defaŭlta enirejo. Se ne, tiam la pakaĵo estos simple detruita.

Kiel ila etendo kontroli enirejon Por pli profunda analizo de la kanala stato, mi sugestas uzi la rekursivan itinermetodon. La esenco de la metodo estas, ke ni diras al la enkursigilo serĉi vojon al ĝia enirejo ne rekte, sed tra meza enirejo. 4.2.2.1, 4.2.2.2 kaj 4.2.2.3 estos elektitaj kiel tiaj "provaj" enirejoj por ISP1, ISP2 kaj ISP3 respektive.

3.1.2.2. Itinero al la "kontrola" adreso:

/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

Komento. Ni malaltigas la ampleksan valoron al la defaŭlta en ROS-cela amplekso por uzi 4.2.2.1 kiel rekursivan enirejon en la estonteco. Mi emfazas: la amplekso de la itinero al la "prova" adreso devas esti malpli ol aŭ egala al la cela amplekso de la itinero, kiu raportos al la testa.

3.1.2.3. Rekursiva defaŭlta itinero por trafiko sen vojmarko:

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

Komento. La valoro distance=2 estas uzata ĉar ISP1 estas deklarita kiel la unua sekurkopio laŭ la taskokondiĉoj.

3.1.2.4. Rekursiva defaŭlta itinero por trafiko kun vojmarko "to_isp1":

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

Komento. Efektive, ĉi tie ni finfine ekĝuas la fruktojn de la prepara laboro, kiu estis farita en paragrafo 2.


Sur ĉi tiu itinero, ĉiu trafiko, kiu havas la markan itineron "to_isp1" estos direktita al la enirejo de la unua provizanto, sendepende de kiu defaŭlta enirejo estas nuntempe aktiva por la ĉefa tablo.

3.1.2.5. Unua rezerva rekursiva defaŭlta itinero por ISP2 kaj ISP3 etikedita trafiko:

/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

Komento. Ĉi tiuj itineroj estas bezonataj, interalie, por rezervi trafikon de lokaj retoj kiuj estas membroj de la adreslisto “to_isp*”'

3.1.2.6. Ni registras la itineron por la loka trafiko de la enkursigilo al Interreto per ISP1:

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

Komento. Kombine kun la reguloj de paragrafo 1.8.2, ĝi disponigas aliron al la dezirata kanalo kun donita fonto. Ĉi tio estas kritika por konstrui tunelojn, kiuj specifas la lokan flankan IP-adreson (EoIP, IP-IP, GRE). Ĉar la reguloj en ip-vojaj reguloj estas ekzekutitaj de supre ĝis malsupre, ĝis la unua kongruo de la kondiĉoj, tiam ĉi tiu regulo devus esti post la reguloj de klaŭzo 1.8.2.

3.1.3. Ni registras la regulon NAT por elira trafiko:

/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

Komento. NATim ĉio, kio eliras, krom tio, kio eniras la IPsec-politikojn. Mi provas ne uzi action=masquerade krom se nepre necese. Ĝi estas pli malrapida kaj pli intensiva de rimedoj ol src-nat ĉar ĝi kalkulas la NAT-adreson por ĉiu nova konekto.

3.1.4. Ni sendas klientojn de la listo, kiuj estas malpermesitaj aliri tra aliaj provizantoj rekte al la enirejo de la provizanto 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

Komento. action=route havas pli altan prioritaton kaj estas aplikata antaŭ aliaj vojreguloj.


place-before=0 - metas nian regulon unue en la liston.

3.2. Agordu konekton al ISP2.

Ĉar la ISP2-provizanto donas al ni la agordojn per DHCP, estas racie fari la necesajn ŝanĝojn per skripto, kiu komenciĝas kiam la DHCP-kliento estas ekigita:

/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

La skripto mem en la Winbox fenestro:

Multivan kaj vojigo sur Mikrotik RouterOS
Komento. La unua parto de la skripto estas ekigita kiam la luo estas sukcese akirita, la dua - post kiam la luo estas liberigita.Vidu noton 2

3.3. Ni starigis konekton al la ISP3-provizanto.

Ĉar la provizanto de agordoj donas al ni dinamikan, estas racie fari la necesajn ŝanĝojn per skriptoj, kiuj komenciĝas post kiam la ppp-interfaco estas levita kaj post la falo.

3.3.1. Unue ni agordas la profilon:

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

La skripto mem en la Winbox fenestro:

Multivan kaj vojigo sur Mikrotik RouterOS
Komento. Linio
/ip fajroŝirmilo mangle set [trovu komenton = "Connmark in from ISP3"] in-interface = $ "interfaco";
permesas al vi ĝuste pritrakti la renomadon de la interfaco, ĉar ĝi funkcias kun ĝia kodo kaj ne la montra nomo.

3.3.2. Nun, uzante la profilon, kreu ppp-konekton:

/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

Kiel fina tuŝo, ni agordu la horloĝon:

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

Por tiuj, kiuj legas ĝis la fino

La proponita maniero efektivigi multivan estas la persona prefero de la aŭtoro kaj ne estas la sola ebla. La ilaro ROS estas ampleksa kaj fleksebla, kio, unuflanke, kaŭzas malfacilaĵojn por komencantoj, kaj, aliflanke, estas la kialo de ĝia populareco. Lernu, provu, malkovru novajn ilojn kaj solvojn. Ekzemple, kiel apliko de la akirita scio, eblas anstataŭigi la ilon en ĉi tiu efektivigo de la multivan check-gateway kun rekursivaj vojoj al netwatch.

Notoj

  1. check-gateway - mekanismo kiu ebligas al vi malaktivigi la itineron post du sinsekvaj malsukcesaj kontroloj de la enirejo por havebleco. La kontrolo estas farita unufoje ĉiujn 10 sekundojn, kaj plie la respondtempon. Entute, la reala ŝanĝa tempo kuŝas en la intervalo de 20-30 sekundoj. Se tia ŝanĝa tempo ne sufiĉas, ekzistas eblo uzi la ilon netwatch, kie la kontrola tempigilo povas esti agordita permane. check-gateway ne pafas sur intermita paka perdo sur la ligo.

    Grave! Malaktivigi ĉefan itineron malaktivigos ĉiujn aliajn itinerojn kiuj rilatas al ĝi. Tial, ke ili indiku check-gateway=ping ne necesas.

  2. Okazas, ke fiasko okazas en la DHCP-mekanismo, kiu aspektas kiel kliento blokita en la renoviga stato. En ĉi tiu kazo, la dua parto de la skripto ne funkcios, sed ĝi ne malhelpos trafikon ĝuste marŝi, ĉar la ŝtato spuras la respondan rekursivan itineron.
  3. ECMP (Egala Kosto-Pli Vojo) - en ROS eblas agordi itineron kun pluraj enirejoj kaj sama distanco. En ĉi tiu kazo, ligoj estos distribuitaj trans kanaloj uzante la cirkla-subskribolistan algoritmon, proporcie al la nombro da specifitaj enirejoj.

Por la impeto verki la artikolon, helpu formi ĝian strukturon kaj lokigon de supersignoj - persona dankemo al Evgeny @jscar

fonto: www.habr.com