Изборник Затворити

Микротик: Расподела саобраћаја на више интернет линкова (III део)

Скраћена веза: https://pedja.supurovic.net/veza/6132

Претходни чланак Микротик: Расподела саобраћаја на више интернет линкова (II део) је описао потребна подешавања да би се рутер и интернет линкови оспособили за коришћење. Но, како смо видели, оба линка у тој конфигурацији не могу да се користе истовремено, већ други служи само као резерва да ускочи ако први, главни линк, престане да ради.

Ако пак имамо два подједнако добра линка, не бисмо желели да један стоји неискоришћен. Желели бисмо да омогућимо да се оба користе истовремено, а да се саобраћај равномерно распоређује на оба дајући нам тако на располагање укупан пун проток оба линка. Време је да се позабавимо и тим подешавањем.

Означено рутирање

Предуслов да би смо могли да управљамо рутирањем саобраћаја је да означимо саобраћај тако да га можемо преусмеравати на жељене руте. Морамо припремити и руте за означени саобраћај.

Увешћемо две ознаке рута (routing-mark):

to_wan1 – рута преко интерфејса wan1

to_wan2 – рута преко интерфејса wan2

У поставци интернет линкава у претходном чланку подесили смо подразумеване руте за сваки линк, али су оне без ознака, опште су, и важе за сав саобраћај. Сада ћемо подесити додатне руте које ће бити намењене означеном саобраћају.

/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

Обе руте имају подешен параметар routing-mark којим је одређено да руте важе само за саобраћај који има одговарајуће ознаке. Надаље ћемо се потрудити да сав саобраћај ка Интернету буде означен за једну од две руте и тако ћемо управљати којим линком ће пакети одлазити.

Ако неку конекцију пропустимо да усмеримо на одређену руту, за њу ће важити подразумеване руте без ознака.

Да бисмо могли да означимо руте на конекцијама потребн је прво да разврстамо саме конекције.

Означавање конекција

Да бисмо добро означили конекције потребно је мало планирања. За почетак да видимо шта све треба означити:

– долазне конекције ка локалном серверу по задатим портовима имају највиши приоритет у рутирању јер ако долазна конекција дође преко једног линка преко тог истог линка се мора вратити и назад;

– следећи приоритет имају конекције којима је унапред одређено преко ког линка морају ићи. Из разних разлога можемо имати потребу да неком серверу или другом рачунару одредимо даувек иде на Интернет преко једног од линкова;

– најмањи приротет су све остале конекције које напросто треба равномерно распоређивати по линковима.

И за означавање конекција ћемо увести наменске ознаке:

wan1_conn – конекција која треба да иде по линку wan1

wan2_conn – конекција која треба да иде по линку wan2

Свака конекција којој доделимо ознаку конекције (connection-mark) биће касније рутирана кроз одговарајући линк.

Означавање долазних конекција

Прво ћемо означити долазне конекције јер је неопходно да се те конекције и врате ктоз исти линк кроз који су дошле.

/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

Означавање се врши у prerouting ланцу, дакле пре него што конекција уђе у рутер. Означавају се конекције које немају другу ознаку (connection-mark=no-mark) и само нове конекције (connection-state=new) а које долазе кроз интерфејс wan1. Конекцију означавамо (action=mark-connection) новом ознаком (new-connection-mark=wan1_conn) и пуштамо на даљу обраду.

Слично урадимо и са конекцијама које долазе са интерфејса 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

Означавање унапред усмерених конекција

Следеће по приоритету су конекције са локалних рачунара којима је унапред одређено преко ког линка морају ићи. Као параметар за одређивање куд аусмерити конекцију користићемо листе ип адреса. Зас ваки линк ћемо подесити по листу у кју ћемо ставити ИП адресе рачунара чије конекције ће ићи преко те конекције:

forced_wan1 – листа рачуанра који ће увек корситити интернет на интерфејсу wan1

forced_wan2 – листа рачуанра који ће увек корситити интернет на интерфејсу wan2

У листе ћемо уписати адресе:

/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

И сада преостаје да означимо конекције:

/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

Означавамо поново у prerouting ланцу, конекције које нису већ означене, али ако су потекле са ИП адреса које се налазе у одабраној листи (src-address-list=forced_wan1) и ако нису усмерене ка ИП адресама које су локалне за рутер (dst-address-type=!local). Ове конекције означавамо са wan1_conn. Слично чинимо и за конекције које морају ићи преко 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

Усмеравање конекција према другим критеријумима

У претходном примеру је као критеријум усмеравања конекција узета припадност ИП адресе одређеној листи адреса. То је омогућило да се ручно може подешавати који локални рачунар ће користити одређени интернет линк.

Но, могу се користити и други критеријуми. На пример могу се све конекције ка одређеној ИП адреси на Интернету усмеравати преко једног линка. Могу се усмеравати конекције и зависно од порта на одредишту, или протокола, или проритета, или садржаја, или чак и по случајном избору.

Сваки критеријум за издвајање конекције може послужити и као критеријум за њено усмеравање на одређени интернет линк. Све се своди на то да издвојеним конекцијама доделимо одговарајућу ознаку на основу тога на који линк желимо да их усмеримо.

Равномерна расподела осталих конекција

