Multivan i rutiranje na Mikrotik RouterOS-u

Uvod

Osim taštine, na članak me potaknula depresivna učestalost pitanja o ovoj temi u specijaliziranim grupama ruskojezične telegram zajednice. Članak je namijenjen administratorima početnicima Mikrotik RouterOS-a (u daljnjem tekstu ROS). Razmatra samo multivanove, s naglaskom na rutiranje. Kao bonus, postoji minimalno dovoljno postavki za siguran i udoban rad. Oni koji traže raspravu o temama redova čekanja, balansiranja opterećenja, vlan-ova, mostova, višestupanjske duboke analize stanja kanala i slično, neka ne gube vrijeme i trud na čitanje.

Početni podaci

Kao predmet ispitivanja odabran je peteroportni Mikrotik router s ROS verzijom 6.45.3. Usmjeravat će promet između dvije lokalne mreže (LAN1 i LAN2) i tri pružatelja (ISP1, ISP2, ISP3). Kanal prema ISP1 ima statičnu "sivu" adresu, ISP2 ima "bijelu" adresu primljenu putem DHCP-a, ISP3 ima "bijelu" adresu s PPPoE autorizacijom. Dijagram povezivanja prikazan je na slici:

Multivan i rutiranje na Mikrotik RouterOS-u

Zadatak je konfigurirati "MTK" router na temelju sheme tako da:

  1. Osigurajte automatsko prebacivanje na pomoćnog davatelja usluga. Glavni pružatelj je ISP2, prvi rezervni je ISP1, drugi rezervni je ISP3.
  2. Organizirajte LAN1 mrežni pristup Internetu samo preko ISP1.
  3. Pružite mogućnost usmjeravanja prometa s lokalnih mreža na Internet preko odabranog davatelja na temelju popisa adresa.
  4. Pružaju mogućnost objavljivanja usluga s lokalne mreže na Internet (DSTNAT)
  5. Konfigurirajte filtar vatrozida kako biste osigurali minimalno dovoljnu internetsku sigurnost.
  6. Usmjerivač bi mogao osloboditi vlastiti promet preko bilo kojeg od tri pružatelja, 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 izvan okvira koje se mijenjaju od verzije do verzije. Winbox je odabran kao konfiguracijski alat, gdje će se promjene vizualno prikazati. Same postavke bit će određene naredbama u Winbox terminalu. Fizička veza za konfiguraciju ostvaruje se izravnim spajanjem na Ether5 sučelje.

Malo rasprave o tome što je multivan, je li to problem ili lukavi pametnjakovići pletu mrežu zavjera

Radoznali i pažljivi administrator, samostalno postavljajući takvu ili sličnu shemu, iznenada iznenada shvati da ona svejedno dobro funkcionira. Da, da, bez ovih prilagođenih tablica usmjeravanja i ostalih pravila ruta kojih je većina članaka na ovu temu puna. Hoćemo li provjeriti?

Možemo li konfigurirati adresiranje na sučeljima i zadanim pristupnicima? Da:

Na ISP1 registrirali smo adresu i gateway kod 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, korisnici LAN-a se zabavljaju preuzimajući cats preko glavnog ISP2 pružatelja usluga i imaju rezervaciju kanala pomoću mehanizma provjerite gateway Vidi bilješku 1

Točka 1. zadatka je realizirana. Gdje je multivan sa svojim oznakama? Ne…

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

/ip firewall mangle add action=route chain=prerouting dst-address-list=!BOGONS
passthrough=da 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

Točke 2. i 3. zadatka su realizirane. Oznake, marke, pravila rute, gdje ste?!

Trebate li klijentima s interneta omogućiti pristup svom omiljenom OpenVPN poslužitelju s adresom 172.17.17.17? Molim:

/ip cloud set ddns-enabled=yes

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

Registriramo port forwarding s 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

Točka 4 je spremna.

Postavili smo firewall i ostala osiguranja za točku 5, ujedno smo sretni što korisnici već sve rade i posežu za spremnikom s omiljenim pićem...
A! Tuneli su još uvijek zaboravljeni.

