Multivan i rutiranje na Mikrotik RouterOS

Uvod

Osim sujete, na članak me potaknula depresivna učestalost pitanja o ovoj temi u specijalizovanim grupama zajednice telegrama na ruskom govornom području. Članak je namijenjen početnicima administratorima Mikrotik RouterOS-a (u daljem tekstu ROS). Razmatra samo multivan vozila, s naglaskom na rutiranje. Kao bonus, postoje minimalno dovoljne postavke za siguran i praktičan rad. Oni koji traže raspravu o temama redova čekanja, balansiranja opterećenja, vlan-ova, mostova, višestepene dubinske analize stanja kanala i slično, možda neće gubiti vrijeme i trud čitajući.

Sirovi podaci

Mikrotik ruter sa pet portova sa ROS verzijom 6.45.3 odabran je kao ispitanik. Usmjerit će promet između dvije lokalne mreže (LAN1 i LAN2) i tri provajdera (ISP1, ISP2, ISP3). Kanal do ISP1 ima statičku “sivu” adresu, ISP2 ima “bijelu” adresu primljenu preko DHCP-a, ISP3 ima “bijelu” adresu sa PPPoE autorizacijom. Dijagram povezivanja je prikazan na slici:

Multivan i rutiranje na Mikrotik RouterOS

Zadatak je konfigurirati “MTK” ruter na osnovu šeme tako da:

  1. Osigurajte automatsko prebacivanje na provajdera rezervne kopije. Glavni provajder je ISP2, prva rezerva je ISP1, druga rezerva je ISP3.
  2. Organizirajte pristup LAN1 mreži na Internet samo preko ISP1.
  3. Omogućiti usmjeravanje saobraćaja sa lokalnih mreža na Internet preko odabranog provajdera na osnovu liste adresa.
  4. Pruža mogućnost objavljivanja usluga sa lokalne mreže na Internet (DSTNAT)
  5. Konfigurišite filter zaštitnog zida kako biste osigurali minimalno dovoljnu internet sigurnost.
  6. Ruter bi mogao osloboditi vlastiti promet preko bilo kojeg od tri provajdera, ovisno o odabranoj izvornoj adresi.
  7. Osigurajte da su paketi odgovora usmjereni na kanal s kojeg su došli (uključujući LAN).

Napomena. Usmjerivač ćemo konfigurirati "od nule" kako bismo osigurali da nema iznenađenja u početnim konfiguracijama koje se već iz kutije mijenjaju od verzije do verzije. Winbox je odabran kao alat za konfiguraciju, gdje će promjene biti vizualno prikazane. Same postavke će biti specificirane komandama u Winbox terminalu. Fizička konekcija za konfiguraciju se ostvaruje direktnim povezivanjem na Ether5 interfejs.

Mala rasprava o tome šta je multivan, da li je to problem ili lukavi pametnjakovi okolo pletu mrežu zavjera

Radoznali i pažljivi administrator, koji samostalno postavlja takvu ili sličnu shemu, odjednom odjednom shvati da ona ionako dobro funkcionira. Da, da, bez ovih prilagođenih tablica usmjeravanja i drugih pravila rute kojima je većina članaka na ovu temu puna. Hoćemo li provjeriti?

Možemo li konfigurirati adresiranje na interfejsima i zadanim gatewayima? da:

Na ISP1 smo registrovali adresu i gateway sa udaljenost=2 и check-gateway=ping.
Na ISP2, zadana postavka dhcp klijenta je da će udaljenost biti jednaka jedan.
Na ISP3 u postavkama pppoe klijenta kada add-default-route=yes staviti default-route-distance=3.

Ne zaboravite postaviti NAT na izlazu:

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

Kao rezultat toga, LAN korisnici se zabavljaju preuzimajući mačke preko glavnog ISP2 provajdera i imaju rezervaciju kanala koristeći mehanizam provjerite gateway Vidi napomenu 1

Tačka 1 zadatka je realizovana. Gdje je multivan sa oznakama? ne…

Dalje. Morate osloboditi određene klijente iz LAN-a putem ISP1:

/ip firewall mangle add action=route chain=prerouting dst-address-list=!BOGONS
passthrough=yes route-dst=100.66.66.1 src-address-list=Via_ISP1
/ip firewall mangle add action=route chain=prerouting dst-address-list=!BOGONS
prolaz=bez rute-dst=100.66.66.1 src-adresa=192.168.88.0/24

Tačke 2 i 3 zadatka su realizovane. Oznake, brendovi, pravila rute, gdje ste?!

Da li je potrebno da klijentima sa interneta date pristup svom omiljenom OpenVPN serveru sa adresom 172.17.17.17? molim:

/ip oblak postavljen ddns-enabled=yes

Klijentima dajemo izlazni rezultat kao ravnopravan: “:put [ip cloud get dns-name]"

Registriramo prosljeđivanje portova sa interneta:

/ip firewall nat add action=dst-nat chain=dstnat dst-port=1194
in-interface-list=WAN protokol=udp to-addresses=172.17.17.17

Tačka 4 je spremna.

Postavili smo firewall i ostalo osiguranje za tačku 5, ujedno nas raduje što sve već radi za korisnike i posežu za posudom sa njihovim omiljenim pićem...
A! Tuneli su još uvijek zaboravljeni.

Da li je l2tp klijent konfigurisan na osnovu guglanog članka postao vaš omiljeni holandski VDS? Da.
l2tp server sa IPsec-om je pokrenut i klijenti koji koriste DNS ime iz IP Cloud-a (vidi gore) se povezuju? Da.
Zavalivši se u fotelju, ispijajući piće, lijeno razmatramo tačke 6 i 7 problema. Razmišljamo – da li nam treba? I dalje tako funkcionira (c)… Pa ako nije potrebno, to je sve. Multivan implementiran.

Šta je multivan? Ovo je povezivanje nekoliko Internet kanala na jedan ruter.

Ne morate čitati ostatak članka, jer šta bi moglo biti osim pokazivanja sumnjive primjenjivosti?

Sa onima koji su ostali, koji su zainteresovani za tačke 6 i 7 zadatka, a takođe osećaju svrab perfekcionizma, zaronimo dublje.

Najvažniji zadatak implementacije multivan-a je ispravno usmjeravanje prometa. Naime: bez obzira u kojoj (ili kojoj) Vidi. Napomena 3 kanal(i) provajdera gleda na podrazumevanu rutu na našem ruteru, trebalo bi da vrati odgovor tačno na kanal sa kojeg je paket došao. Zadatak je jasan. Gdje je problem? Uostalom, u jednostavnoj lokalnoj mreži zadatak je isti, ali se nitko ne trudi s dodatnim postavkama i ne osjeća probleme. Razlika je u tome što je svakom rutiranom čvoru na Internetu dostupan svaki naš kanal, a ne preko jednog strogo određenog, kao u običnom LAN-u. A "problem" je u tome što ako smo primili zahtjev na IP adresu ISP3, onda će u našem slučaju odgovor ići kroz ISP2 kanal, budući da je default gateway tamo usmjeren. To će nestati i dobavljač će ga odbaciti kao netačan. Problem je riješen. Kako to riješiti?

Rješenje ćemo podijeliti u tri faze:

  1. Presetting. U ovoj fazi će se postaviti osnovne postavke rutera: lokalna mreža, firewall, liste adresa, ukosnica NAT, itd.
  2. Multivan. U ovoj fazi, potrebne veze će biti označene i razvrstane u tablice rutiranja.
  3. Veza sa ISP-om. U ovoj fazi će se konfigurisati interfejsi koji omogućavaju internet konekciju, aktiviraće se rutiranje i mehanizam za rezervaciju Internet kanala.

1. Prethodno podešavanje

1.1. Brišemo konfiguraciju rutera naredbom:

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

slažemo se sa “Opasno! Svejedno resetirati? [y/N]:” i, nakon ponovnog pokretanja, povezujemo se sa Winboxom preko MAC-a. U ovoj fazi se brišu konfiguracija i korisnička baza.

1.2. Kreirajte novog korisnika:

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

Prijavite se pod njim i izbrišite podrazumevani:

/user remove admin

