Teme: Mikrotik

Mikrotik: Raspodela saobraćaja na više internet linkova (III deo)

Skraćena veza: http://pedja.supurovic.net/veza/6132

Prethodni članak Mikrotik: Raspodela saobraćaja na više internet linkova (II deo) je opisao potrebna podešavanja da bi se ruter i internet linkovi osposobili za korišćenje. No, kako smo videli, oba linka u toj konfiguraciji ne mogu da se koriste istovremeno, već drugi služi samo kao rezerva da uskoči ako prvi, glavni link, prestane da radi.

Ako pak imamo dva podjednako dobra linka, ne bismo želeli da jedan stoji neiskorišćen. Želeli bismo da omogućimo da se oba koriste istovremeno, a da se saobraćaj ravnomerno raspoređuje na oba dajući nam tako na raspolaganje ukupan pun protok oba linka. Vreme je da se pozabavimo i tim podešavanjem.

Označeno rutiranje

Preduslov da bi smo mogli da upravljamo rutiranjem saobraćaja je da označimo saobraćaj tako da ga možemo preusmeravati na željene rute. Moramo pripremiti i rute za označeni saobraćaj.

Uvešćemo dve oznake ruta (routing-mark):

to_wan1 – ruta preko interfejsa wan1

to_wan2 – ruta preko interfejsa wan2

U postavci internet linkava u prethodnom članku podesili smo podrazumevane rute za svaki link, ali su one bez oznaka, opšte su, i važe za sav saobraćaj. Sada ćemo podesiti dodatne rute koje će biti namenjene označenom saobraćaju.

/ip route add dst-address=0.0.0.0/0 gateway=192.168.1.1 \
      routing-mark=to_wan1 distance=5 scope=30 target-scope=10 \
      check-gateway=ping

/ip route add dst-address=0.0.0.0/0 gateway=192.168.2.1 \
      routing-mark=to_wan2 distance=5 scope=30 target-scope=10 \
      check-gateway=ping

Obe rute imaju podešen parametar routing-mark kojim je određeno da rute važe samo za saobraćaj koji ima odgovarajuće oznake. Nadalje ćemo se potruditi da sav saobraćaj ka Internetu bude označen za jednu od dve rute i tako ćemo upravljati kojim linkom će paketi odlaziti.

Ako neku konekciju propustimo da usmerimo na određenu rutu, za nju će važiti podrazumevane rute bez oznaka.

Da bismo mogli da označimo rute na konekcijama potrebn je prvo da razvrstamo same konekcije.

Označavanje konekcija

Da bismo dobro označili konekcije potrebno je malo planiranja. Za početak da vidimo šta sve treba označiti:

– dolazne konekcije ka lokalnom serveru po zadatim portovima imaju najviši prioritet u rutiranju jer ako dolazna konekcija dođe preko jednog linka preko tog istog linka se mora vratiti i nazad;

– sledeći prioritet imaju konekcije kojima je unapred određeno preko kog linka moraju ići. Iz raznih razloga možemo imati potrebu da nekom serveru ili drugom računaru odredimo dauvek ide na Internet preko jednog od linkova;

– najmanji prirotet su sve ostale konekcije koje naprosto treba ravnomerno raspoređivati po linkovima.

I za označavanje konekcija ćemo uvesti namenske oznake:

wan1_conn – konekcija koja treba da ide po linku wan1

wan2_conn – konekcija koja treba da ide po linku wan2

Svaka konekcija kojoj dodelimo oznaku konekcije (connection-mark) biće kasnije rutirana kroz odgovarajući link.

Označavanje dolaznih konekcija

Prvo ćemo označiti dolazne konekcije jer je neophodno da se te konekcije i vrate ktoz isti link kroz koji su došle.

/ip firewall mangle add \
  chain=prerouting connection-mark=no-mark connection-state=new in-interface=wan1 \
  action=mark-connection new-connection-mark=wan1_conn passthrough=yes

