Mikrotik RouterOS na PC-u

Dana siječanj 10th, 2012, objavljeno u: Mikrotik od strane Komentari isključeni za Mikrotik RouterOS na PC-u

Mikrotik RouterOS operativni sustav koji PC mašinu pretvara u dedicated router. Ima veću građenu podršku za određeni hardware pa ako smo uskladili njegove zahtjeve sa našim sklopom spreman je za rad odmah nakon instalacije. Na sam OS možemo gledati i kao na firmware koji se prilikom boota podiže u RAM i mi dalje ne možemo ništa sa njim osim konfigurisati ga. Postoji određeni mali prostor za dodatne opcije u obliku softwareskih paketa ali još ih je malo i dosta se rijetko koriste. Router je temeljen na Linux kernelu, a same komande i kretanje kroz meni jako podsjeća na CISCO IOS. Ovaj router će nam služiti kao izlaz mreže na Internet. Internet biti dozvoljen korisnicima preko pppoe servisa radi lakšeg praćenja potrošnje i korištenja prometa. Dakle router će ovdje biti pppoe AccessConcentrator.

Prvo što se radi nakon paljenja mikrotika je postavljanje Interface –a i promjena password –a. Password se mijenja vrlo jednostavnom naredbom password ili skraćeno pass. Sve naredbe mogu se pisati u punom obliku ili skraćeno tako da nedvosmisleno označavaju naredbu. Tako recimo ukoliko u rootu ne postoji niti jedna naredba koja počinje sa “p” osim password možemo upisati samo p. Slično je i u IOS –u. Prva i po meni glavna razlika je što se tu nemora ulaziti u konfiguracijski mod nego se odmah nalazimo u konfiguracijskom meniju. U IOS –u se ulazi u conf terminal i onda se dalje kreće u konfiguriranje. Dakle interface je potreban da bi se moglo sa udaljene lokacije konfigurirati router. Postavlja se prvo enableni interface i onda ip. To bi išlo otprilike ovako:

/interface print
enable 0, 1, 2 …
/ ip address set 0 address xxx.xxx.xxx.xxx netmask itd…

Ovi su screen shot –ovi rađeni sa remote lokacije jer je jednostavnije prikazati slike. Također router je tada većimao konfigurirani pppoe server pa su dva korisnika spojena na njega. Nakon ovih postavki router se spaja u mrežu i putty dalje radi svoje.
Pri ssh konfiguraciji dobro je znati za safe mode. CTRL + X prebacuje u safe mode i ponovnopritiskanje kombinacije vraća nazad. Ako se tu desi neka greška i router nakon otprilike 10 min ne dobije nikakav odgovor od nas (prođe TCP timeout) sve promjene nakon pokretanja biti će vraćene na prvobitno stanje. Isto možemo napraviti i sa CTRL + D.
Svi zapisi i sve što se događa na routeru bilježi se u log i history. Ovakve promjene iz safemoda imati će zastavicu F pa ih je lako uočiti ako je više korisnika spojeno.
Da bi više korisnika pristupalo jednom IP –u ili da se jedan ip prebaci na drugi i sl. koristi se NAT. Jedini NAT koji nam sada treba postaviti je da svi korisnici iza router pristupaju vanjskoj mreži sa jednog IP –a. Dakle svi source IP moraju dobiti drugi source. Sve ostalo ostaje isto. Na mikrotiku se to radi action –om masquerade. Dakle sve IP će biti prikazani iza routera kao jedna te ista IP adresa. Ali prije toga biti će potrebno podesiti pppoe server.
PPPoE (Point to Point Protocol over Ethernet) protokol omogućuje vrlo laku kontrolu korisnika, network management i obračunavanje. Trenutno PPPoE se najčešće koristi odstrane davatelja Internet usluga (Internet Service Provider, skraćeno ISP) za kontrolu spajanjana xDSL. PPPoE je dodatak na standardni Point to Point Protocol (PPP). Razlike su u prijenosnim metodama, PPPoE koristi Ethernet umjesto modem konekcije. PPPoE spoj sesastoji od klijenta i servera tačnije access concentrator –a. Klijent može biti Windows ili bilo koji drugi kompjuter sa instaliranim PPPoE klijentskim protokolom. MikroTik podržava oboje – klijentske i access concentrator implementacije PPPoE -a. Uz to on može biti i RADIUS klijent pa se sve to može i centralno održavati.

