Usmjeravanje je proces pronalaženja najbolje staze za prijenos paketa preko TCP/IP mreža. Svaki uređaj spojen na IPv4 mrežu sadrži proces i tablice usmjeravanja.
Ovaj članak nije HOWTO, on opisuje statičko usmjeravanje u RouterOS-u s primjerima, ostale postavke sam namjerno izostavio (npr. srcnat za pristup Internetu), pa je za razumijevanje gradiva potrebna određena razina poznavanja mreža i RouterOS-a.
Prebacivanje i usmjeravanje
Switching je proces razmjene paketa unutar jednog Layer2 segmenta (Ethernet, ppp, ...). Ako uređaj vidi da je primatelj paketa na istoj Ethernet podmreži s njim, uči mac adresu pomoću arp protokola i šalje paket izravno, zaobilazeći usmjerivač. Ppp (point-to-point) veza može imati samo dva sudionika i paket se uvijek šalje na jednu adresu 0xff.
Usmjeravanje je proces prijenosa paketa između Layer2 segmenata. Ako uređaj želi poslati paket čiji je primatelj izvan Ethernet segmenta, on gleda u svoju tablicu usmjeravanja i prosljeđuje paket pristupniku, koji zna kamo poslati paket sljedeći (ili možda ne zna, izvorni pošiljatelj paketa nije svjestan toga).
Usmjerivač je najlakše zamisliti kao uređaj povezan s dva ili više Layer2 segmenata i sposoban prenositi pakete između njih određivanjem najbolje rute iz tablice usmjeravanja.
Ako sve razumijete ili ste već znali, onda čitajte dalje. Za ostalo, toplo preporučujem da se upoznate s malim, ali vrlo prostranim
Usmjeravanje u RouterOS i PacketFlow
Gotovo sve funkcionalnosti vezane uz statičko usmjeravanje nalaze se u paketu sistem. Plastična vrećica usmjeravanje dodaje podršku za dinamičke algoritme usmjeravanja (RIP, OSPF, BGP, MME), filtre usmjeravanja i BFD.
Glavni izbornik za postavljanje usmjeravanja: [IP]->[Route]
. Složene sheme mogu zahtijevati da paketi budu unaprijed označeni oznakom usmjeravanja u: [IP]->[Firewall]->[Mangle]
(lanci PREROUTING
и OUTPUT
).
Postoje tri mjesta na PacketFlowu gdje se donose odluke o usmjeravanju IP paketa:
- Usmjeravanje paketa koje usmjerivač prima. U ovoj fazi se odlučuje hoće li paket ići u lokalni proces ili će se poslati dalje u mrežu. Prijem paketa za prijevoz Izlaz Sučelje
- Usmjeravanje lokalnih odlaznih paketa. Primanje odlaznih paketa Izlaz Sučelje
- Dodatni korak usmjeravanja za odlazne pakete omogućuje vam promjenu odluke o usmjeravanju
[Output|Mangle]
- Putanja paketa u blokovima 1, 2 ovisi o pravilima u
[IP]->[Route]
- Putanja paketa u točkama 1, 2 i 3 ovisi o pravilima u
[IP]->[Route]->[Rules]
- Na put paketa u blokovima 1, 3 može se utjecati pomoću
[IP]->[Firewall]->[Mangle]
RIB, FIB, Routing Cache
Baza informacija o rutama
Baza u kojoj se skupljaju rute iz protokola dinamičkog usmjeravanja, rute iz ppp i dhcp, statične i povezane rute. Ova baza podataka sadrži sve rute, osim onih koje je filtrirao administrator.
Uvjetno, to možemo pretpostaviti [IP]->[Route]
prikazuje RIB.
Informacijska baza prosljeđivanja
Baza u kojoj su sakupljene najbolje rute iz RIB-a. Sve rute u FIB-u su aktivne i koriste se za prosljeđivanje paketa. Ako ruta postane neaktivna (onemogućena od strane administratora (sustava) ili sučelje kroz koje se paket treba poslati nije aktivno), ruta se uklanja iz FIB-a.
Za donošenje odluke o usmjeravanju, FIB tablica koristi sljedeće informacije o IP paketu:
- Izvorna adresa
- Adresa odredišta
- izvorno sučelje
- Oznaka rute
- ToS (DSCP)
Ulazak u FIB paket prolazi kroz sljedeće faze:
- Je li paket namijenjen procesu lokalnog usmjerivača?
- Podliježe li paket PBR pravilima sustava ili korisnika?
- Ako da, tada se paket šalje u navedenu tablicu usmjeravanja
- Paket se šalje glavnom stolu
Uvjetno, to možemo pretpostaviti [IP]->[Route Active=yes]
prikazuje FIB.
Predmemorija usmjeravanja
Mehanizam predmemoriranja rute. Router pamti gdje su paketi poslani i ako postoje slični (valjda s iste veze) pušta ih istom rutom, bez provjere u FIB-u. Predmemorija rute povremeno se briše.
Za administratore RouterOS-a nisu napravili alate za pregled i upravljanje Routing Cacheom, ali kada se može onemogućiti u [IP]->[Settings]
.
Ovaj mehanizam je uklonjen iz jezgre linuxa 3.6, ali RouterOS i dalje koristi jezgru 3.3.5, možda je Routing cahce jedan od razloga.
Dijalog za dodavanje rute
[IP]->[Route]->[+]
- Podmreža za koju želite stvoriti rutu (zadano: 0.0.0.0/0)
- IP pristupnika ili sučelje na koje će se paket poslati (može ih biti nekoliko, pogledajte ECMP u nastavku)
- Provjera dostupnosti pristupnika
- Vrsta zapisa
- Udaljenost (metrička) za rutu
- Tablica usmjeravanja
- IP za lokalne odlazne pakete putem ove rute
- Svrha Scope i Target Scope napisana je na kraju članka.
Oznake rute
- X - Rutu je onemogućio administrator (
disabled=yes
) - A - Ruta se koristi za slanje paketa
- D - Ruta se dodaje dinamički (BGP, OSPF, RIP, MME, PPP, DHCP, povezano)
- C - Podmreža je spojena izravno na usmjerivač
- S - Statička ruta
- r,b,o,m - Ruta koju je dodao jedan od protokola dinamičkog usmjeravanja
- B,U,P - Filtriranje rute (ispušta pakete umjesto slanja)
Što navesti u pristupniku: ip-adresu ili sučelje?
Sustav vam omogućuje da navedete oboje, dok ne psuje i ne daje savjete ako ste učinili nešto pogrešno.
IP adresa
Adresa pristupnika mora biti dostupna preko Layer2. Za Ethernet to znači da usmjerivač mora imati adresu iz iste podmreže na jednom od aktivnih ip sučelja, za ppp da je adresa pristupnika navedena na jednom od aktivnih sučelja kao adresa podmreže.
Ako uvjet pristupačnosti za Layer2 nije ispunjen, ruta se smatra neaktivnom i ne spada u FIB.
sučelje
Sve je kompliciranije i ponašanje usmjerivača ovisi o vrsti sučelja:
- PPP (Async, PPTP, L2TP, SSTP, PPPoE, OpenVPN *) veza pretpostavlja samo dva sudionika i paket će uvijek biti poslan pristupniku za prijenos, ako pristupnik otkrije da je primatelj on sam, tada će prenijeti paket na njegov lokalni proces.
- Ethernet pretpostavlja prisutnost mnogih sudionika i slat će zahtjeve arp sučelju s adresom primatelja paketa, ovo je očekivano i sasvim normalno ponašanje za povezane rute.
Ali kada pokušate koristiti sučelje kao rutu za udaljenu podmrežu, dobit ćete sljedeću situaciju: ruta je aktivna, ping do gatewaya prolazi, ali ne dolazi do primatelja iz navedene podmreže. Ako pogledate sučelje kroz sniffer, vidjet ćete arp zahtjeve s adresama iz udaljene podmreže.
Pokušajte navesti IP adresu kao pristupnik kad god je to moguće. Izuzetak su povezane rute (izrađene automatski) i PPP (Async, PPTP, L2TP, SSTP, PPPoE, OpenVPN*) sučelja.
OpenVPN ne sadrži PPP zaglavlje, ali možete koristiti naziv OpenVPN sučelja za stvaranje rute.
Određenija ruta
Osnovno pravilo usmjeravanja. Ruta koja opisuje manju podmrežu (s najvećom podmrežnom maskom) ima prednost u odluci o usmjeravanju paketa. Položaj unosa u tablici usmjeravanja nije relevantan za izbor - glavno pravilo je Specifičnije.
Sve rute iz navedene sheme su aktivne (nalaze se u FIB-u). pokazuju na različite podmreže i ne sukobljavaju se međusobno.
Ako jedan od pristupnika postane nedostupan, pridružena ruta smatrat će se neaktivnom (uklonjena iz FIB-a), a paketi će se pretraživati s preostalih ruta.
Ruti s podmrežom 0.0.0.0/0 ponekad se daje posebno značenje i naziva se "Default Route" ili "Gateway of last resort". Zapravo, u njemu nema ničeg magičnog i jednostavno uključuje sve moguće IPv4 adrese, ali ovi nazivi dobro opisuju njegovu zadaću - označava gateway kamo treba proslijediti pakete za koje ne postoje druge, preciznije rute.
Najveća moguća maska podmreže za IPv4 je /32, ova ruta ukazuje na određeni host i može se koristiti u tablici usmjeravanja.
Razumijevanje specifičnije rute temeljno je za svaki TCP/IP uređaj.
Udaljenost
Udaljenosti (ili metrike) potrebne su za administrativno filtriranje ruta prema jednoj podmreži dostupnoj putem više pristupnika. Ruta s nižom metrikom smatra se prioritetom i bit će uključena u FIB. Ako ruta s nižom metrikom prestane biti aktivna, bit će zamijenjena rutom s višom metrikom u FIB-u.
Ako postoji više ruta prema istoj podmreži s istom metrikom, ruter će dodati samo jednu od njih u FIB tablicu, vođen svojom internom logikom.
Mjerni podatak može imati vrijednost od 0 do 255:
- 0 - metrika za povezane rute. Udaljenost 0 ne može postaviti administrator
- 1-254 - Mjerni podaci dostupni administratoru za postavljanje ruta. Mjerni podaci s nižom vrijednošću imaju veći prioritet
- 255 - Metrika dostupna administratoru za postavljanje ruta. Za razliku od 1-254, ruta s metrikom 255 uvijek ostaje neaktivna i ne spada u FIB
- specifične metrike. Rute izvedene iz protokola dinamičkog usmjeravanja imaju standardne metričke vrijednosti
provjerite gateway
Provjeri pristupnik je proširenje MikroTik RoutesOS za provjeru dostupnosti pristupnika putem icmp-a ili arp-a. Svakih 10 sekundi (ne može se promijeniti), zahtjev se šalje pristupniku, ako se odgovor ne primi dva puta, ruta se smatra nedostupnom i uklanja se iz FIB-a. Ako je pristupnik provjere onemogućen, ruta provjere se nastavlja i ruta će ponovno postati aktivna nakon jedne uspješne provjere.
Provjerite pristupnik onemogućuje unos u kojem je konfiguriran i sve druge unose (u svim tablicama usmjeravanja i ecmp rutama) s navedenim pristupnikom.
Općenito, check gateway radi dobro sve dok nema problema s gubitkom paketa na gatewayu. Check gateway ne zna što se događa s komunikacijom izvan provjerenog gatewaya, to zahtijeva dodatne alate: skripte, rekurzivno usmjeravanje, dinamičke protokole usmjeravanja.
Većina VPN protokola i tunelskih protokola sadrži ugrađene alate za provjeru aktivnosti veze, omogućavanje provjere gatewaya za njih je dodatno (ali vrlo malo) opterećenje mreže i performansi uređaja.
ECMP rute
Equal-Cost Multi-Path - slanje paketa primatelju koristeći nekoliko gatewaya istovremeno koristeći Round Robin algoritam.
ECMP rutu stvara administrator određivanjem više pristupnika za jednu podmrežu (ili automatski, ako postoje dvije ekvivalentne OSPF rute).
ECMP se koristi za uravnoteženje opterećenja između dva kanala, teoretski, ako postoje dva kanala u ecmp ruti, onda bi za svaki paket odlazni kanal trebao biti drugačiji. Ali mehanizam predmemorije usmjeravanja šalje pakete iz veze duž rute kojom je išao prvi paket, kao rezultat toga, dobivamo neku vrstu balansiranja na temelju veza (balansiranje učitavanja po vezi).
Ako onemogućite predmemoriju usmjeravanja, tada će se paketi u ECMP ruti ispravno dijeliti, ali postoji problem s NAT-om. NAT pravilo obrađuje samo prvi paket iz veze (ostali se obrađuju automatski), a ispada da paketi s istom izvornom adresom napuštaju različita sučelja.
Provjerite da pristupnik ne radi u ECMP rutama (bug RouterOS-a). Ali ovo ograničenje možete zaobići stvaranjem dodatnih ruta provjere valjanosti koje će onemogućiti unose u ECMP.
Filtriranje pomoću usmjeravanja
Opcija Type određuje što učiniti s paketom:
- unicast - pošalji na navedeni pristupnik (sučelje)
- blackhole - odbaciti paket
- zabraniti, nedostupan - odbaciti paket i poslati icmp poruku pošiljatelju
Filtriranje se obično koristi kada je potrebno osigurati slanje paketa duž pogrešnog puta, naravno, to možete filtrirati kroz vatrozid.
Par primjera
Za konsolidaciju osnovnih stvari o usmjeravanju.
Tipični kućni ruter
/ip route
add dst-address=0.0.0.0/0 gateway=10.10.10.1
- Statička ruta do 0.0.0.0/0 (zadana ruta)
- Povezana ruta na sučelju s davateljem usluga
- Povezana ruta na LAN sučelju
Tipični kućni usmjerivač s PPPoE
- Statička ruta zadanoj ruti, dodana automatski. navedeno je u svojstvima veze
- Povezana ruta za PPP vezu
- Povezana ruta na LAN sučelju
Tipični kućni usmjerivač s dva pružatelja usluga i redundancijom
/ip route
add dst-address=0.0.0.0/0 gateway=10.10.10.1 distance=1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.20.20.1 distance=2
- Statička ruta do zadane rute kroz prvog pružatelja s metrikom 1 i provjerom dostupnosti pristupnika
- Statička ruta do zadane rute preko drugog pružatelja s metrikom 2
- Povezane rute
Promet do 0.0.0.0/0 ide kroz 10.10.10.1 dok je ovaj gateway dostupan, inače se prebacuje na 10.20.20.1
Takva se shema može smatrati rezervacijom kanala, ali nije bez nedostataka. Ako dođe do prekida izvan gatewaya pružatelja usluga (na primjer, unutar mreže operatera), vaš usmjerivač neće znati za to i nastavit će smatrati rutu aktivnom.
Tipični kućni usmjerivač s dva pružatelja, redundancijom i ECMP-om
/ip route
add dst-address=0.0.0.0/0 gateway=10.10.10.1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.20.20.1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.10.10.1,10.20.20.1 distance=1
- Statičke rute za provjeru chack gatewaya
- ECMP put
- Povezane rute
Rute za provjeru su plave (boja neaktivnih ruta), ali to ne ometa pristupnik za provjeru. Trenutna verzija (6.44) RoS-a daje automatski prioritet ECMP ruti, ali je bolje dodati probne rute drugim tablicama usmjeravanja (opcija routing-mark
)
Na Speedtestu i drugim sličnim stranicama neće biti povećanja brzine (ECMP dijeli promet po vezama, a ne po paketima), ali p2p aplikacije bi se trebale brže preuzimati.
Filtriranje putem usmjeravanja
/ip route
add dst-address=0.0.0.0/0 gateway=10.10.10.1
add dst-address=192.168.200.0/24 gateway=10.30.30.1 distance=1
add dst-address=192.168.200.0/24 gateway=10.10.10.1 distance=2 type=blackhole
- Statička ruta do zadane rute
- Statička ruta do 192.168.200.0/24 preko ipip tunela
- Zabrana statične rute na 192.168.200.0/24 preko ISP usmjerivača
Opcija filtriranja u kojoj promet tunela neće ići do usmjerivača pružatelja usluga kada je ipip sučelje onemogućeno. Takve sheme su rijetko potrebne, jer možete implementirati blokiranje kroz vatrozid.
Petlja usmjeravanja
Petlja usmjeravanja - situacija kada se paket pokreće između usmjerivača prije nego što istekne ttl. Obično je to rezultat konfiguracijske pogreške, u velikim mrežama se liječi implementacijom dinamičkih protokola usmjeravanja, u malim - s pažnjom.
Izgleda ovako:
Primjer (najjednostavniji) kako dobiti sličan rezultat:
Primjer petlje usmjeravanja nema praktične koristi, ali pokazuje da usmjerivači nemaju pojma o tablici usmjeravanja svojih susjeda.
Osnovno usmjeravanje i dodatne tablice usmjeravanja
Pri odabiru rute ruter koristi samo jedno polje iz zaglavlja paketa (Dst. Address) – to je osnovno rutiranje. Usmjeravanje na temelju drugih uvjeta, kao što su izvorna adresa, vrsta prometa (ToS), balansiranje bez ECMP-a, pripada Policy Base Routing (PBR) i koristi dodatne tablice usmjeravanja.
Određenija ruta je glavno pravilo odabira rute unutar tablice usmjeravanja.
Prema zadanim postavkama, sva pravila usmjeravanja dodaju se u glavnu tablicu. Administrator može kreirati proizvoljan broj dodatnih tablica usmjeravanja i usmjeravati pakete prema njima. Pravila u različitim tablicama nisu u međusobnom sukobu. Ako paket ne pronađe odgovarajuće pravilo u navedenoj tablici, otići će u glavnu tablicu.
Primjer distribucije putem vatrozida:
- 192.168.100.10 -> 8.8.8.8
- Promet s 192.168.100.10 dobiva oznaku putem-isp1 в
[Prerouting|Mangle]
- U fazi Usmjeravanje u tablici putem-isp1 traži rutu do 8.8.8.8
- Ruta pronađena, promet se šalje na pristupnik 10.10.10.1
- Promet s 192.168.100.10 dobiva oznaku putem-isp1 в
- 192.168.200.20 -> 8.8.8.8
- Promet s 192.168.200.20 dobiva oznaku putem-isp2 в
[Prerouting|Mangle]
- U fazi Usmjeravanje u tablici putem-isp2 traži rutu do 8.8.8.8
- Ruta pronađena, promet se šalje na pristupnik 10.20.20.1
- Promet s 192.168.200.20 dobiva oznaku putem-isp2 в
- Ako jedan od pristupnika (10.10.10.1 ili 10.20.20.1) postane nedostupan, tada će paket ići na stol glavni i tamo će potražiti odgovarajući put
Terminološka pitanja
RouterOS ima određenih problema s terminologijom.
Prilikom rada s pravilima u [IP]->[Routes]
naznačena je tablica usmjeravanja, iako je napisano da oznaka:
В [IP]->[Routes]->[Rule]
sve je ispravno, u stanju oznake u akciji tablice:
Kako poslati paket u određenu tablicu usmjeravanja
RouterOS nudi nekoliko alata:
- Pravila u
[IP]->[Routes]->[Rules]
- Oznake rute (
action=mark-routing
) u[IP]->[Firewall]->[Mangle]
- VRF
Propisi [IP]->[Route]->[Rules]
Pravila se obrađuju sekvencijalno, ako paket odgovara uvjetima pravila, ne prolazi dalje.
Pravila usmjeravanja omogućuju vam da proširite mogućnosti usmjeravanja, oslanjajući se ne samo na adresu primatelja, već i na adresu izvora i sučelje na kojem je paket primljen.
Pravila se sastoje od uvjeta i radnje:
- Uvjeti. Praktično ponovite popis znakova po kojima se paket provjerava u FIB-u, nedostaje samo ToS.
- Djelatnost
- lookup - slanje paketa na stol
- traži samo u tablici - zaključaj paket u tablici, ako ruta nije pronađena, paket neće ići u glavnu tablicu
- drop - ispustiti paket
- nedostupan - odbaci paket s obavijesti pošiljatelja
U FIB-u se promet prema lokalnim procesima obrađuje zaobilazeći pravila [IP]->[Route]->[Rules]
:
obilježavanje [IP]->[Firewall]->[Mangle]
Oznake usmjeravanja omogućuju vam da postavite pristupnik za paket koristeći gotovo sve uvjete Vatrozida:
Praktično, jer nemaju svi smisla, a neki mogu raditi nestabilno.
Postoje dva načina označavanja paketa:
- Odmah staviti oznaka usmjeravanja
- Stavite na prvo mjesto oznaka veze, zatim na temelju oznaka veze staviti oznaka usmjeravanja
U članku o vatrozidima napisao sam da je druga opcija poželjnija. smanjuje opterećenje procesora, u slučaju označavanja ruta - to nije sasvim točno. Ove metode označavanja nisu uvijek ekvivalentne i obično se koriste za rješavanje raznih problema.
Primjeri upotrebe
Prijeđimo na primjere korištenja Policy Base Routinga, njima je puno lakše pokazati zašto je sve to potrebno.
MultiWAN i povratni odlazni (izlazni) promet
Čest problem s MultiWAN konfiguracijom: Mikrotik je dostupan s interneta samo preko "aktivnog" providera.
Ruteru je svejedno na koji ip je došao zahtjev, prilikom generiranja odgovora tražit će rutu u tablici rutiranja gdje je ruta preko isp1 aktivna. Nadalje, takav će paket najvjerojatnije biti filtriran na putu do primatelja.
Još jedna zanimljiva točka. Ako je "jednostavni" izvor nat konfiguriran na ether1 sučelju: /ip fi nat add out-interface=ether1 action=masquerade
paket će ići online sa src. adresa=10.10.10.100, što stvari čini još gorima.
Postoji nekoliko načina za rješavanje problema, ali svaki od njih će zahtijevati dodatne tablice usmjeravanja:
/ip route
add dst-address=0.0.0.0/0 gateway=10.10.10.1 check-gateway=ping distance=1
add dst-address=0.0.0.0/0 gateway=10.20.20.1 check-gateway=ping distance=2
add dst-address=0.0.0.0/0 gateway=10.10.10.1 routing-mark=over-isp1
add dst-address=0.0.0.0/0 gateway=10.20.20.1 routing-mark=over-isp2
Koristiti [IP]->[Route]->[Rules]
Odredite tablicu usmjeravanja koja će se koristiti za pakete s navedenim izvornim IP-om.
/ip route rule
add src-address=10.10.10.100/32 action=lookup-only-in-table table=over-isp1
add src-address=10.20.20.200/32 action=lookup-only-in-table table=over-isp2
Može se koristiti action=lookup
, ali za lokalni odlazni promet ova opcija potpuno isključuje veze s pogrešnog sučelja.
- Sustav generira paket odgovora sa Src. Adresa: 10.20.20.200
- Korak Routing Decision(2) provjerava
[IP]->[Routes]->[Rules]
a paket se šalje u tablicu usmjeravanja prekomjerni isp2 - Prema tablici usmjeravanja, paket mora biti poslan na gateway 10.20.20.1 preko ether2 sučelja
Ova metoda ne zahtijeva radni Tragač veze, za razliku od korištenja Mangle tablice.
Koristiti [IP]->[Firewall]->[Mangle]
Veza počinje s dolaznim paketom, pa ga označavamo (action=mark-connection
), za odlazne pakete s označene veze postavite oznaku usmjeravanja (action=mark-routing
).
/ip firewall mangle
#Маркировка входящих соединений
add chain=input in-interface=ether1 connection-state=new action=mark-connection new-connection-mark=from-isp1
add chain=input in-interface=ether2 connection-state=new action=mark-connection new-connection-mark=from-isp2
#Маркировка исходящих пакетов на основе соединений
add chain=output connection-mark=from-isp1 action=mark-routing new-routing-mark=over-isp1 passthrough=no
add chain=output connection-mark=from-isp2 action=mark-routing new-routing-mark=over-isp2 passthrough=no
Ako je nekoliko IP-ova konfigurirano na jednom sučelju, možete dodati uvjetu dst-address
biti siguran.
- Paket otvara vezu na ether2 sučelju. Paket ide u
[INPUT|Mangle]
koji kaže označiti sve pakete iz veze kao od-isp2 - Sustav generira paket odgovora sa Src. Adresa: 10.20.20.200
- U fazi Routing Decision(2) paket se, u skladu s tablicom usmjeravanja, šalje na gateway 10.20.20.1 preko ether1 sučelja. To možete provjeriti prijavom paketa
[OUTPUT|Filter]
- Na pozornici
[OUTPUT|Mangle]
oznaka veze je provjerena od-isp2 a paket prima oznaku rute prekomjerni isp2 - Korak Routing Adjusment(3) provjerava prisutnost oznake usmjeravanja i šalje je u odgovarajuću tablicu usmjeravanja
- Prema tablici usmjeravanja, paket mora biti poslan na gateway 10.20.20.1 preko ether2 sučelja
MultiWAN i povratni dst-nat promet
Primjer je složeniji, što učiniti ako postoji poslužitelj (na primjer, web) iza usmjerivača na privatnoj podmreži i morate mu omogućiti pristup putem bilo kojeg od pružatelja usluga.
/ip firewall nat
add chain=dstnat proto=tcp dst-port=80,443 in-interface=ether1 action=dst-nat to-address=192.168.100.100
add chain=dstnat proto=tcp dst-port=80,443 in-interface=ether2 action=dst-nat to-address=192.168.100.100
Suština problema bit će ista, rješenje je slično opciji Firewall Mangle, samo će se koristiti drugi lanci:
/ip firewall mangle
add chain=prerouting connection-state=new in-interface=ether1 protocol=tcp dst-port=80,443 action=mark-connection new-connection-mark=web-input-isp1
add chain=prerouting connection-state=new in-interface=ether2 protocol=tcp dst-port=80,443 action=mark-connection new-connection-mark=web-input-isp2
add chain=prerouting connection-mark=web-input-isp1 in-interface=ether3 action=mark-routing new-routing-mark=over-isp1 passthrough=no
add chain=prerouting connection-mark=web-input-isp2 in-interface=ether3 action=mark-routing new-routing-mark=over-isp2 passthrough=no
Dijagram ne prikazuje NAT, ali mislim da je sve jasno.
MultiWAN i izlazne veze
Možete koristiti PBR mogućnosti za stvaranje više vpn (SSTP u primjeru) veza s različitih sučelja usmjerivača.
Dodatne tablice usmjeravanja:
/ip route
add dst-address=0.0.0.0/0 gateway=192.168.100.1 routing-mark=over-isp1
add dst-address=0.0.0.0/0 gateway=192.168.200.1 routing-mark=over-isp2
add dst-address=0.0.0.0/0 gateway=192.168.0.1 routing-mark=over-isp3
add dst-address=0.0.0.0/0 gateway=192.168.100.1 distance=1
add dst-address=0.0.0.0/0 gateway=192.168.200.1 distance=2
add dst-address=0.0.0.0/0 gateway=192.168.0.1 distance=3
Oznake paketa:
/ip firewall mangle
add chain=output dst-address=10.10.10.100 proto=tcp dst-port=443 action=mark-routing new-routing-mark=over-isp1 passtrough=no
add chain=output dst-address=10.10.10.101 proto=tcp dst-port=443 action=mark-routing new-routing-mark=over-isp2 passtrough=no
add chain=output dst-address=10.10.10.102 proto=tcp dst-port=443 action=mark-routing new-routing-mark=over-isp3 passtrough=no
Jednostavna NAT pravila, inače će paket napustiti sučelje s pogrešnim Src-om. adresa:
/ip firewall nat
add chain=srcnat out-interface=ether1 action=masquerade
add chain=srcnat out-interface=ether2 action=masquerade
add chain=srcnat out-interface=ether3 action=masquerade
Raščlanjivanje:
- Usmjerivač stvara tri SSTP procesa
- U fazi Odluke o usmjeravanju (2), odabire se ruta za te procese na temelju glavne tablice usmjeravanja. S iste rute, paket prima Src. Adresa vezana za ether1 sučelje
- В
[Output|Mangle]
paketi iz različitih veza dobivaju različite oznake - Paketi ulaze u tablice koje odgovaraju oznakama u fazi Routing Adjusment i dobivaju novu rutu za slanje paketa
- Ali paketi još uvijek imaju Src. Obraćanje iz ether1, na pozornici
[Nat|Srcnat]
adresa je zamijenjena prema sučelju
Zanimljivo, na ruteru ćete vidjeti sljedeću tablicu povezivanja:
Connection Tracker radi ranije [Mangle]
и [Srcnat]
, dakle sve veze dolaze s iste adrese, ako pogledate detaljnije, onda u Replay Dst. Address
bit će adrese nakon NAT-a:
Na VPN poslužitelju (imam jedan na testnom stolu) možete vidjeti da sve veze dolaze s ispravnih adresa:
Držite se puta
Postoji lakši način, možete jednostavno odrediti određeni pristupnik za svaku od adresa:
/ip route
add dst-address=10.10.10.100 gateway=192.168.100.1
add dst-address=10.10.10.101 gateway=192.168.200.1
add dst-address=10.10.10.102 gateway=192.168.0.1
Ali takve će rute utjecati ne samo na odlazni nego i na tranzitni promet. Osim toga, ako vam ne treba promet prema vpn poslužitelju za prolaz kroz neprikladne komunikacijske kanale, tada ćete morati dodati još 6 pravila [IP]->[Routes]
с type=blackhole
. U prethodnoj verziji - 3 pravila u [IP]->[Route]->[Rules]
.
Distribucija korisničkih priključaka po komunikacijskim kanalima
Jednostavni, svakodnevni poslovi. Opet će biti potrebne dodatne tablice usmjeravanja:
/ip route
add dst-address=0.0.0.0/0 gateway=10.10.10.1 dist=1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.20.20.1 dist=2 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.10.10.1 dist=1 routing-mark=over-isp1
add dst-address=0.0.0.0/0 gateway=10.20.20.1 dist=1 routing-mark=over-isp2
Korištenje [IP]->[Route]->[Rules]
/ip route rules
add src-address=192.168.100.0/25 action=lookup-only-in-table table=over-isp1
add src-address=192.168.100.128/25 action=lookup-only-in-table table=over-isp2
Ako koristite action=lookup
, tada kada je jedan od kanala onemogućen, promet će ići na glavnu tablicu i ići kroz radni kanal. Je li to potrebno ili ne, ovisi o zadatku.
Koristeći oznake u [IP]->[Firewall]->[Mangle]
Jednostavan primjer s popisima IP adresa. U principu, mogu se koristiti gotovo svi uvjeti. Jedino upozorenje sloja 7, čak i kada je uparen s oznakama veze, može se činiti da sve radi ispravno, ali će dio prometa i dalje ići u krivom smjeru.
/ip firewall mangle
add chain=prerouting src-address-list=users-over-isp1 dst-address-type=!local action=mark-routing new-routing-mark=over-isp1
add chain=prerouting src-address-list=users-over-isp2 dst-address-type=!local action=mark-routing new-routing-mark=over-isp2
Možete "zaključati" korisnike u jednu tablicu usmjeravanja [IP]->[Route]->[Rules]
:
/ip route rules
add routing-mark=over-isp1 action=lookup-only-in-table table=over-isp1
add routing-mark=over-isp2 action=lookup-only-in-table table=over-isp2
Bilo kroz [IP]->[Firewall]->[Filter]
:
/ip firewall filter
add chain=forward routing-mark=over-isp1 out-interface=!ether1 action=reject
add chain=forward routing-mark=over-isp2 out-interface=!ether2 action=reject
Retreat profesionalac dst-address-type=!local
Dodatni uvjet dst-address-type=!local
potrebno je da promet od korisnika dođe do lokalnih procesa rutera (dns, winbox, ssh, ...). Ako je nekoliko lokalnih podmreža spojeno na usmjerivač, potrebno je osigurati da promet između njih ne ide na Internet, na primjer, koristeći dst-address-table
.
U primjeru pomoću [IP]->[Route]->[Rules]
nema takvih iznimaka, ali promet doseže lokalne procese. Činjenica je da ulazak u FIB paket označen u [PREROUTING|Mangle]
ima oznaku rute i ide u tablicu usmjeravanja koja nije glavna, gdje nema lokalnog sučelja. U slučaju Routing Rules, prvo se provjerava je li paket namijenjen lokalnom procesu i tek u User PBR fazi ide u navedenu tablicu usmjeravanja.
Korištenje [IP]->[Firewall]->[Mangle action=route]
Ova radnja radi samo u [Prerouting|Mangle]
i omogućuje vam usmjeravanje prometa na navedeni pristupnik bez korištenja dodatnih tablica usmjeravanja, izravnim navođenjem adrese pristupnika:
/ip firewall mangle
add chain=prerouting src-address=192.168.100.0/25 action=route gateway=10.10.10.1
add chain=prerouting src-address=192.168.128.0/25 action=route gateway=10.20.20.1
posljedica route
ima niži prioritet od pravila usmjeravanja ([IP]->[Route]->[Rules]
). U slučaju oznaka rute, sve ovisi o položaju pravila, ako pravilo s action=route
vrijedi više od action=mark-route
, tada će se koristiti (bez obzira na zastavu passtrough
), inače označava rutu.
Na wikiju ima vrlo malo informacija o ovoj radnji i svi su zaključci dobiveni eksperimentalno, u svakom slučaju, nisam našao mogućnosti kada korištenje ove opcije daje prednosti u odnosu na druge.
Dinamičko balansiranje temeljeno na PPC-u
Per Connection Classifier - je fleksibilniji analog ECMP-a. Za razliku od ECMP-a, on strože dijeli promet po vezama (ECMP ne zna ništa o vezama, ali kad se upari s Routing Cacheom, dobije se nešto slično).
PCC uzima navedena polja iz ip zaglavlja, pretvara ih u 32-bitnu vrijednost i dijeli s nazivnik. Ostatak podjele uspoređuje se s navedenim ostatak i ako se podudaraju, tada se primjenjuje navedena radnja.
Primjer s tri adrese:
192.168.100.10: 192+168+100+10 = 470 % 3 = 2
192.168.100.11: 192+168+100+11 = 471 % 3 = 0
192.168.100.12: 192+168+100+12 = 472 % 3 = 1
Primjer dinamičke distribucije prometa po src.address između tri kanala:
#Таблица маршрутизации
/ip route
add dst-address=0.0.0.0/0 gateway=10.10.10.1 dist=1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.20.20.1 dist=2 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.30.30.1 dist=3 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.10.10.1 dist=1 routing-mark=over-isp1
add dst-address=0.0.0.0/0 gateway=10.20.20.1 dist=1 routing-mark=over-isp2
add dst-address=0.0.0.0/0 gateway=10.30.30.1 dist=1 routing-mark=over-isp3
#Маркировка соединений и маршрутов
/ip firewall mangle
add chain=prerouting in-interface=br-lan dst-address-type=!local connection-state=new per-connection-classifier=src-address:3/0 action=mark-connection new-connection-mark=conn-over-isp1
add chain=prerouting in-interface=br-lan dst-address-type=!local connection-state=new per-connection-classifier=src-address:3/1 action=mark-connection new-connection-mark=conn-over-isp2
add chain=prerouting in-interface=br-lan dst-address-type=!local connection-state=new per-connection-classifier=src-address:3/2 action=mark-connection new-connection-mark=conn-over-isp3
add chain=prerouting in-interface=br-lan connection-mark=conn-over-isp1 action=mark-routing new-routing-mark=over-isp1
add chain=prerouting in-interface=br-lan connection-mark=conn-over-isp2 action=mark-routing new-routing-mark=over-isp2
add chain=prerouting in-interface=br-lan connection-mark=conn-over-isp3 action=mark-routing new-routing-mark=over-isp3
Kod označavanja ruta postoji dodatni uvjet: in-interface=br-lan
, bez toga pod action=mark-routing
odgovor promet s Interneta će dobiti i, u skladu s tablicama usmjeravanja, vratit će se davatelju.
Prebacivanje komunikacijskih kanala
Provjera pinga je dobar alat, ali provjerava samo vezu s najbližim IP peerom, mreže pružatelja usluga obično se sastoje od velikog broja usmjerivača i prekid veze može se dogoditi izvan najbližeg peera, a tu su i telekomunikacijski operateri okosnice koji također mogu imate problema, općenito provjera pinga ne prikazuje uvijek ažurne informacije o pristupu globalnoj mreži.
Ako pružatelji usluga i velike korporacije imaju BGP protokol dinamičkog usmjeravanja, tada kućni i uredski korisnici moraju samostalno smisliti kako provjeriti pristup Internetu putem određenog komunikacijskog kanala.
Obično se koriste skripte koje putem određenog komunikacijskog kanala provjeravaju dostupnost ip adrese na internetu, pri čemu se bira nešto pouzdano, na primjer, google dns: 8.8.8.8. 8.8.4.4. No, u zajednici Mikrotik za to su prilagodili zanimljiviji alat.
Nekoliko riječi o rekurzivnom usmjeravanju
Rekurzivno usmjeravanje je neophodno pri izgradnji Multihop BGP peeringa i dospjelo je u članak o osnovama statičkog usmjeravanja samo zahvaljujući lukavim MikroTik korisnicima koji su se dosjetili kako koristiti rekurzivne rute uparene s check gatewayom za prebacivanje komunikacijskih kanala bez dodatnih skripti.
Vrijeme je da općenito shvatite opcije opsega/ciljanog opsega i kako je ruta vezana za sučelje:
- Ruta traži sučelje za slanje paketa na temelju njegove vrijednosti opsega i svih unosa u glavnoj tablici s manjim ili jednakim vrijednostima ciljanog opsega
- Od pronađenih sučelja odabire se ono preko kojeg možete poslati paket na navedeni pristupnik
- Sučelje pronađenog spojenog unosa odabrano je za slanje paketa pristupniku
U prisustvu rekurzivne rute, sve se događa isto, ali u dvije faze:
- 1-3 Dodana je još jedna ruta povezanim rutama, preko koje se može doći do navedenog pristupnika
- 4-6 Pronalaženje rute povezane rute za "srednji" pristupnik
Sve manipulacije s rekurzivnim pretraživanjem odvijaju se u RIB-u, a samo se konačni rezultat prenosi u FIB: 0.0.0.0/0 via 10.10.10.1 on ether1
.
Primjer korištenja rekurzivnog usmjeravanja za promjenu ruta
Konfiguracija:
/ip route
add dst-address=0.0.0.0/0 gateway=8.8.8.8 check-gateway=ping distance=1 target-scope=10
add dst-address=8.8.8.8 gateway=10.10.10.1 scope=10
add dst-address=0.0.0.0/0 gateway=10.20.20.1 distance=2
Možete provjeriti hoće li se paketi slati na 10.10.10.1:
Check gateway ne zna ništa o rekurzivnom usmjeravanju i jednostavno šalje pingove na 8.8.8.8, koji je (na temelju glavne tablice) dostupan preko gatewaya 10.10.10.1.
Ako dođe do gubitka komunikacije između 10.10.10.1 i 8.8.8.8, ruta se prekida, ali paketi (uključujući testne pingove) do 8.8.8.8 nastavljaju prolaziti kroz 10.10.10.1:
Ako se veza s ether1 izgubi, tada se događa neugodna situacija kada paketi prije 8.8.8.8 prolaze kroz drugog pružatelja:
Ovo je problem ako koristite NetWatch za pokretanje skripti kada 8.8.8.8 nije dostupan. Ako je veza prekinuta, NetWatch će jednostavno raditi kroz rezervni komunikacijski kanal i pretpostaviti da je sve u redu. Riješeno dodavanjem dodatne rute filtra:
/ip route
add dst-address=8.8.8.8 gateway=10.20.20.1 distance=100 type=blackhole
Ima na habréu
I da, kada koristite takvu rezervaciju, adresa 8.8.8.8 bit će spojena na jednog od pružatelja usluga, tako da odabir nje kao izvora dns-a nije dobra ideja.
Nekoliko riječi o virtualnom usmjeravanju i prosljeđivanju (VRF)
VRF tehnologija dizajnirana je za stvaranje nekoliko virtualnih usmjerivača unutar jednog fizičkog, ovu tehnologiju naširoko koriste telekom operateri (obično u kombinaciji s MPLS-om) za pružanje L3VPN usluga klijentima s preklapajućim podmrežnim adresama:
Ali VRF u Mikrotiku organiziran je na temelju tablica usmjeravanja i ima niz nedostataka, npr. lokalne ip adrese routera dostupne su sa svih VRF-ova, možete pročitati više
primjer vrf konfiguracije:
/ip route vrf
add interfaces=ether1 routing-mark=vrf1
add interfaces=ether2 routing-mark=vrf2
/ip address
add address=192.168.100.1/24 interface=ether1 network=192.168.100.0
add address=192.168.200.1/24 interface=ether2 network=192.168.200.0
S uređaja spojenog na ether2 vidimo da ping ide na adresu routera s drugog vrf-a (i to je problem), dok ping ne ide na internet:
Za pristup Internetu potrebno je registrirati dodatnu rutu koja pristupa glavnoj tablici (u vrf terminologiji to se zove curenje rute):
/ip route
add distance=1 gateway=172.17.0.1@main routing-mark=vrf1
add distance=1 gateway=172.17.0.1%wlan1 routing-mark=vrf2
Evo dva načina curenja rute: korištenje tablice usmjeravanja: 172.17.0.1@main
i koristeći naziv sučelja: 172.17.0.1%wlan1
.
I postaviti oznake za povratni promet [PREROUTING|Mangle]
:
/ip firewall mangle
add chain=prerouting in-interface=ether1 action=mark-connection new-connection-mark=from-vrf1 passthrough=no
add chain=prerouting connection-mark=from-vrf1 routing-mark=!vrf1 action=mark-routing new-routing-mark=vrf1 passthrough=no
add chain=prerouting in-interface=ether2 action=mark-connection new-connection-mark=from-vrf2 passthrough=no
add chain=prerouting connection-mark=from-vrf2 routing-mark=!vrf1 action=mark-routing new-routing-mark=vrf2 passthrough=no
Podmreže s istom adresom
Organizacija pristupa podmrežama s istim adresiranjem na istom routeru pomoću VRF-a i netmapa:
Osnovna konfiguracija:
/ip route vrf
add interfaces=ether1 routing-mark=vrf1
add interfaces=ether2 routing-mark=vrf2
/ip address
add address=192.168.100.1/24 interface=ether1 network=192.168.100.0
add address=192.168.100.1/24 interface=ether2 network=192.168.100.0
add address=192.168.0.1/24 interface=ether3 network=192.168.0.0
pravila vatrozida:
#Маркируем пакеты для отправки в правильную таблицу маршрутизации
/ip firewall mangle
add chain=prerouting dst-address=192.168.101.0/24 in-interface=ether3 action=mark-routing new-routing-mark=vrf1 passthrough=no
add chain=prerouting dst-address=192.168.102.0/24 in-interface=ether3 action=mark-routing new-routing-mark=vrf2 passthrough=no
#Средствами netmap заменяем адреса "эфимерных" подсетей на реальные подсети
/ip firewall nat
add chain=dstnat dst-address=192.168.101.0/24 in-interface=ether3 action=netmap to-addresses=192.168.100.0/24
add chain=dstnat dst-address=192.168.102.0/24 in-interface=ether3 action=netmap to-addresses=192.168.100.0/24
Pravila usmjeravanja za povratni promet:
#Указание имени интерфейса тоже может считаться route leaking, но по сути тут создается аналог connected маршрута
/ip route
add distance=1 dst-address=192.168.0.0/24 gateway=ether3 routing-mark=vrf1
add distance=1 dst-address=192.168.0.0/24 gateway=ether3 routing-mark=vrf2
Dodavanje ruta primljenih putem dhcp-a u zadanu tablicu usmjeravanja
VRF može biti zanimljiv ako trebate automatski dodati dinamičku rutu (na primjer, od dhcp klijenta) u određenu tablicu usmjeravanja.
Dodavanje sučelja u vrf:
/ip route vrf
add interface=ether1 routing-mark=over-isp1
Pravila za slanje prometa (odlaznog i tranzitnog) kroz tablicu prekomjerni isp1:
/ip firewall mangle
add chain=output out-interface=!br-lan action=mark-routing new-routing-mark=over-isp1 passthrough=no
add chain=prerouting in-interface=br-lan dst-address-type=!local action=mark-routing new-routing-mark=over-isp1 passthrough=no
Dodatna, lažna ruta za rad odlaznog usmjeravanja:
/interface bridge
add name=bare
/ip route
add dst-address=0.0.0.0/0 gateway=bare
Ova ruta je potrebna samo kako bi lokalni odlazni paketi mogli prije proći kroz odluku o usmjeravanju (2). [OUTPUT|Mangle]
i dobiti oznaku usmjeravanja, ako postoje druge aktivne rute na usmjerivaču prije 0.0.0.0/0 u glavnoj tablici, to nije potrebno.
lanac connected-in
и dynamic-in
в [Routing] -> [Filters]
Filtriranje rute (dolazne i odlazne) je alat koji se obično koristi zajedno s protokolima dinamičkog usmjeravanja (i stoga je dostupan samo nakon instaliranja paketa usmjeravanje), ali postoje dva zanimljiva lanca u dolaznim filterima:
- Connected-In — filtriranje povezanih ruta
- dynamic-in - filtriranje dinamičkih ruta koje prima PPP i DCHP
Filtriranje vam omogućuje ne samo odbacivanje ruta, već i promjenu brojnih opcija: udaljenost, oznaka rute, komentar, opseg, ciljani opseg, ...
Ovo je vrlo precizan alat i ako možete nešto napraviti bez Routing Filtera (ali ne i skripti), onda nemojte koristiti Routing Filtere, nemojte zbunjivati sebe i one koji će konfigurirati ruter nakon vas. U kontekstu dinamičkog usmjeravanja, Routing Filteri će se koristiti mnogo češće i produktivnije.
Postavljanje oznake rute za dinamičke rute
Primjer iz kućnog routera. Imam konfigurirane dvije VPN veze i promet u njima trebao bi biti omotan u skladu s tablicama usmjeravanja. U isto vrijeme, želim da se rute automatski kreiraju kada se sučelje aktivira:
#При создании vpn подключений указываем создание default route и задаем дистанцию
/interface pptp-client
add connect-to=X.X.X.X add-default-route=yes default-route-distance=101 ...
add connect-to=Y.Y.Y.Y add-default-route=yes default-route-distance=100 ...
#Фильтрами отправляем маршруты в определенные таблицы маршрутизации на основе подсети назначения и дистанции
/routing filter
add chain=dynamic-in distance=100 prefix=0.0.0.0/0 action=passthrough set-routing-mark=over-vpn1
add chain=dynamic-in distance=101 prefix=0.0.0.0/0 action=passthrough set-routing-mark=over-vpn2
Ne znam zašto, vjerojatno greška, ali ako kreirate vrf za ppp sučelje, tada će ruta do 0.0.0.0/0 i dalje ući u glavnu tablicu. Inače bi sve bilo još lakše.
Onemogućivanje povezanih ruta
Ponekad je ovo potrebno:
/route filter
add chain=connected-in prefix=192.168.100.0/24 action=reject
Alati za otklanjanje pogrešaka
RouterOS nudi niz alata za otklanjanje pogrešaka u usmjeravanju:
[Tool]->[Tourch]
- omogućuje pregled paketa na sučeljima/ip route check
- omogućuje vam da vidite na koji će pristupnik paket biti poslan, ne radi s tablicama usmjeravanja/ping routing-table=<name>
и/tool traceroute routing-table=<name>
- ping i praćenje korištenjem navedene tablice usmjeravanjaaction=log
в[IP]->[Firewall]
- izvrstan alat koji vam omogućuje da pratite putanju paketa duž protoka paketa, ova radnja je dostupna u svim lancima i tablicama
Izvor: www.habr.com