Multivan è routing nantu à Mikrotik RouterOS

Introduzione

Piglià l'articulu, in più di a vanità, hè stata pruvucata da a freccia deprimente di e dumande nantu à questu tema in i gruppi di prufilu di a cumunità di telegramma russo. L'articulu hè destinatu à i principianti amministratori Mikrotik RouterOS (in seguitu chjamatu ROS). Si tratta solu di u multivan, cù un enfasi in routing. Cum'è un bonus, ci sò paràmetri minimamente sufficienti per assicurà un funziunamentu sicuru è còmode. Quelli chì cercanu a divulgazione di i temi di fila, equilibriu di carica, vlans, ponti, analisi prufonda multi-stage di u statu di u canali è simili - ùn pò micca perdi tempu è sforzu di lettura.

Dati iniziali

Cum'è un sughjettu di teste, hè statu sceltu un router Mikrotik à cinque porti cù a versione ROS 6.45.3. Aviarà u trafficu trà duie rete lucali (LAN1 è LAN2) è trè fornituri (ISP1, ISP2, ISP3). U canali à ISP1 hà un indirizzu "grigiu" staticu, ISP2 - "biancu", ottenutu via DHCP, ISP3 - "biancu" cù l'autorizazione PPPoE. U schema di cunnessione hè mostratu in a figura:

Multivan è routing nantu à Mikrotik RouterOS

U compitu hè di cunfigurà u router MTK basatu annantu à u schema per chì:

  1. Fornite un cambiamentu automaticu à un fornitore di salvezza. U fornitore principale hè ISP2, a prima riserva hè ISP1, a seconda riserva hè ISP3.
  2. Organizà l'accessu di a rete LAN1 à Internet solu attraversu ISP1.
  3. Fornite a capacità di indirizzà u trafficu da e rete lucali à Internet attraversu u fornitore sceltu basatu nantu à a lista di indirizzu.
  4. Fornite a pussibilità di publicà servizii da a reta lucale à Internet (DSTNAT)
  5. Configurate un filtru di firewall per furnisce a sicurità minima abbastanza da Internet.
  6. U router puderia emette u so propiu trafficu attraversu qualsiasi di i trè fornituri, secondu l'indirizzu fonte sceltu.
  7. Assicuratevi chì i pacchetti di risposta sò diretti à u canali da quale sò vinuti (cumpresa LAN).

Rimarche. Cunfiguremu u router "da zero" per assicurà l'assenza di sorprese in e cunfigurazioni di partenza "fora di scatula" chì cambianu da versione à versione. Winbox hè statu sceltu cum'è strumentu di cunfigurazione, induve i cambiamenti seranu visualmente visualizati. I paràmetri stessi seranu stabiliti da cumandamenti in u terminal Winbox. A cunnessione fisica per a cunfigurazione hè fatta da una cunnessione diretta à l'interfaccia Ether5.

Un pocu di ragiunamentu nantu à ciò chì hè un multivan, hè un prublema o sò persone intelligenti astuti intornu à tesse rete di cuspirazione

Un amministratore inquisitivu è attentu, chì stabilisce un tali o un schema simili per sè stessu, di colpu subitu capisce chì hè digià travagliatu nurmale. Iè, sì, senza e vostre tavule di routing persunalizati è altre regule di rotta, chì a maiò parte di l'articuli nantu à questu tema sò pieni. Cuntrollamu ?

Pudemu cunfigurà l'indirizzu nantu à l'interfacce è i gateway predeterminati? Iè:

In ISP1, l'indirizzu è u gateway sò stati registrati cù distanza = 2 и check-gateway = ping.
Nant'à l'ISP2, l'impostazione predefinita di u cliente dhcp - per quessa, a distanza serà uguale à unu.
In ISP3 in i paràmetri di u cliente pppoe quandu add-default-route = sì mette default-route-distance = 3.

Ùn vi scurdate di registrà NAT à l'uscita:

/ip firewall nat add action=masquerade chain=srcnat out-interface-list=WAN

In u risultatu, l'utilizatori di i siti lucali si divertenu à scaricà i misgi attraversu u principale fornitore ISP2 è ci hè una riservazione di canali cù u mecanismu. verificate u gateway Vede a nota 1

U puntu 1 di u compitu hè implementatu. Induve hè u multivan cù i so marchi ? Innò…