Označavanje se vrši u prerouting lancu, dakle pre nego što konekcija uđe u ruter. Označavaju se konekcije koje nemaju drugu oznaku (connection-mark=no-mark) i samo nove konekcije (connection-state=new) a koje dolaze kroz interfejs wan1. Konekciju označavamo (action=mark-connection) novom oznakom (new-connection-mark=wan1_conn) i puštamo na dalju obradu.

Slično uradimo i sa konekcijama koje dolaze sa interfejsa wan2:

/ip firewall mangle add \
  chain=prerouting connection-mark=no-mark connection-state=new in-interface=wan2 \
  action=mark-connection new-connection-mark=wan2_conn passthrough=yes

Označavanje unapred usmerenih konekcija

Sledeće po prioritetu su konekcije sa lokalnih računara kojima je unapred određeno preko kog linka moraju ići. Kao parametar za određivanje kud ausmeriti konekciju koristićemo liste ip adresa. Zas vaki link ćemo podesiti po listu u kju ćemo staviti IP adrese računara čije konekcije će ići preko te konekcije:

forced_wan1 – lista račuanra koji će uvek korsititi internet na interfejsu wan1

forced_wan2 – lista račuanra koji će uvek korsititi internet na interfejsu wan2

U liste ćemo upisati adrese:

/ip firewall address-list add list=forced_wan1 address=10.80.1.2
/ip firewall address-list add list=forced_wan2 address=10.80.1.11
/ip firewall address-list add list=forced_wan2 address=10.80.1.12

I sada preostaje da označimo konekcije:

/ip firewall mangle add chain=prerouting connection-mark=no-mark \
  src-address-list=forced_wan1 dst-address-type=!local \
  action=mark-connection new-connection-mark=wan1_conn \
  passthrough=yes

Označavamo ponovo u prerouting lancu, konekcije koje nisu već označene, ali ako su potekle sa IP adresa koje se nalaze u odabranoj listi (src-address-list=forced_wan1) i ako nisu usmerene ka IP adresama koje su lokalne za ruter (dst-address-type=!local). Ove konekcije označavamo sa wan1_conn. Slično činimo i za konekcije koje moraju ići preko wan2.

/ip firewall mangle add chain=prerouting connection-mark=no-mark \
src-address-list=forced_wan2 dst-address-type=!local \
action=mark-connection new-connection-mark=wan2_conn \
passthrough=yes

Usmeravanje konekcija prema drugim kriterijumima

U prethodnom primeru je kao kriterijum usmeravanja konekcija uzeta pripadnost IP adrese određenoj listi adresa. To je omogućilo da se ručno može podešavati koji lokalni računar će koristiti određeni internet link.

No, mogu se koristiti i drugi kriterijumi. Na primer mogu se sve konekcije ka određenoj IP adresi na Internetu usmeravati preko jednog linka. Mogu se usmeravati konekcije i zavisno od porta na odredištu, ili protokola, ili proriteta, ili sadržaja, ili čak i po slučajnom izboru.

Svaki kriterijum za izdvajanje konekcije može poslužiti i kao kriterijum za njeno usmeravanje na određeni internet link. Sve se svodi na to da izdvojenim konekcijama dodelimo odgovarajuću oznaku na osnovu toga na koji link želimo da ih usmerimo.

Ravnomerna raspodela ostalih konekcija

Sve ostale konekcije nemaju neki poseban prioritet po pitanju usmeravanja kroz linkove, pa ih treba ravnomerno rasporediti. Punu ravnomernost ne možemo postići jer bi to podrazumevalo i merenje opterećenja linkova i usmeravanj konekciaj na osnovu toga. Mikrotik to ne može, pa se moramo zadovoljiti nekom satističkom ravnomernoću.

Zgodan način da to izvedemo je da upotrebimo PCC (per connection classifier). Radi se o maematičkom pretvaranju određenih karakteristika konekcije u jedan 32-bitni broj. Deljenjem ovog broja sa ostatkom vršimo selekciju konekcija. Može se birati koji elementi ulaze u matematički izraz i tako određivati kako će se vršiti i raspodela.