Je li l2tp klijent konfiguriran na temelju googlanog članka porastao na vaš omiljeni nizozemski VDS? Da.
L2tp poslužitelj s IPsec-om radi i klijenti koji koriste DNS naziv iz IP Cloud-a (vidi gore) se povezuju? Da.
Zavaljeni u stolici, ispijajući piće, lijeno razmatramo točke 6 i 7 problema. Mislimo - treba li nam? Još uvijek tako radi (c)… Dakle, ako nije potrebno, to je sve. Implementiran Multivan.

Što je multivan? Ovo je povezivanje nekoliko internetskih kanala na jedan router.

Ne morate čitati ostatak članka, jer što bi tu bilo osim razmetanja sumnjivom primjenjivošću?

S onima koji su ostali, koje zanimaju točke 6 i 7 zadatka, a također osjećaju svrbež perfekcionizma, zaronimo dublje.

Najvažniji zadatak implementacije multivana je pravilno usmjeravanje prometa. Naime: svejedno u kojoj (ili kojoj) Vidi. Napomena 3 kanal(a) pružatelja gleda na zadanu rutu na našem usmjerivaču, trebao bi vratiti odgovor na točno onaj kanal s kojeg je paket došao. Zadatak je jasan. U čemu je problem? Uostalom, u jednostavnoj lokalnoj mreži zadatak je isti, ali nitko se ne zamara dodatnim postavkama i ne osjeća probleme. Razlika je u tome što je svakom preusmjerenom čvoru na Internetu moguće pristupiti kroz svaki naš kanal, a ne kroz neki strogo specifičan, kao u jednostavnom 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 zadani pristupnik usmjeren tamo. Nestat će i pružatelj će je odbaciti kao neispravnu. Problem je riješen. Kako to riješiti?

Rješenje ćemo podijeliti u tri faze:

  1. Predpodešavanje. U ovoj fazi bit će postavljene osnovne postavke usmjerivača: lokalna mreža, vatrozid, popisi adresa, ukočeni NAT itd.
  2. Multivan. U ovoj će fazi potrebne veze biti označene i razvrstane u tablice usmjeravanja.
  3. Veza s ISP-om. U ovoj fazi bit će konfigurirana sučelja koja omogućuju internetsku vezu, aktivirat će se usmjeravanje i mehanizam za rezervaciju internetskih kanala.

1. Predpodešavanje

1.1. Brišemo konfiguraciju routera naredbom:

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

slažemo se s "Opasno! Svejedno resetirati? [da/ne]:” i nakon ponovnog pokretanja povezujemo se s Winboxom preko MAC-a. U ovoj fazi brišu se konfiguracija i baza korisnika.

1.2. Stvorite novog korisnika:

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

Prijavite se pod njim i izbrišite zadani:

/user remove admin

Napomena. Autor smatra sigurnijim brisanje nego onemogućavanje zadanog korisnika i preporučuje njegovu upotrebu.

1.3. Izrađujemo popise osnovnih sučelja radi lakšeg rada u vatrozidu, postavkama otkrivanja i drugim MAC poslužiteljima:

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

Potpisivanje sučelja s 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 popise sučelja:

/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 vrijedno je vremena utrošenog na to, osim toga olakšava rješavanje problema i razumijevanje konfiguracije.

Autor smatra nužnim, iz sigurnosnih razloga, dodati sučelje ether3 na popis sučelja “WAN”, unatoč činjenici da IP protokol neće putovati preko njega.

Ne zaboravite da nakon što se PPP sučelje podigne na ether3, ono će se također morati dodati na popis sučelja "WAN"

1.4. Skrivamo usmjerivač od otkrivanja susjedstva i kontrole od mreža pružatelja usluga 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. Stvaramo minimalno dovoljan skup pravila filtera vatrozida za zaštitu usmjerivača:

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

(pravilo daje dopuštenje za uspostavljene i povezane veze koje su pokrenute i iz povezanih mreža i od samog usmjerivača)

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

(ping i ne samo ping. Svi icmp-ovi su dopušteni na ulazu. Vrlo korisno za pronalaženje problema s MTU-om)

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

(pravilo koje zatvara lanac unosa zabranjuje sve ostalo što dolazi s interneta)

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