Napomena. Autor smatra da je brisanje umjesto onemogućavanja zadanog korisnika sigurnije i preporučuje njegovu upotrebu.

1.3. Kreiramo osnovne liste interfejsa radi lakšeg rada u firewall-u, postavkama otkrivanja i drugim MAC serverima:

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

Potpisivanje interfejsa sa komentarima

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

i ispunite liste interfejsa:

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

Napomena. Pisanje jasnih komentara je vrijedno vremena utrošenog na to, plus to olakšava rješavanje problema i razumijevanje konfiguracije.

Autor smatra da je neophodno, iz sigurnosnih razloga, dodati ether3 interfejs na listu “WAN” interfejsa, uprkos činjenici da IP protokol neće putovati preko njega.

Ne zaboravite da nakon što se PPP sučelje podigne na ether3, morat će se dodati i na listu interfejsa „WAN“

1.4. Skrivamo ruter od otkrivanja susjedstva i kontrole od mreža provajdera putem MAC-a:

/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. Kreiramo minimalan dovoljan skup pravila filtera firewall-a za zaštitu rutera:

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

(pravilo daje dozvolu za uspostavljene i povezane veze koje se iniciraju i iz povezanih mreža i od samog rutera)

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

(ping a ne samo ping. Svi icmp su dozvoljeni na ulazu. Vrlo korisno za pronalaženje problema sa MTU)

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

(pravilo koje zatvara ulazni lanac zabranjuje sve ostalo što dolazi sa interneta)

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

(pravilo dozvoljava uspostavljene i povezane veze koje prolaze kroz ruter)

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

(pravilo resetuje veze sa connection-state=invalid prolazeći kroz ruter. Mikrotik ga preporučuje, ali u nekim retkim situacijama može blokirati koristan saobraćaj)

/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

(pravilo zabranjuje da paketi koji dolaze sa interneta prolaze kroz ruter i nisu prošli dstnat proceduru. Ovo će zaštititi lokalne mreže od napadača koji će, budući da su u istom domenu emitovanja sa našim eksternim mrežama, registrovati naše eksterne IP adrese kao gateway i tako pokušajte „istražiti“ naše lokalne mreže.)

Napomena. Pretpostavimo da su mreže LAN1 i LAN2 pouzdane i da se promet između njih i iz njih ne filtrira.

1.6. Kreiramo listu sa listom mreža koje se ne mogu usmjeravati:

/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

(Ovo je lista adresa i mreža koje nisu preusmjerene na Internet i, shodno tome, mi ćemo to također pratiti.)

Napomena. Lista se može promijeniti, pa vam savjetujem da povremeno provjeravate relevantnost.

1.7. Konfigurišemo DNS za sam ruter:

/ip dns set servers=1.1.1.1,8.8.8.8

Napomena. U trenutnoj verziji ROS-a, dinamički serveri imaju prednost nad statički definiranim. Zahtjev za rješavanje imena šalje se prvom serveru po redoslijedu na listi. Prijelaz na sljedeći server se vrši ako je trenutni nedostupan. Vremensko ograničenje je dugo - više od 5 sekundi. Vraćanje nazad kada se nastavi „srušeni server“ ne dešava se automatski. Uzimajući u obzir ovaj algoritam i prisustvo multivan-a, autor preporučuje da se ne koriste serveri koje pružaju provajderi.

1.8. Postavljanje lokalne mreže.
1.8.1. Konfiguriramo statičke IP adrese na sučeljima lokalne mreže:

/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. Postavljamo pravila rute do naših lokalnih mreža kroz glavnu tablicu rutiranja:

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

Napomena. Ovo je jedan od jednostavnih i brzih načina pristupa lokalnim mrežnim adresama sa izvorima eksternih IP adresa sučelja rutera kroz koje ne prolazi zadana ruta.

1.8.3. Omogućite Hairpin NAT za LAN1 i 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

Napomena. Ovo vam omogućava da pristupite vašim resursima (dstnat) putem eksterne IP adrese dok ste unutar mreže.

2. Zapravo, implementacija tog vrlo korektnog multivana