In più. Avete bisognu di liberà clienti specifichi da a LAN via ISP1:

/ip firewall mangle add action=route chain=prerouting dst-address-list=!BOGONS
passthrough = sì route-dst = 100.66.66.1 src-address-list = Via_ISP1
/ip firewall mangle add action=route chain=prerouting dst-address-list=!BOGONS
passthrough = senza route-dst = 100.66.66.1 src-address = 192.168.88.0/24

I punti 2 è 3 di u compitu sò stati implementati. Etichette, timbri, reguli di rotta, induve site ?!

Avete bisognu di dà accessu à u vostru servitore OpenVPN favuritu cù l'indirizzu 172.17.17.17 per i clienti da Internet? Per piacè:

/ip cloud set ddns-enabled=yes

Cum'è un pari, demu à u cliente u risultatu di output: ": put [ip cloud get dns-name]"

Avemu registratu u portu forwarding da Internet:

/ip firewall nat add action=dst-nat chain=dstnat dst-port=1194
in-interface-list=protokollu WAN=udp-indirizzi=172.17.17.17

L'articulu 4 hè prestu.

Avemu stallatu un firewall è altre sicurità per u puntu 5, à u stessu tempu simu felici chì tuttu hè digià travagliatu per l'utilizatori è ghjunghje à un cuntainer cù una bevanda preferita ...
A! I tunnelli sò scurdati.

l2tp-client, cunfiguratu da l'articulu di Google, hà risuscitatu à u vostru VDS Olandese preferitu? Iè.
l2tp-server cù IPsec hà risuscitatu è i clienti per nome DNS da IP Cloud (vede sopra.) Cling? Iè.
Appoggiati in daretu à a nostra sedia, beie un beie, cunsideremu pigramente i punti 6 è 7 di u compitu. Pensemu - avemu bisognu? Tuttu u listessu, funziona cusì (c) ... Allora, s'ellu ùn hè ancu necessariu, allora hè questu. Multivan implementatu.

Cosa hè un multivan? Questa hè a cunnessione di parechji canali Internet à un router.

Ùn avete micca à leghje l'articulu più, perchè ciò chì ci pò esse in più di un spettaculu d'applicabilità dubbiosa?

Per quelli chì fermanu, chì anu interessatu à i punti 6 è 7 di u compitu, è ancu sentenu u pruritu di u perfeccionismu, immersioni più in fondu.

U compitu più impurtante di implementà una multivan hè a strada di trafficu curretta. Vale à dì: a priscinniri di quale (o quale) Vede. nota 3 i canali di l'ISP guardanu a strada predeterminata nantu à u nostru router, duverebbe rinvià una risposta à u canali esattu da u pacchettu. U compitu hè chjaru. Induve hè u prublema? Infatti, in una reta locale simplice, u compitu hè u stessu, ma nimu ùn si preoccupa di paràmetri supplementari è ùn si senti micca prublemi. A diferenza hè chì ogni node routable in Internet hè accessibile per ognunu di i nostri canali, è micca per un strettu specificu, cum'è in una LAN simplice. È u "prublemu" hè chì se una dumanda hè ghjunta à noi per l'indirizzu IP di l'ISP3, allora in u nostru casu a risposta passerà per u canali ISP2, postu chì a porta predeterminata hè diretta quì. Lascia è serà scartatu da u fornitore cum'è sbagliatu. U prublema hè statu identificatu. Cumu risolve?

A suluzione hè divisa in trè fasi:

  1. Presetting. In questu stadiu, i paràmetri di basa di u router seranu stabiliti: rete locale, firewall, listi di indirizzu, hairpin NAT, etc.
  2. Multivan. In questu stadiu, i cunnessione necessarii seranu marcati è ordenati in tavule di routing.
  3. Cunnessione à un ISP. In questu stadiu, l'interfaccia chì furnisce a cunnessione à Internet serà cunfigurata, u routing è u mecanismu di riservazione di u canali Internet serà attivatu.

1. Presetting

1.1. Pulitemu a cunfigurazione di u router cù u cumandimu:

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

d'accordu cù "Periculu ! Resetta in ogni modu? [y/N]:” è, dopu à rebooting, ci cunnettamu cù Winbox via MAC. In questu stadiu, a cunfigurazione è a basa di l'utilizatori sò sbulicati.

1.2. Crea un novu utilizatore:

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