(pravilo dopušta uspostavljene i povezane veze koje prolaze kroz ruter)

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

(pravilo resetira veze s connection-state=invalid koje prolaze kroz ruter. Toplo ga preporučuje Mikrotik, ali u nekim rijetkim situacijama može blokirati koristan promet)

/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 paketima koji dolaze s Interneta prolaz kroz usmjerivač i nisu prošli proceduru dstnat. To će zaštititi lokalne mreže od napadača koji će, budući da su u istoj domeni emitiranja s našim vanjskim mrežama, registrirati naše vanjske IP adrese kao pristupnika i na taj način 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 od njih ne filtrira.

1.6. Stvaramo popis s popisom 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 popis adresa i mreža koje nisu usmjerene na Internet i, sukladno tome, mi ćemo ga također pratiti.)

Napomena. Popis se može promijeniti, pa vam savjetujem da povremeno provjerite njegovu relevantnost.

1.7. Konfiguriramo DNS za sam ruter:

/ip dns set servers=1.1.1.1,8.8.8.8

Napomena. U trenutnoj verziji ROS-a, dinamički poslužitelji imaju prednost nad statički definiranim. Zahtjev za razrješenje imena šalje se prvom poslužitelju po redoslijedu na popisu. Prijelaz na sljedeći poslužitelj provodi se ako je trenutni nedostupan. Vrijeme čekanja je dugo - više od 5 sekundi. Povratak nakon nastavka rada s "oborenim poslužiteljem" ne događa se automatski. Uzimajući u obzir ovaj algoritam i prisutnost multivan-a, autor preporučuje da ne koristite poslužitelje koje pružaju davatelji usluga.

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

/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 usmjeravanja prema našim lokalnim mrežama kroz glavnu tablicu usmjeravanja:

/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 adresama lokalne mreže s izvorima vanjskih IP adresa sučelja rutera kroz koje ne ide 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. To vam omogućuje pristup vašim resursima (dstnat) putem vanjske IP adrese dok ste unutar mreže.

2. Zapravo, implementacija tog vrlo ispravnog multivana

Kako bismo riješili problem "odgovaranja gdje se pita", koristit ćemo dva ROS alata: oznaka veze и oznaka usmjeravanja. oznaka veze omogućuje označavanje željene veze i naknadni rad s tom oznakom kao uvjetom za prijavu oznaka usmjeravanja. I već sa oznaka usmjeravanja moguće raditi ip ruta и pravila rute. Rasporedili smo alate, sada treba odlučiti koje veze označiti - jedan, gdje točno označiti - dva.

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

Nijansa s drugom je da će dolazne veze biti dvije vrste: tranzitne i one namijenjene samom usmjerivaču. Mehanizam oznake veze radi u tablici komadati. Pogledajmo kretanje paketa na pojednostavljenom dijagramu, koji su ljubazno sastavili stručnjaci iz resursa mikrotik-trainings.com (bez oglašavanja):

Multivan i rutiranje na Mikrotik RouterOS-u

Prateći strelice, vidimo da paket stiže na "Ulaz sučelje“, ide duž lanca „Preusmjeravanje” pa se tek onda dijeli na tranzitni i lokalni u bloku “Odluka o usmjeravanju" Stoga, da ubijemo dvije muhe jednim udarcem, koristit ćemo se Oznaka veze u stolu Mangle prethodno usmjeravanje lanci Preusmjeravanje.

primjedba. U ROS-u, "Oznake usmjeravanja" naznačene su u odjeljku Ip/Rute/Pravila kao "Tablica", a u drugim odjeljcima kao "Oznaka usmjeravanja". Ovo može izazvati zabunu u razumijevanju, ali, u biti, to je ista stvar, i analog je rt_tables u iproute2 na Linuxu.

2.1. Označavamo dolazne veze od svakog pružatelja:

/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. Kako ne bih označavao već označene veze, koristim uvjet connection-mark=no-mark umjesto connection-state=new jer mislim da je to ispravnije, kao i odbijanje ispuštanja nevažećih veza u ulaznom filtru.