Da bismo riješili problem “odgovaranja na pitanje” koristit ćemo dva ROS alata: oznaka veze и oznaka rute. oznaka veze omogućava vam da označite željenu vezu i naknadno radite sa ovom oznakom kao uslovom za aplikaciju oznaka rute. I već sa oznaka rute moguće raditi ip ruta и pravila rute. Sredili smo alate, sada moramo odlučiti koje veze označiti - jedan, gdje tačno označiti - dva.

Kod prvog je sve jednostavno - moramo označiti sve veze koje dolaze na ruter s interneta putem odgovarajućeg kanala. U našem slučaju, to će biti tri oznake (prema broju kanala): “conn_isp1”, “conn_isp2” i “conn_isp3”.

Nijansa kod drugog je da će dolazne veze biti dvije vrste: tranzitne i one namijenjene samom ruteru. Mehanizam oznake veze radi u tabeli mangle. Pogledajmo kretanje paketa na pojednostavljenom dijagramu, koji su ljubazno sastavili stručnjaci sa resursa mikrotik-trainings.com (bez oglašavanja):

Multivan i rutiranje na Mikrotik RouterOS

Prateći strelice, vidimo da paket stiže na “ulazni interfejs“, ide duž lanca “Preusmjeravanje” pa se tek onda dijeli na tranzitni i lokalni u bloku “Odluka o rutiranju" Stoga ćemo koristiti da ubijemo dvije muhe jednim udarcem Oznaka veze u tabeli Mangle Pre-routing lancima Preusmjeravanje.

Napomena:. U ROS-u, “Oznake rutiranja” su označene u odjeljku Ip/Rute/Pravila kao “Tabela”, au drugim odjeljcima kao “Oznaka rutiranja”. Ovo može izazvati određenu zbrku u razumijevanju, ali, u suštini, to je ista stvar, i analogna je rt_tables u iproute2 na Linuxu.

2.1. Označavamo dolazne veze od svakog provajdera:

/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

Napomena. Da ne bih označio već označene veze, koristim uslov connection-mark=no-mark umjesto connection-state=new jer mislim da je to ispravnije, kao i da odbijam ispuštanje nevažećih veza u ulaznom filteru.


passthrough=no - jer je u ovoj metodi implementacije ponovno označavanje isključeno i, da biste ubrzali, možete prekinuti pretragu pravila nakon prvog podudaranja.

Treba imati na umu da još ni na koji način ne ometamo rutiranje. Sada su u toku samo pripremne faze. Sljedeća faza implementacije će biti obrada tranzitnog saobraćaja koji se vraća preko uspostavljene veze sa odredišta na lokalnoj mreži. One. oni paketi koji su (pogledajte dijagram) prošli kroz ruter duž putanje:

“Input Interface”=>”Prerouting”=>”Routing Decision”=>”Forward”=>”Post Routing”=>”Izlazni interfejs” i stigli na odredište na lokalnoj mreži.

Važno! U ROS-u ne postoji logička podjela na eksterne i interne interfejse. Ako pratite putanju paketa odgovora prema dijagramu iznad, on će slijediti istu logičku putanju kao i zahtjev:

“Input Interface”=>”Prerouting”=>”Routing Decision”=>”Forward”=>”Post Routing”=>”Izlazni interfejs” samo da zatražim”Input Interface” postojao je ISP interfejs, a za odgovor je bio LAN

2.2. Tranzitni saobraćaj odgovora rutiramo prema odgovarajućim tabelama rutiranja:

/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

Komentar. in-interface-list=!WAN - radimo samo sa saobraćajem iz lokalne mreže i dst-address-type=!local koji nema odredišnu adresu interfejsa samog rutera.

Isto važi i za lokalne pakete koji su stigli na ruter duž putanje:

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

Važno! Odgovor će ići sljedećim putem:

”Lokalni proces”=>”Odluka o usmjeravanju”=>”Izlaz”=>”Post Routing”=>”Izlazni interfejs”

2.3. Usmjeravamo odgovor lokalnog prometa kroz odgovarajuće tablice rutiranja:

/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