accede sottu è sguassate u predeterminatu:

/user remove admin

Rimarche. Hè a rimuzione è micca disattivazione di l'utilizatore predeterminatu chì l'autore cunsidereghja più sicuru è ricumanda per l'usu.

1.3. Creemu listi di l'interfaccia basica per a comodità di operare in un firewall, paràmetri di scuperta è altri servitori MAC:

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

Firma interfacce cù cumenti

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

è compie a lista di l'interfaccia:

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

Rimarche. Scrive cumenti comprensibili vale a pena u tempu passatu nantu à questu, in più facilita assai a risoluzione di prublemi è capisce a cunfigurazione.

L'autore cunsidereghja necessariu, per ragioni di sicurità, per aghjunghje l'interfaccia ether3 à a lista di l'interfaccia "WAN", malgradu u fattu chì u protokollu ip ùn passa micca.

Ùn vi scurdate micca chì dopu chì l'interfaccia PPP hè rialzata nantu à ether3, ci vole ancu esse aghjuntu à a lista di l'interfaccia "WAN"

1.4. Ocultemu u router da a rilevazione è u cuntrollu di u vicinatu da e rete di u fornitore via 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. Creemu l'inseme minimu di reguli di filtru di firewall per prutege u router:

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

(a regula furnisce l'autorizazione per e cunnessione stabilite è ligati chì sò iniziati da e reti cunnessi è da u router stessu)

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

(ping è micca solu ping. Tutti i icmp sò permessi. Moltu utile per truvà prublemi MTU)

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

(a regula chì chjude a catena di input pruibisce tuttu ciò chì vene da Internet)

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

(a regula permette cunnessione stabilite è cunnessi chì passanu per u router)

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

(a regula resetta e cunnessione cù cunnessione-state = invalidu chì passa per u router. Hè assai cunsigliatu da Mikrotik, ma in certi casi rari pò bluccà u trafficu utile)

/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

(a regula pruibisce i pacchetti chì venenu da Internet è ùn anu micca passatu a prucedura dstnat per passà per u router. Questu prutegerà e rete lucali da l'intrusi chì, essendu in u stessu duminiu di broadcast cù i nostri riti esterni, registrà i nostri IP esterni cum'è un gateway è, cusì, pruvate à "esplorà" e nostre rete lucali).

Rimarche. Assumimu chì e rete LAN1 è LAN2 sò fiducia è u trafficu trà elli è da elli ùn hè micca filtratu.

1.6. Crea una lista cù una lista di rete non-routable:

/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

(Questa hè una lista di indirizzi è rete chì ùn sò micca routable à l'Internet è serà seguitu in cunseguenza.)

Rimarche. A lista hè sottumessa à cambià, cusì vi cunsigliu per verificà periodicamente a pertinenza.

1.7. Configurate DNS per u router stessu:

/ip dns set servers=1.1.1.1,8.8.8.8

Rimarche. In a versione attuale di ROS, i servitori dinamichi anu a precedenza nantu à quelli statichi. A dumanda di risoluzione di nome hè mandata à u primu servitore in ordine in a lista. A transizione à u servitore prossimu hè realizatu quandu l'attuale ùn hè micca dispunibule. U timeout hè grande - più di 5 seconde. Riturnà in daretu, quandu u "servitore cadutu" hè ripigliatu, ùn hè micca automaticamente. Data stu algoritmu è a prisenza di un multivan, l'autore ricumandemu micca aduprà servitori furniti da i fornituri.

1.8. Stallà una reta lucale.
1.8.1. Configuremu l'indirizzi IP statichi nantu à l'interfacce 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. Avemu stabilitu e regule per e rotte à e nostre rete lucali attraversu a tabella di routing principale:

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

Rimarche. Questu hè unu di i modi rapidi è faciuli per accede à l'indirizzi LAN cù fonti di indirizzi IP esterni di l'interfaccia di router chì ùn passanu micca per a strada predeterminata.

1.8.3. Habilita Hairpin NAT per 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

Rimarche. Questu permette di accede à e vostre risorse (dstnat) via una IP esterna mentre esse in a reta.

2. In realtà, l'implementazione di u multivan assai currettu

Per risolve u prublema di "rispondi induve anu dumandatu", avemu aduprà dui strumenti ROS: marca di cunnessione и marca di rotta. marca di cunnessione permette di marcà a cunnessione desiderata è poi travaglià cù questa marca cum'è una cundizione per applicà marca di rotta. È digià cun marca di rotta pussibule di travaglià strada ip и regule di rotta. Avemu capitu l'arnesi, avà avete bisognu di decide chì cunnessione per marcà - una volta, esattamente induve marcà - dui.

Cù u primu, tuttu hè simplice - avemu da marcà tutte e cunnessione chì venenu à u router da Internet via u canali adattatu. In u nostru casu, questi seranu trè etichette (per u numeru di canali): "conn_isp1", "conn_isp2" è "conn_isp3".

A sfumatura cù u sicondu hè chì e cunnessione entrate seranu di dui tipi: transitu è ​​quelli chì sò destinati à u router stessu. U mecanismu di marca di cunnessione travaglia in a tavula mangle. Cunsiderate u muvimentu di u pacchettu nantu à un schema simplificatu, cumpilatu amablemente da i specialisti di a risorsa mikrotik-trainings.com (micca publicità):

Multivan è routing nantu à Mikrotik RouterOS

Dopu à e frecce, vedemu chì u pacchettu ghjunghjendu à "interfaccia di input", passa per a catena "Prerouting" è solu allora hè divisu in transitu è ​​lucali in u bloccu "Decisione di routing". Dunque, per tumbà dui acelli cù una petra, avemu usatu Marca di cunnessione in a tavula Mangle Pre-routing catene Prerouting.

Nota. In ROS, l'etichette "Routing mark" sò listate cum'è "Table" in a sezione Ip/Routes/Rules, è cum'è "Routing Mark" in altre sezioni. Questu pò intruduce una certa cunfusione in l'intelligenza, ma, in fattu, questu hè a stessa cosa, è hè un analogu di rt_tables in iproute2 in linux.

2.1. Marcamu e cunnessione entrate da ognunu di i fornituri:

/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

Rimarche. Per ùn marcà e cunnessione digià marcatu, aghju utilizatu a cunnessione-mark = no-mark condition invece di connection-state = new perchè pensu chì questu hè più currettu, è ancu u rifiutu di caduta di cunnessione invalida in u filtru di input.


passthrough = no - perchè in questu metudu di implementazione, a re-marcazione hè esclusa è, per accelerà, pudete interrompe l'enumerazione di e regule dopu a prima partita.

Si deve esse cunsideratu chì ùn avemu micca interferiscenu in ogni modu cù u routing. Avà ci sò solu tappe di preparazione. A prossima tappa di implementazione serà a trasfurmazioni di u trafficu di transitu chì torna nantu à a cunnessione stabilita da u destinazione in a reta lucale. Quelli. quelli pacchetti chì (vede u diagramma) passanu per u router in a strada:

"Interfaccia di input" => "Prerouting" => "Decisione di routing" => "Forward" => "Post Routing" => "Interfaccia di output" è arrivò à u so destinatariu in a reta lucale.

Impurtante! In ROS, ùn ci hè micca una divisione logica in interfacce esterni è interni. Se tracciamu u percorsu di u pacchettu di risposta secondu u diagramma sopra, allora seguirà a stessa strada logica cum'è a dumanda:

"Interfaccia di input" => "Prerouting" => "Decisione di routing" => "Forward" => "Post Routing" => "Interfaccia di output" solu per una dumanda "Interfaccia di Input" era l'interfaccia ISP, è per a risposta - LAN

2.2. Dirigemu u trafficu di transitu di risposta à e tavule di routing currispundenti:

/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

Cumentu. in-interface-list=!WAN - avemu travagliatu solu cù u trafficu da a reta lucale è dst-address-type=!local chì ùn hà micca l'indirizzu di destinazione di l'indirizzu di l'interfaccia di u router stessu.

U listessu per i pacchetti lucali chì sò ghjunti à u router in a strada:

"Interfaccia di input" => "Prerouting" => "Decisione di routing" => "Input" => "Processu lucale"

Impurtante! A risposta anderà in a manera seguente:

"Processu Locale" => "Decisione di Routing" => "Output" => "Post Routing" => "Interfaccia di Output"

2.3. Dirigemu u trafficu lucale di risposta à e tavule di routing currispundenti:

/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

À questu stadiu, u compitu di preparà per mandà una risposta à u canali Internet da quale hè vinutu a dumanda pò esse cunsideratu risolta. Tuttu hè marcatu, etichettatu è prontu per esse instradatu.
Un effettu "laterale" eccellente di sta stallazione hè a capacità di travaglià cù u portu di DSNAT da i dui fornituri (ISP2, ISP3) à u stessu tempu. Micca in tuttu, postu chì in ISP1 avemu un indirizzu non-routable. Stu effettu hè impurtante, per esempiu, per un servitore di mail cù dui MX chì vedenu diversi canali Internet.

Per eliminà e sfumature di u funziunamentu di e rete lucali cù routers IP esterni, usemu e suluzioni da i paragrafi. 1.8.2 è 3.1.2.6.

Inoltre, pudete aduprà un strumentu cù marcature per risolve u paragrafu 3 di u prublema. Implementemu cusì cusì:

2.4. Dirigemu u trafficu da i clienti lucali da e liste di routing à e tavule adatte:

/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

In u risultatu, pare qualcosa cum'è questu:

Multivan è routing nantu à Mikrotik RouterOS

3. Stallà una cunnessione à l'ISP è attivà routing marca

3.1. Configurate una cunnessione à ISP1:
3.1.1. Configurate un indirizzu IP staticu:

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

3.1.2. Configurate u routing staticu:
3.1.2.1. Aghjunghjite una strada "d'emergenza" predeterminata:

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

Rimarche. Questa strada permette u trafficu da i prucessi lucali per passà a tappa Route Decision, indipendentemente da u statu di i ligami di qualcunu di i fornituri. A sfumatura di u trafficu lucale in uscita hè chì per chì u pacchettu si move almenu in un locu, a tavola di routing principale deve avè una strada attiva à a porta predeterminata. Se no, allora u pacchettu serà simplicemente distruttu.

Cum'è una estensione di strumentu verificate u gateway Per una analisi più profonda di u statu di u canali, suggerisce aduprà u metudu di rotta recursiva. L'essenza di u metudu hè chì dicemu à u router per circà una strada à a so porta micca direttamente, ma attraversu una porta intermediata. 4.2.2.1, 4.2.2.2 è 4.2.2.3 seranu scelti cum'è tali gateway "test" per ISP1, ISP2 è ISP3 rispettivamente.

3.1.2.2. Percorsu à l'indirizzu di "verificazione":

/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

Rimarche. Bastamu u valore di u scopu à u predeterminatu in u scopu di destinazione ROS per utilizà 4.2.2.1 cum'è una porta recursiva in u futuru. Sottu: u scopu di a strada à l'indirizzu "test" deve esse menu o uguale à u scopu di destinazione di a strada chì si riferirà à a prova.

3.1.2.3. Percorsu predeterminatu recursive per u trafficu senza marca di routing:

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

Rimarche. U valore di distanza = 2 hè utilizatu perchè ISP1 hè dichjaratu cum'è a prima copia di salvezza secondu e cundizioni di u travagliu.

3.1.2.4. Ruta predeterminata recursiva per u trafficu cù a marca di routing "to_isp1":

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

Rimarche. In fatti, quì avemu principiatu infine à gode di i frutti di u travagliu preparatori chì hè statu realizatu in u paràgrafu 2.


In questa strada, tuttu u trafficu chì hà a marca di a strada "to_isp1" serà diretta à a porta di u primu fornitore, indipendentemente da quale a porta predeterminata hè attualmente attiva per a tavola principale.

3.1.2.5. Prima rotta predeterminata recursiva fallback per u trafficu tagged 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

Rimarche. Queste rotte sò necessarii, frà altre cose, per riservà u trafficu da e rete lucali chì sò membri di a lista di indirizzu "to_isp*"'

3.1.2.6. Registramu a strada per u trafficu lucale di u router à Internet attraversu ISP1:

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

Rimarche. In cumbinazione cù e regule da u paràgrafu 1.8.2, furnisce l'accessu à u canali desideratu cù una fonte data. Questu hè criticu per a custruzzione di tunnel chì specificanu l'indirizzu IP locale (EoIP, IP-IP, GRE). Siccomu i reguli in i règuli di a strada ip sò eseguiti da u cima à u fondu, finu à a prima partita di e cundizioni, allora sta regula deve esse dopu à e regule da a clause 1.8.2.

3.1.3. Registramu a regula NAT per u trafficu in uscita:

/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

Rimarche. NATim tuttu ciò chì esce, fora di ciò chì entra in e pulitiche IPsec. Pruvate micca d'utilizà action=masquerade, salvu micca assolutamente necessariu. Hè più lento è più intensivu di risorse cà src-nat perchè calcula l'indirizzu NAT per ogni nova cunnessione.

3.1.4. Mandemu i clienti da a lista chì sò pruibiti di accede à traversu altri fornituri direttamente à a porta di u fornitore 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

Rimarche. action=route hà una priorità più alta è hè appiicata prima di l'altri reguli di routing.


place-before=0 - mette a nostra regula prima in a lista.

3.2. Configurate una cunnessione à ISP2.

Siccomu u fornitore ISP2 ci dà i paràmetri via DHCP, hè ragionevule per fà i cambiamenti necessarii cù un script chì principia quandu u cliente DHCP hè attivatu:

/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

U script stessu in a finestra di Winbox:

Multivan è routing nantu à Mikrotik RouterOS
Rimarche. A prima parte di u script hè attivata quandu l'affittu hè ottenutu successu, a seconda - dopu chì l'affittu hè liberatu.Vede a nota 2

3.3. Avemu stabilitu una cunnessione cù u fornitore ISP3.

Siccomu u fornitore di paràmetri ci dà dinamica, hè raghjone per fà i cambiamenti necessarii cù scripts chì cumincianu dopu chì l'interfaccia ppp hè stata risuscitata è dopu a caduta.

3.3.1. Prima avemu cunfigurà u prufilu:

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

U script stessu in a finestra di Winbox:

Multivan è routing nantu à Mikrotik RouterOS
Rimarche. Linea
/ip firewall mangle set [truvà comment="Connmark in from ISP3"] in-interface = $"interfaccia";
permette di trattà currettamente a rinominazione di l'interfaccia, postu chì travaglia cù u so codice è micca u nome di visualizazione.

3.3.2. Avà, usendu u prufilu, crea una cunnessione 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

Cum'è un toccu finale, mettemu u clock:

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

Per quelli chì leghjenu finu à a fine

A manera pruposta di implementà una multivan hè a preferenza persunale di l'autore è ùn hè micca l'unicu pussibule. U toolkit ROS hè estensivu è flexible, chì, da una banda, causa difficultà per i principianti, è, da l'altra banda, hè u mutivu di a so popularità. Amparate, pruvate, scopre novi arnesi è suluzioni. Per esempiu, cum'è una applicazione di a cunniscenza acquistata, hè pussibule rimpiazzà l'uttellu in questa implementazione di u multivan check-gateway cù rotte recursive à netwatch.

Noti

  1. check-gateway - un mecanismu chì permette di disattivà a strada dopu à dui cuntrolli consecutivi senza successu di a porta di a dispunibilità. U cuntrollu hè realizatu una volta ogni 10 seconde, più u timeout di risposta. In u tutale, u timing di cambiamentu attuale si trova in u intervalu di 20-30 seconde. Se tali timing di cambiamentu ùn hè micca abbastanza, ci hè una opzione per utilizà l'uttellu netwatch, induve u timer di cuntrollu pò esse stallatu manualmente. check-gateway ùn spara micca nantu à a perdita di pacchetti intermittenti nantu à u ligame.

    Impurtante! A disattivazione di una strada primaria disattiverà tutte e altre rotte chì si riferite à questu. Dunque, per elli à specificà check-gateway = ping micca necessariu.

  2. Succece chì un fallimentu si trova in u mecanismu DHCP, chì pare un cliente stuck in u statu di rinnuvà. In questu casu, a seconda parte di u script ùn hà micca travagliatu, ma ùn impedisce micca u trafficu di marchjà currettamente, postu chì u statu traccia u percorsu recursive currispundente.
  3. ECMP (Equal Cost Multi-Path) - in ROS hè pussibule stabilisce una strada cù parechje gateway è a stessa distanza. In questu casu, e cunnessione seranu distribuite à traversu i canali utilizendu l'algoritmu round robin, in proporzione à u numeru di gateway specificate.

Per l'impetu à scrive l'articulu, aiuta à furmà a so struttura è a piazzamentu di accenti - gratitùdine persunale à Evgeny @jscar

Source: www.habr.com