passthrough=no - zato što 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 usmjeravanje. Sada su samo pripremne faze u tijeku. Sljedeća faza implementacije bit će obrada tranzitnog prometa koji se vraća preko uspostavljene veze s odredišta na lokalnoj mreži. Oni. oni paketi koji su (vidi dijagram) prošli kroz usmjerivač na putu:

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

Važno! U ROS-u ne postoji logična podjela na vanjska i unutarnja sučelja. Ako pratite put paketa odgovora prema gornjem dijagramu, on će slijediti isti logički put kao i zahtjev:

“Input Interface”=>”Prerouting”=>”Routing Decision”=>”Forward”=>”Post Routing”=>”Output Interface” samo na zahtjev “Ulaz sučelje” postojalo je ISP sučelje, a kao odgovor tu je bio LAN

2.2. Tranzitni promet odgovora usmjeravamo prema odgovarajućim tablicama usmjeravanja:

/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 s prometom iz lokalne mreže i dst-address-type=!local koji nema odredišnu adresu sučelja samog rutera.

Isto vrijedi i za lokalne pakete koji su stigli do usmjerivača putem:

“Ulazno sučelje”=>”Preusmjeravanje”=>”Odluka o usmjeravanju”=>”Ulaz”=>”Lokalni proces”

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

”Lokalni proces”=>”Odluka o usmjeravanju”=>”Izlaz”=>”Post usmjeravanje”=>”Izlazno sučelje”

2.3. Lokalni promet odgovora usmjeravamo kroz odgovarajuće tablice usmjeravanja:

/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 se može smatrati riješenim zadatak pripreme za slanje odgovora na internetski kanal s kojeg je zahtjev stigao. Sve je označeno, označeno i spremno za usmjeravanje.
Izvrsna "nuspojava" ove postavke je mogućnost prosljeđivanja DSNAT portova od oba (ISP2, ISP3) pružatelja istovremeno. Ne na svima jer nemamo adresu za usmjeravanje na ISP1. Ovaj učinak je važan, na primjer, za poslužitelj pošte s dva MX-a koji gledaju različite internetske kanale.

Da bismo uklonili nijanse rada lokalnih mreža s vanjskim IP usmjerivačima, 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. Implementirajmo to ovako:

2.4. Usmjeravamo promet od lokalnih klijenata s popisa usmjeravanja na odgovarajuće tablice:

/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

Sve u svemu, to izgleda otprilike ovako:

Multivan i rutiranje na Mikrotik RouterOS-u

3. Postavite vezu s ISP-om i omogućite usmjeravanje prema marki

3.1. Postavljanje veze s 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 usmjeravanja:
3.1.2.1. Dodajte zadanu rutu za "hitne slučajeve":

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

Napomena. Ova ruta omogućuje prometu iz lokalnih procesa da prođe fazu Odluke o ruti bez obzira na stanje veza bilo kojeg pružatelja. Nijansa odlaznog lokalnog prometa je ta da, kako bi se paket mogao bilo gdje premjestiti, mora postojati aktivna ruta do zadanog pristupnika u glavnoj tablici usmjeravanja. Ako ga nema, paket će jednostavno biti uništen.

Kao proširenje alata provjerite gateway Za dublju analizu stanja kanala predlažem korištenje metode rekurzivnih ruta. Bit metode je da uputimo usmjerivač da traži put do svog gatewaya ne izravno, već kroz posredni gateway. 4.2.2.1, 4.2.2.2 i 4.2.2.3 bit će odabrani kao takvi "testni" pristupnici za ISP1, ISP2 i ISP3.

3.1.2.2. Ruta do adrese za "potvrdu":

/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. Spuštamo vrijednost opsega na zadanu u ciljnom opsegu ROS-a kako bismo u budućnosti koristili 4.2.2.1 kao rekurzivni pristupnik. Naglašavam: opseg rute do "testne" adrese mora biti manji ili jednak ciljnom opsegu rute koja će se odnositi na testnu adresu.

3.1.2.3. Zadana rekurzivna ruta za promet bez oznake usmjeravanja:

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

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

3.1.2.4. Zadana rekurzivna ruta za promet s oznakom usmjeravanja "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 uživati ​​u plodovima pripremnih radova koji su obavljeni u točki 2.