U našem slučaju, imamo dve konekcije pa ćemo broj deliti sa dva. Ako je paran, ostatak će biti nula a ako je neparan, ostatak će biti jedinica. Tako ćemo moći da podelimo konekcije na dve grupe. Da imamo više internet konekcija, na primer pet, onda bi delili sa pet i opet na osnovu ostatka dobili pet grupa konekcija.

/ip firewall mangle add chain=prerouting \
  in-interface=lan connection-mark=no-mark dst-address-type=!local \
  per-connection-classifier=both-addresses:2/0 \
  action=mark-connection new-connection-mark=wan1_conn passthrough=yes

Slično kao i ranije, označavanje vršimo u prerouting lancu, ali ovaj put samo konekcije koje dolaze kroz lan interfejs, opet samo neoznačene i koje nisu upućene lokalnim IP adresama rutera. Dodatni filter je podela  konekcija deljenjem pcc koji je nastao od izvorične i odredišne adrese sa dva. Sve parne brojeve (per-connection-classifier=both-addresses:2/0) ćemo označiti za wan1. Slično ćemo uraditi i za wan2 samo što ćemo označavati samo neparne konekcije.

/ip firewall mangle add chain=prerouting \
  in-interface=lan connection-mark=no-mark dst-address-type=!local \
  per-connection-classifier=both-addresses:2/1 \
  action=mark-connection new-connection-mark=wan2_conn passthrough=yes

Označavanje ruta u konekcijama

Kada su prethodnim pravilima označene konekcije prema tome kroz koji link treba da budu usmerene preostaje nam samo u njih, na osnovu tih oznaka upišemo oznake ruta, kako bi konekcije bila sprovedene kroz odgovarajuće rute.

Kriterijum označavanja je jednostavan: ako konekcija ima oznaku da treba da bude usmerena kroz određeni link, onda ćemo joj upisati oznaku rute koja odgovara tom linku.

Prvo ćemo označiti konekcije koje potiču od samog rutera. Njih hvatamo u output lancu:

/ip firewall mangle add chain=output \
  connection-mark=wan1_conn out-interface=!lan \
  action=mark-routing new-routing-mark=to_wan1 passthrough=yes

Dakle, hvatamo konekcije koje imaju oznaku wan1_conn, i ne izlaze na lan interfejs, upisujemo im oznaku rute (action=mark-routing) koja usmerava konekciju preko wan1 interfejsa (new-routing-mark=to_wan1). Slično radimo i za konekcije preko drugog linka:

/ip firewall mangle add chain=output \
  connection-mark=wan2_conn out-interface=!lan \
  action=mark-routing new-routing-mark=to_wan2 passthrough=yes

Ostaje da označimo i konekcije koje iz lokalne mreže prolaze kroz ruter prema Internetu:

/ip firewall mangle add chain=prerouting \
  in-interface=lan connection-mark=wan1_conn \
  action=mark-routing new-routing-mark=to_wan1 passthrough=yes

Hvatamo konekcije ulaze kroz lan interfejs i imaju oznaku konekcije wan1_conn i upisujemo oznaku rute to_wan1. Slično radimo i za wan2:

/ip firewall mangle add chain=prerouting \
  in-interface=lan connection-mark=wan2_conn \
  action=mark-routing new-routing-mark=to_wan2 passthrough=yes

Ovo su sva podešavanja. Ruter će sada ispravno rutirati sve što smo želeli i omogućeno je da imamo ravnomerno raspoređen saobraćaj iz lokalne mreže ka Inernetu ali i da nam rade dolazne konekcije ka serveru po oba linka. Ako se desi da neki od linkova prestane da radi, konekcije će se usmeravati preko linka koji ostane u funkciji.

Šta sa više linkova?

Ako imate više od dva linka na ruteru potrebna su relativno mala dodatna podešavanja. Najpre, sva pravila koja se odnose na wan interfejse moraju biti podešena za svaki interfejs. U našem primeru imali smo interfejse wan1 i wan2. Ako vi imate više interfejsa za svaki podesite pravila na isti način kako to je to rađeno u ovom primeru, za svaki interfejs posebno.