Konfiguracija:

Klijent

/interface pppoe-client add name=pppoe user=PIA password=123 interface=in1 service-name=internet disabled=no

Server

1. Adresni pool
ip pool add name=”pppoe-pool” ranges=10.1.1.1-10.1.1.72

2. PPP profile:
/ppp profile add name=”pppoe-profile” local-address=10.1.1.1 remote-address=pppoe-pool

3. Dodavanje korisnika:
/ppp secret add name=PIA password=123 service=pppoe profile=pppoe-profile

PPPoE server:
/interface pppoe-server server add service-name=internet interface=out \\… default-profile=pppoe-profile

Network Address Translation (NAT) je ruterov proces zamjene source ili destination IPadrese IP paketa dok taj paket prolazi kroz router. Najčešća mu je primjena za propuštanjeviše lokalnih korisnika na public mrežu. Također to povlači otvaranje nekih portova za pristup public mreži lokalnim servisima. Uz masquerade onda ćemo i otvoriti jedan port za eksterni pristup. Dakle jedan će biti jednostavno translation dok će drugi biti takozvani masquerade.Svi odlazni IP –ovi će biti promijenjeni tako da source IP odgovara vanjskom IP routera.

Prvo nam treba svaki source prebaciti na vanjski IP tj. interface out. Pošto destination IPnaravno ostaje isti tu se koristi masquerade.

/ip firewall srcadd src-address=10.0.0.0/8 out-interface=out action=masquerade

Ovim smo prebacili adrese za korištenje interneta.

Na kraju to izgleda ovako:
0 src-address=10.0.0.0/8:0-65535 dst-address=0.0.0.0/0:0-65535out-interface=out protocol=all icmp-options=any:any flow=””connection=”” content=”” limit-count=0 limit-burst=0 limit-time=action=masquerade to-src-address=0.0.0.0 to-src-port=0-65535

Ovo je bio src NAT. Ali kod nata nastaje problem što ako smo maskirani iza određene adrese niko izvana ne može inicirati vezu pošto router neće znati kome da proslijedi taj promet. Svaki zapis o promjeni ostaje u Router tabelama. Kada se paket vrati on pogleda u tabelu iznad kome je namijenjen. Ovdje u gornjem slučaju ta tabela ne postoji. Kod servera kojima je zadatak upravo to može doći do problema.
Ako trebamo neki određeni servis sa vanjske mreže preusmjeriti na unutarnju to radimo dst-nat om. Recimo da želimo koristiti nekakav komunikacijski program koji radi na portu 2525udp, a nalazi se na internoj ip adresi 10.0.0.2 tada bi postavke išle ovako:

src-address=0.0.0.0/0:0-65535 in-interface=XXLadsl-cl
dst-address=0.0.0.0/0:2525 protocol=udp icmp-options=any:any flow=””
connection=”” content=”” src-mac-address=00:00:00:00:00:00
limit-count=0 limit-burst=0 limit-time=0s action=nat
to-dst-address=10.0.0.2 to-dst-port=2525

S ovime smo internet zgotovili. Pinganje i slično bi trebalo proći osim u slučaju da se koriste imena domena, pošto DNS nije još postavljen. Ovaj router podržava DNS cash koji je DNS tabele spremati na određeno vrijeme tako da se minimalizira nepotrebni promet prema van. Uz sam promet koji je minimalan smanjuje i vrijeme potrebno za tako nešto.

Postavljanje DNS-a:

/ ip dnsset primary-dns=195.29.150.3 secondary-dns=195.29.150.4

Postavljanje i aktiviranje DNS–cash –a

/ ip dns-cash
set primary-dns=195.29.150.3 secondary-dns=195.29.150.4 disable=no size=1024

Router je sada spreman za rad. Ostalo je dotjeravanje i poboljšanje veza. Prvo treba minimalizirati bilo kakve sigurnosne prijetnje. Sve što ne treba može biti potencijalna prijetnja. Router ima nekoliko servisa po defaultu pokrenutih koji neće trebati i mogu se isključiti.

/ ip service print nam otkriva pokrenute servise:

Servisi sa X predstavljaju disable –ane a bez pokrenute servise. Telnet uz ssh je potpuno nepotreban, hotspot se tu ne koristi a ftp i www koji puta zatrebaju ali se vrlo kratkim postupkom lako uključe.

Uključivanje servisa se obavlja set naredbom:
/ ip service print
set 0 disable=no ili kraće enable=0

Uz to možemo dodijeliti i određenu IP adresu s koje se može pristupiti servisu tako da se još više podigne razina sigurnosti.

Pričati o sigurnosti bez firewalla je nemoguče tako da ćemo slijedeće firewall riješiti. Mikrotikov firewall je jedan od njegovih jačih dijelova. Može se doista limitirati sve i svašta. Firewall ima tri glavna rula. Jedan koji se gleda ako je paket namijenjen routeru (in) jedan koji izlazi iz routera (out) i jedan koji prolazi router (forward).

Svi oni rade na principu prvog podudaranja. Nakon toga sve što je ispod uopće se ne gleda. Dakle kada se nađe podudaranje poduzima se neka akcija. Ali ako se ne nađe niti jedno podudaranje nastupa default akcija koja je ili allow all ili deny all. Ili – ili je ovdje pošto se zarazliku od IOS može odabrati. Defaultno je na allow zbog lakšeg konfiguriranja. Akcije koje se poduzimaju nakon podudaranja su:

accept – prihvaća paket
drop – tiho odbija paket (bez slanja ICMP poruke)
reject – odbija paket uz slanje ICMP poruke
passthrough – označava paket za kasnije procesiranje
return – vraća se u prethodni lanac (prije skoka)
jump – skače na specificirani lanac

Na gornjoj slici se vidi nekoliko in pravila (filtra). 0 odbacuje sve icmp pakete koje ulaze u router. 1 zabranjuje vanjski pristup ssh serveru.

Da bi se postavio rule koji bi odbacivao sav promet koji je namijenjen routeru sa destination port 80 treba napisati otprilike ovako:

/ip firewall rule input add protocol=tcp dst-port=80 action=drop

Kod postavljanja pravila kako firewall tako i ostalog treba imati na umu kojim redom se paketi procesiraju. Slika dole pokazuje grafički prikaz od ulaza do izlaza te redoslijed procesiranja u svim fazama, Pre i Post routing i outputu.

Sve ovo tj većina ovoga mogla se podesiti preko GUI sučelja. Program koji obavlja spajanje sa routerom se zove WinBox konzola. Ona je namijenjena korisnicima koji ne vole ili im je prekompliciran način rada kroz CLI. U pravilu su to početnici ili korisnici koji imaju samo read ovlasti.

Da bi se dozvolio useru određeni servis treba se kreirati grupa sa potrebnim pravima. Kasnije se nadoda user u tu grupu. Po defaultu postoji jedan user (admin) koji se ne može obrisati i ima potpuna prava.

I na kraju svega na kraju dolazi do queue redova i bandwidth menedžmenta. Mikrotik ima više queue mehanizama. Neki su tek za statistiku dok su drugi posta snažni bandwidth shaperi.

PFIFO – Packets First-In First-Out
BFIFO – Bytes First-In First-Out
SFQ – Stochastic Fair Queuing
RED – Random Early Detection
HTB – Hierarchical Token Bucket
PCQ – Per Connection Queue

PCQ je nama najinteresantniji za limitiranje po konekciji dok HTB za dodjeljivanje prioriteta i sl. Ovako bi se konfiguriralo dijeljenje bandwidtha između korisnika:

Označavanje prometa ciljane grupe

/ip firewall mangle add chain=forward src-address=192.168.0.0/24 action=mark-connectionnew-connection-mark=users-con
/ip firewall mangle add connection-mark=users-con action=mark-packet new-packet-mark=users chain=forward

Dodavanje queue –a

/queue type add name=pcq-download kind=pcq pcq-classifier=dst-address
/queue type add name=pcq-upload kind=pcq pcq-classifier=src-address

Dodavanje postavki queue –a

/queue tree add name=Download parent=Local max-limit=10000000
/queue tree add parent=Download queue=pcq-download packet-mark=users
/queue tree add name=Upload parent=Public max-limit=2000000
/queue tree add parent=Upload queue=pcq-upload packet-mark=users