Duž ove rute, sav promet koji ima oznaku ruta “to_isp1” bit će usmjeren na pristupnik prvog pružatelja, bez obzira na to koji je zadani pristupnik 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, između ostalog, potrebne za rezerviranje prometa s lokalnih mreža koje su članice popisa adresa “to_isp*”'

3.1.2.6. Registriramo rutu za lokalni promet usmjerivača na Internet putem ISP1:

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

Napomena. U kombinaciji s pravilima iz točke 1.8.2 omogućen je pristup željenom kanalu sa zadanim izvorom. Ovo je kritično za izgradnju tunela u kojima je navedena IP adresa lokalne strane (EoIP, IP-IP, GRE). Budući da se pravila u pravilima ip route izvršavaju odozgo prema dolje, do prvog podudaranja uvjeta, ovo pravilo treba biti nakon pravila iz klauzule 1.8.2.

3.1.3. Postavili smo NAT pravilo za odlazni promet:

/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 ide van, osim onoga što spada u IPsec pravila. Trudim se ne koristiti action=masquerade osim ako nije apsolutno neophodno. Sporiji je i zahtijeva više resursa od src-nat jer izračunava NAT adresu za svaku novu vezu.

3.1.4. Klijente s popisa kojima je zabranjen pristup putem drugih pružatelja šaljemo izravno na ISP1 gateway pružatelja usluga.

/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 viši prioritet i primjenjuje se prije ostalih pravila usmjeravanja.


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

3.2. Postavljanje veze s ISP2.

Budući da nam dobavljač ISP2 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-u
Napomena. Prvi dio skripte pokreće se kada je najam uspješno dobiven, drugi - nakon što je najam otpušten.Vidi bilješku 2

3.3. Postavljanje veze s ISP3 providerom.

Budući da nam pružatelj daje dinamičke postavke, razumno je izvršiti potrebne promjene pomoću skripti koje se pokreću nakon što se ppp sučelje podigne i nakon što padne.

3.3.1. Prvo konfiguriramo 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-u
Napomena. red
/ip firewall mangle set [find comment="Connmark in from ISP3"] in-interface=$"interface";
omogućuje vam ispravno rukovanje preimenovanjem sučelja, jer radi sa svojim kodom, a ne imenom za prikaz.

3.3.2. Sada, koristeći profil, stvaramo 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

Kao posljednji detalj, postavimo 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žena metoda implementacije multivana je osobna preferencija autora i nije jedina moguća. ROS toolkit je opsežan i fleksibilan, što s jedne strane stvara poteškoće početnicima, as druge strane je razlog njegove popularnosti. Proučavajte, isprobavajte, otkrivajte nove alate i rješenja. Na primjer, kao primjenu stečenog znanja možete zamijeniti alat u ovoj multivan implementaciji Check-gateway s uključenim rekurzivnim rutama Netwatch.

Bilješke

  1. Check-gateway — mehanizam koji vam omogućuje da deaktivirate rutu nakon dvije uzastopne neuspješne provjere dostupnosti pristupnika. Provjera se provodi jednom 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 provjere može ručno podesiti Check-gateway ne radi ako postoje povremeni gubici paketa u kanalu.

    Važno! Deaktivacija glavne rute povlači za sobom deaktivaciju svih ostalih ruta koje se na nju odnose. Stoga, za njih naznačiti check-gateway=ping nije potrebno.

  2. Dešava se da dođe do greške u DHCP mehanizmu, što izgleda kao da je klijent zamrznut u stanju obnavljanja. U ovom slučaju, drugi dio skripte neće raditi, ali neće ometati pravilan tijek prometa, jer država prati odgovarajuću rekurzivnu rutu.
  3. ECMP (Equal Cost Multi-Path) — u ROS-u je moguće postaviti rutu s nekoliko prolaza i istom udaljenosti. U ovom slučaju, veze će se distribuirati po kanalima pomoću kružnog algoritma, proporcionalno broju navedenih pristupnika.

Za poticaj za pisanje članka, pomoć u oblikovanju njegove strukture i stavljanju naglaska - osobna zahvala Evgeniyu @jscar

Izvor: www.habr.com