Kod PCC označavanja, deljenje sa ostatkom treba podesiti tako da se pcc deli sa brojem wan interfejsa. U našem primeru smo delili sa 2 i poredili sa ostatkom 0 i 1, a vi ako imate više wan interfejsa delite sa brojem interfejsa i poredite sa svim mogućim ostacima nakon deljenja.


Podelite ovaj članak sa prijateljima


7 comments to Mikrotik: Raspodela saobraćaja na više internet linkova (III deo)

  • Mladen

    Postovani Pedja,
    Ovo uputstvo je veoma korisno i lepo objasnjeno, svaka cast!!

    Mene interesuje kako raspodeliti linkove, tacnije dva wan linka, na dve lan grane? Konkretno load balancing.

  • Fića

    „Ako neku konekciju propustimo da usmerimo na određenu rutu, za nju će važiti podrazumevane rute bez oznaka.“

    Original source: Peđa Supurović, beležnica » Mikrotik: Raspodela saobraćaja na više internet linkova (III deo)

    Da li konekcije koje nisu markirane ukoliko ne postoji podrazumevana ruta bez oznake mogu da prave problem tako da ovakvo podesavanje ne funkcionise, odnosno da li u tabeli rutiranja moraju da postoje tri podrazumevane rute(dve oznacene i jedna bez oznake)???

    I…

    Da li je moguce ostvariti PPTP VPN konekciju sa udaljenog racunara tako da mogu da pingujem racunare u lokalnoj mrezi???

  • Ako ne postoji ruta za neku konekciju ta konekcija neće raditi.

    Podrazumevana ruta služi tome da ako z akonekicju ne postoji neka posebna ruta, onda će ići preko podrazumevanog linka.

    PPTP možeš da smestiš ili u zaseban lokalni IP opseg pa rutiraš sa ostatkom lokalne mreže ili da ga bridžuješ u lokalnu mrežu. Vidi http://pedja.supurovic.net/mikrotik-kao-pptp-server

  • Marko

    Poštovani Peđa,

    Hvala Vam na ovom fenomenalnom uputstvu. Podesio sam ga na mom RB2011 i sve radi kako treba, osim PPTP konekcije. Naime, tunel se uspostavlja bez problema, tada sa remote mašine mogu da pingam ruter, ali ne mogu da pingam lokalni opseg, niti da otvorim web servere unutar mreže ili pak da pristupim samba serveru. VPN adrese se nalaze u opsegu lokalne mreže. PPTP je postavljen prema Vašem uputstvu i radio je bez problema dok nije dodad drugi wan. Koliko sam čitao na Tik-ovom forumu problem je u Firewall-Mangle pravilima, ali nikako ne uspevam da rešim problem.

    Unapred zahvalan,
    Marko

    • Negde sam to već objašnjavao ali ne mogu da nađem gde.

      Izbegavaj da na jednom reutru imaš više WAN i više LAN konecija jer to veoma komplikuje podešavanje. uvek idi ili na jedan WAN i više LAN ili vipe WAN i jedan LAN.

      Dok si imao jedan WAN to ti je radilo kako treba. Kada si dodao još jedan WAN sada imaš na ruteru dva WAN i dva LAN (fizički LAN i VPN). Namestiti to da radi još i možeš ali je muka održavati takav ruter.

      U takvim slučajevima preporučujem da se koriste dva rutera: jedan koji će imati više WAN i jedan LAN a drugi koji će se povezivati na LAN prvog a u svojoj konfiguraciji imati jedan WAN i više LAN. Prvi ruter podesi da dolazne VPN konekcije proleđuje na drugi ruter na kome ćeš podići VPN server.

  • Branko

    Kako pravilno podesiti routing rules (Router OS 6.29)
    tako da se ruteru moze pristupati preko oba linka i da radi policy routing po IP adresi za lokalne racunare.
    Svako upustvko koje sam nasa ne pominje routing rules, i nikako ne mogu da napravim da radi policy routing, ali mogu da pristupim ruteru preko oba linka.

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Popunite izraz tako da bude tačan: *