Све остале конекције немају неки посебан приоритет по питању усмеравања кроз линкове, па их треба равномерно распоредити. Пуну равномерност не можемо постићи јер би то подразумевало и мерење оптерећења линкова и усмеравањ конекциај на основу тога. Микротик то не може, па се морамо задовољити неком сатистичком равномерноћу.

Згодан начин да то изведемо је да употребимо PCC (per connection classifier). Ради се о маематичком претварању одређених карактеристика конекције у један 32-битни број. Дељењем овог броја са остатком вршимо селекцију конекција. Може се бирати који елементи улазе у математички израз и тако одређивати како ће се вршити и расподела.

У нашем случају, имамо две конекције па ћемо број делити са два. Ако је паран, остатак ће бити нула а ако је непаран, остатак ће бити јединица. Тако ћемо моћи да поделимо конекције на две групе. Да имамо више интернет конекција, на пример пет, онда би делили са пет и опет на основу остатка добили пет група конекција.

/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

Слично као и раније, означавање вршимо у prerouting ланцу, али овај пут само конекције које долазе кроз lan интерфејс, опет само неозначене и које нису упућене локалним ИП адресама рутера. Додатни филтер је подела  конекција дељењем pcc који је настао од изворичне и одредишне адресе са два. Све парне бројеве (per-connection-classifier=both-addresses:2/0) ћемо означити за wan1. Слично ћемо урадити и за wan2 само што ћемо означавати само непарне конекције.

/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

Означавање рута у конекцијама

Када су претходним правилима означене конекције према томе кроз који линк треба да буду усмерене преостаје нам само у њих, на основу тих ознака упишемо ознаке рута, како би конекције била спроведене кроз одговарајуће руте.

Критеријум означавања је једноставан: ако конекција има ознаку да треба да буде усмерена кроз одређени линк, онда ћемо јој уписати ознаку руте која одговара том линку.

Прво ћемо означити конекције које потичу од самог рутера. Њих хватамо у output ланцу:

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

Дакле, хватамо конекције које имају ознаку wan1_conn, и не излазе на lan интерфејс, уписујемо им ознаку руте (action=mark-routing) која усмерава конекцију преко wan1 интерфејса (new-routing-mark=to_wan1). Слично радимо и за конекције преко другог линка:

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

Остаје да означимо и конекције које из локалне мреже пролазе кроз рутер према Интернету:

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

Хватамо конекције улазе кроз лан интерфејс и имају ознаку конекције wan1_conn и уписујемо ознаку руте to_wan1. Слично радимо и за wan2:

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

Ово су сва подешавања. Рутер ће сада исправно рутирати све што смо желели и омогућено је да имамо равномерно распоређен саобраћај из локалне мреже ка Инернету али и да нам раде долазне конекције ка серверу по оба линка. Ако се деси да неки од линкова престане да ради, конекције ће се усмеравати преко линка који остане у функцији.

Шта са више линкова?

Ако имате више од два линка на рутеру потребна су релативно мала додатна подешавања. Најпре, сва правила која се односе на wan интерфејсе морају бити подешена за сваки интерфејс. У нашем примеру имали смо интерфејсе wan1 i wan2. Ако ви имате више интерфејса за сваки подесите правила на исти начин како то је то рађено у овом примеру, за сваки интерфејс посебно.

Код PCC означавања, дељење са остатком треба подесити тако да се pcc дели са бројем wan интерфејса. У нашем примеру смо делили са 2 и поредили са остатком 0 и 1, а ви ако имате више wan интерфејса делите са бројем интерфејса и поредите са свим могућим остацима након дељења.

7 Comments

  1. 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.

    • Peđa

      Ваше питање ниеј баш јасно. Најбоље је да га оставите на форуму наше бежичне мреже (http://forum.uzice.net/mikrotik/) где је много лакше водити дискусију.

      Потрудите да се дате што више детаља о томе шта желите да постигнете.

  2. 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 » Микротик: Расподела саобраћаја на више интернет линкова (III део)

    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???

  3. Пеђа

    Ако не постоји рута за неку конекцију та конекција неће радити.

    Подразумевана рута служи томе да ако з аконекицју не постоји нека посебна рута, онда ће ићи преко подразумеваног линка.

    PPTP можеш да сместиш или у засебан локални ИП опсег па рутираш са остатком локалне мреже или да га бриджујеш у локалну мрежу. Види https://pedja.supurovic.net/mikrotik-kao-pptp-server

  4. 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

    • Пеђа

      Негде сам то већ објашњавао али не могу да нађем где.

      Избегавај да на једном реутру имаш више WAN и више LAN конеција јер то веома компликује подешавање. увек иди или на један WAN и више LAN или випе WAN и један LAN.

      Док си имао један WAN то ти је радило како треба. Када си додао још један WAN сада имаш на рутеру два WAN и два LAN (физички LAN и VPN). Наместити то да ради још и можеш али је мука одржавати такав рутер.

      У таквим случајевима препоручујем да се користе два рутера: један који ће имати више WAN и један LAN а други који ће се повезивати на LAN првог а у својој конфигурацији имати један WAN и више LAN. Први рутер подеси да долазне VPN конекције пролеђује на други рутер на коме ћеш подићи VPN сервер.

  5. 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.

Оставите одговор на Пеђа Одустани од одговора

Ваша адреса е-поште неће бити објављена. Неопходна поља су означена *

Попуните израз тако да буде тачан: *

Ово веб место користи Акисмет како би смањило непожељне. Сазнајте како се ваши коментари обрађују.