U ovoj fazi, zadatak pripreme za slanje odgovora na internet kanal sa kojeg je stigao zahtjev može se smatrati riješenim. Sve je označeno, označeno i spremno za rutiranje.
Odličan “sporedni” efekat ovog podešavanja je mogućnost prosleđivanja DSNAT portova od oba (ISP2, ISP3) provajdera istovremeno. Ne na svim njima, pošto nemamo rutabilnu adresu na ISP1. Ovaj efekat je važan, na primjer, za mail server sa dva MX-a koji gledaju različite internetske kanale.

Da bismo eliminirali nijanse rada lokalnih mreža s vanjskim IP ruterima, koristimo rješenja iz paragrafa. 1.8.2 i 3.1.2.6.

Osim toga, možete koristiti alat s oznakama za rješavanje točke 3 problema. Hajde da to implementiramo ovako:

2.4. Usmjeravamo promet od lokalnih klijenata sa lista rutiranja u odgovarajuće tabele:

/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

Ukupno, izgleda otprilike ovako:

Multivan i rutiranje na Mikrotik RouterOS

3. Postavite vezu sa ISP-om i omogućite rutiranje po brendu

3.1. Postavljanje veze sa ISP1:
3.1.1. Konfigurirajte statičku IP adresu:

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

3.1.2. Postavljanje statičkog rutiranja:
3.1.2.1. Dodajte zadanu "hitnu" rutu:

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

Napomena. Ova ruta omogućava prometu iz lokalnih procesa da prođe fazu Odluke o ruti bez obzira na stanje veza bilo kojeg od provajdera. Nijansa odlaznog lokalnog saobraćaja je da da bi se paket kretao bilo gde, mora postojati aktivna ruta do podrazumevanog gateway-a u glavnoj tabeli rutiranja. Ako ga nema, onda će paket jednostavno biti uništen.

Kao produžetak alata provjerite gateway Za dublju analizu stanja kanala, predlažem korištenje metode rekurzivnih ruta. Suština metode je da ruteru nalažemo da traži put do svog gateway-a ne direktno, već kroz posredni gateway. 4.2.2.1, 4.2.2.2 i 4.2.2.3 će biti odabrani kao takvi “testni” gatewayi za ISP1, ISP2 i ISP3, respektivno.

3.1.2.2. Usmjerite se na adresu za "verifikaciju":

/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

Napomena. Snižavamo vrijednost opsega na zadanu u ROS ciljnom opsegu kako bismo u budućnosti koristili 4.2.2.1 kao rekurzivni gateway. Naglašavam: opseg rute do “testne” adrese mora biti manji ili jednak ciljnom opsegu rute koja će se odnositi na test adresu.

3.1.2.3. Zadana rekurzivna ruta za saobraćaj bez oznake rute:

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

Napomena. Vrijednost distance=2 se koristi jer je ISP1, prema uvjetima zadatka, deklariran kao prva sigurnosna kopija.

3.1.2.4. Zadana rekurzivna ruta za saobraćaj sa oznakom rutiranja “to_isp1”:

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

Napomena. Zapravo, evo konačno počinjemo da uživamo u plodovima pripremnog rada koji je obavljen u tački 2.


Duž ove rute, sav promet koji ima oznaku rute “to_isp1” će biti usmjeren na gateway prvog provajdera, bez obzira na to koji je default gateway trenutno aktivan za glavnu tablicu.

3.1.2.5. Prva zadana rezervna rekurzivna ruta za ISP2 i ISP3 označen promet:

/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

Napomena. Ove rute su potrebne, između ostalog, za rezervaciju saobraćaja sa lokalnih mreža koje su članice liste adresa “to_isp*”'

3.1.2.6. Registriramo rutu za lokalni promet rutera na Internet preko ISP1:

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

Napomena. U kombinaciji sa pravilima iz stava 1.8.2, omogućen je pristup željenom kanalu sa datim izvorom. Ovo je kritično za izgradnju tunela u kojima je specificirana lokalna strana IP adresa (EoIP, IP-IP, GRE). Pošto se pravila u pravilima ip rute izvršavaju od vrha do dna, do prvog podudaranja uslova, ovo pravilo treba da bude iza pravila iz klauzule 1.8.2.

3.1.3. Postavili smo NAT pravilo za odlazni saobraćaj:

/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

Napomena. NAT je sve što izlazi, osim onoga što spada u IPsec politike. Trudim se da ne koristim action=masquerade osim ako je apsolutno neophodno. On je sporiji i intenzivniji je od src-nat jer izračunava NAT adresu za svaku novu vezu.

3.1.4. Klijente sa liste kojima je zabranjen pristup preko drugih provajdera šaljemo direktno na gateway ISP1 provajdera.

/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

Napomena. action=route ima veći prioritet i primjenjuje se prije drugih pravila rutiranja.


place-before=0 - stavlja naše pravilo na prvo mjesto na listi.

3.2. Postavljanje veze sa ISP2.

Budući da nam ISP2 provajder pruža postavke putem DHCP-a, razumno je izvršiti potrebne promjene pomoću skripte koja se pokreće kada se pokrene DHCP klijent:

/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

Sama skripta u Winbox prozoru:

Multivan i rutiranje na Mikrotik RouterOS
Napomena. Prvi dio skripte se pokreće kada se zakup uspješno dobije, drugi - nakon što se zakup otpusti.Vidi napomenu 2

3.3. Postavljanje veze sa ISP3 provajderom.

S obzirom da nam provajder daje dinamičke postavke, razumno je izvršiti potrebne promjene koristeći skripte koje počinju nakon podizanja ppp interfejsa i nakon što padne.

3.3.1. Prvo konfigurišemo profil:

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

Sama skripta u Winbox prozoru:

Multivan i rutiranje na Mikrotik RouterOS
Napomena. Gudački
/ip firewall mangle set [pronađi komentar="Connmark in from ISP3"] in-interface=$"interface";
omogućava vam da pravilno rukujete preimenovanjem interfejsa, jer radi sa svojim kodom, a ne sa imenom za prikaz.

3.3.2. Sada, koristeći profil, kreiramo ppp vezu:

/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

Za kraj, podesimo sat:

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

Za one koji čitaju do kraja

Predloženi način implementacije multivan-a je lična želja autora i nije jedina moguća. ROS alat je opsežan i fleksibilan, što, s jedne strane, stvara poteškoće početnicima, as druge strane je razlog njegove popularnosti. Proučite, isprobajte, otkrijte nove alate i rješenja. Na primjer, kao primjenu stečenog znanja, možete zamijeniti alat u ovoj multivan implementaciji Check-gateway sa uključenim rekurzivnim rutama Netwatch.

Napomene

  1. Check-gateway — mehanizam koji vam omogućava da deaktivirate rutu nakon dvije uzastopne neuspješne provjere dostupnosti gateway-a. Provjera se vrši svakih 10 sekundi, plus vremensko ograničenje odgovora. Ukupno, stvarno vrijeme prebacivanja je u rasponu od 20-30 sekundi. Ako ovo vrijeme prebacivanja nije dovoljno, postoji mogućnost korištenja alata Netwatch, gdje se tajmer za provjeru može podesiti ručno Check-gateway ne radi ako postoje periodični gubici paketa u kanalu.

    Bitan! Deaktiviranje glavne rute podrazumijeva deaktiviranje svih ostalih ruta koje se odnose na nju. Stoga, za njih da ukažu check-gateway=ping nije potrebno.

  2. Dešava se da dođe do kvara u DHCP mehanizmu, koji izgleda kao da je klijent zamrznut u stanju obnavljanja. U ovom slučaju, drugi dio skripte neće raditi, ali neće ometati ispravan protok saobraćaja, budući da stanje prati odgovarajuću rekurzivnu rutu.
  3. ECMP (višestruki put za jednaku cijenu) — u ROS-u je moguće postaviti rutu sa nekoliko pristupnika i istom udaljenosti. U ovom slučaju, veze će biti raspoređene po kanalima koristeći kružni algoritam, proporcionalno broju specificiranih gateway-a.

Za poticaj za pisanje članka, pomoć u formiranju njegove strukture i stavljanju naglaska - lično hvala Evgeniyu @jscar

izvor: www.habr.com