MikroTik RouterBoard 750 home router CLI

mikrotik

Mikrotik Routerboard 750 според мен е съотношението най евтиния с най многото възможности рутер до момента на пазара. Инсталирах си един такъв у дома главно поради малките му размери, смешна консумация на ток и възможности като на висок клас маршрутизатор.

Routerboard 750 по подразбиране има стандартна конфигурация наподобяваща на всеки един домашен рутер. На WAN порта който тук е определен като ether1-gateway слуша DHCP клиент а на останлите четири предупределени за домашна мрежа DHCP сървър с мрежа 192.168.88.0/24. Routerboard 750 може да се конфигурира с webbox през Интернет броузер, с winbox – удобен интерфейс за Windows и SSH терминал подобен на bash в Linux. Аз предпочитам SSH – по удобен ми е, по подреден ми е и някак си цветовете с който са оцветени командите създават излюзия за подреденост. За да се логнем в Routerboard 750 и сме с Windows ни трябва програмата putty а ако сме Linux пишем директно в терминала ssh admin@192.168.88.1

По подразбиране рутера няма парола затова желателно е да си я създадем с комдата password.
И така, как конфигурирах Routerboard 750 у дома ще ви покажа стъпка по стъпка.

Изтривам подразбиращите птавила в защитната стена, после ще си създам мой.

ip firewall filter print
ip firewall filter remove numbers=0,1,2,3

Не ми се обажда на доставчика ми да си сменя мак адрреса затова си го сменям сам.

interface ethernet set ether1-gateway mac-address=00:0C:42:54:F4:CB

Има две мрежи които искам да ги виждам през друг маршрутизатор който в случая е 10.18.5.1

ip route add dst-address=10.0.0.0/8 gateway=10.18.5.1
ip route add dst-address=212.233.128.0/17 gateway=10.18.5.1

Този тип маршрутизатори нямат батерии и естественно часовника все не е верен а аз обичам да си гледам логовете и затова конфигурирам ntp и часовата зона където се намирам.

system ntp client set enabled=yes primary-ntp=194.12.244.109 mode=unicast secondary-ntp=212.72.211.18
system clock set time-zone-name=Europe/Sofia

UPNP протокола е много важно нещо което слухти какви портове отварят клиенсктите компютри и прави съшото на WAN порта. По този начин много приложения въобще не осещат, че преминават през NAT.

ip upnp set enabled=yes
ip upnp interfaces add interface=ether1-gateway type=external disabled=no
ip upnp interfaces add interface=ether2-local-master type=internal disabled=no

Винаги е хубаво да си имаме собствен кеширащ DNS сървър.

ip dns set allow-remote-requests=yes

Това е в случай, че решите да наблюдавате какво се случва с рутера ви с програмата Dude която си е на Mikrotik (безплатна е и я има на сайта) или пък както аз правя мониторинг с MRTG от друга Linux машина.

snmp set enabled=yes trap-community=public

Променяме името на рутера на home

system identity set name=home

И естествено идва момента на разпределянето на скоростите. Тъй като аз оставих подразбиращата се конфигурация на рутер DHCP сървъра вдига автоматично ип адресите на мойте локални клиенти. Самият DHCP записва тази информация защото запазва всеки адрес който дава за определено време на същия компютър на базата на неговия MAC. Затова аз трябва първо да асоциирам всеки MAC адрес към IP такъв за да мога по късно да определя кой каква скорост ще притежава.
С командата:

ip dhcp-server lease print
Flags: X - disabled, R - radius, D - dynamic, B - blocked
 #   ADDRESS                  MAC-ADDRESS       HOS... SERVER    RAT... STATUS
 0 D 192.168.88.253           00:1B:77:D6:DB:3E sami   default          bound
 1 D 192.168.88.252           00:17:3F:D5:B1:71 teri   default          bound
 2 D 192.168.88.250           00:1C:23:95:39:08 DEL... default          bound
 3 D 192.168.88.248           00:50:FC:EF:D4:A2 win... default          bound
 4 D 192.168.88.242           00:21:00:00:DE:BC PC     default          bound
 5 D 192.168.88.241           08:00:27:2A:D7:8E vyatta default          bound
 6 D 192.168.88.246           94:0C:6D:80:FA:9E yani   default          bound

Виждаме кой с какъв адрес вече е асоцииран и само трябва да го фиксираме за да вдига рутера всеки път един и същ адрес на определен компютър.

ip dhcp-server lease make-static numbers=0,1,2,3,4,5,6

И отново повтаряйки предишната команда която листва адресите ние виждаме, че символа D e изчезнал след номера на всеки ред и което значи, че вече не е динамичен а статичен и с всяко рестартиране на рутера клиенсктите машини ще получават винаги едни и същи ип адреси.

ip dhcp-server lease print
Flags: X - disabled, R - radius, D - dynamic, B - blocked
 #   ADDRESS                  MAC-ADDRESS       HOS... SERVER    RAT... STATUS
 0   192.168.88.253           00:1B:77:D6:DB:3E sami   default          bound
 1   192.168.88.252           00:17:3F:D5:B1:71 teri   default          bound
 2   192.168.88.250           00:1C:23:95:39:08 DEL... default          bound
 3   192.168.88.248           00:50:FC:EF:D4:A2 win... default          bound
 4   192.168.88.242           00:21:00:00:DE:BC PC     default          bound
 5   192.168.88.241           08:00:27:2A:D7:8E vyatta default          bound
 6   192.168.88.246           94:0C:6D:80:FA:9E yani   default          bound

След тази операция можем да преминем към ограничаване на скороста на компютрите в мрежата ни. След като вече имаме IP адресите и имената компютрите трябва само да ги опишем, като важно е да се каже в часта max-limit=2M/15M, че 2М е Upload а 15M e Download както и, че priority=3 е приоритизация на трафика и колкото е по малко числото с толкова по висок приоритет е като възможното най голямо число е 8.

queue simple add target-addresses=192.168.88.253 max-limit=2M/15M name=sami priority=3
queue simple add target-addresses=192.168.88.252 max-limit=1M/5M name=teri priority=5
queue simple add target-addresses=192.168.88.250 max-limit=2M/4M name=DELLD830 priority=5
queue simple add target-addresses=192.168.88.248 max-limit=2M/10M name=winxp-75bf52102 priority=8
queue simple add target-addresses=192.168.88.246 max-limit=2M/5M name=yani priority=5

За всеки случай дали върви трафик през веригите можем да проверим с командата:

[admin@home] > queue simple print bytes
Flags: X - disabled, I - invalid, D - dynamic
 #    TARGET-ADDRESSES   DST-ADDRESS        BYTES         TOTAL-BYTES
 0    192.168.88.253/32  0.0.0.0/0          31985/64936   0
 1    192.168.88.252/32  0.0.0.0/0          387701/157... 0
 2    192.168.88.250/32  0.0.0.0/0          0/810         0
 3    192.168.88.248/32  0.0.0.0/0          30243691/1... 0
 4    192.168.88.246/32  0.0.0.0/0          0/0           0

А за отделен клиент с интервал през 5 скунди например:

[admin@home] > queue simple print from=sami interval=5 stats
Flags: X - disabled, I - invalid, D - dynamic
 0    target-addresses=192.168.88.253/32 dst-address=0.0.0.0/0 rate=6432/16448
      total-rate=0 packet-rate=11/4 total-packet-rate=0 queued-bytes=0/0
      total-queued-bytes=0 queued-packets=0/0 total-queued-packets=0
      bytes=520252/434220 total-bytes=0 packets=4474/2250 total-packets=0
      dropped=0/0 total-dropped=0 lends=579/478 total-lends=0
      borrows=3895/1772 total-borrows=0 pcq-queues=0/0 total-pcq-queues=0

Принципно има един вариант в който ако някой от клиентите усети, че може да си смени мак адреса и да позлва скороста без ограничение и го направи ние трябва да затегнем положението изкъсо. Като начало в защитната стена ще създадем правило в което само определен мак адрес който е асоцииран само с неговият IP ще премине през веригата forward на рутера.

ip firewall filter add src-address=192.168.88.253 src-mac-address=!00:1B:77:D6:DB:3E chain=forward action=drop
ip firewall filter add src-address=192.168.88.252 src-mac-address=!00:17:3F:D5:B1:71 chain=forward action=drop
ip firewall filter add src-address=192.168.88.250 src-mac-address=!00:1C:23:95:39:08 chain=forward action=drop
ip firewall filter add src-address=192.168.88.248 src-mac-address=!00:50:FC:EF:D4:A2 chain=forward action=drop
ip firewall filter add src-address=192.168.88.246 src-mac-address=!94:0C:6D:80:FA:9E chain=forward action=drop

И втората ни стъпка към затягане на коланите е да изтрием общото правило за NAT и да добавим към всеки един клиенскти адрес такова.

ip firewall nat remove numbers=0
ip firewall nat add src-address=192.168.88.253 chain=srcnat out-interface=ether1-gateway action=masquerade comment=sami
ip firewall nat add src-address=192.168.88.252 chain=srcnat out-interface=ether1-gateway action=masquerade comment=teri
ip firewall nat add src-address=192.168.88.250 chain=srcnat out-interface=ether1-gateway action=masquerade comment=DELLD830
ip firewall nat add src-address=192.168.88.248 chain=srcnat out-interface=ether1-gateway action=masquerade comment=winxp-75bf52102
ip firewall nat add src-address=192.168.88.246 chain=srcnat out-interface=ether1-gateway action=masquerade comment=yani

Това разбира е рестриктивно правило и въобще няма нужда да го правим ако конфигурацията е у дома и има 5 до 10 компютъра но ако бройката е повече найстина може да се наложи имайки впредвид колко изобретални са някой хора.

Понякога ни се налага да имаме достъп от Интернет на определена услуга от вътрешна машина. Като пример ще дам web сървър или remote desktop. Ситуацията тук е следната – стартирате един web сървър на вътрешния компютър 192.168.88.253 и remote desktop на 192.168.88.250 изпълнявате долните правила и съответно от Интернет ще отваряте web сървъра на първия компютър и ще влезете във втория с remote desktop. Този метод често се използва когато имате един публичен ип адрес даден от доставчика и няколко машини зад рутера с различни услуги.

ip firewall nat add chain=dstnat in-interface=ether1-gateway protocol=tcp dst-port=80 action=dst-nat to-addresses=192.168.88.253 to-ports=80
ip firewall nat add chain=dstnat in-interface=ether1-gateway protocol=tcp dst-port=3389 action=dst-nat to-addresses=192.168.88.250 to-ports=3389

А също и така наречения вариант DMZ представляващ всички пакети насочени към един вътрешен компютър все едно той е рутера. В този случай трябва да предупредя, че се
губи достъпа до самия рутер ако го администрирате от Интернет тъй като всички пакети са насочени към вътрешния компютър.

ip firewall nat add chain=dstnat in-interface=ether1-gateway action=dst-nat to-addresses=192.168.88.253

DMZ може да създавате само към един компютър получавайки от доставчика си един публичен IP адрес и много такива съответно за всеки IP адрес ако получавате повече. Разликата в конфигурацията ще е, че in-interface=ether1-gateway трябва да се замени с публичния адрес dst-address=10.125.3.2

ip firewall nat add chain=dstnat dst-address=10.125.3.2 action=dst-nat to-addresses=192.168.88.253

Едно от добрите неща в MikroTik са инструментите за диагностика и мониторинг на мрежата. В почти всички рутери от ниския клас липсват такива или има само пинг който пък е крайно недостатъчен и при липса на свързаност все едно си сляп и глухоням. Ще разгледам инструментите които аз ползвам като на първо място естествено е ping.

[admin@home] > ping dir.bg
194.145.63.12 64 byte ping: ttl=59 time=10 ms
194.145.63.12 64 byte ping: ttl=59 time=13 ms
194.145.63.12 64 byte ping: ttl=59 time=14 ms
194.145.63.12 64 byte ping: ttl=59 time=15 ms
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 10/13.0/15 ms

Или ping с увеличаване размера на пакетите за да се разбере пропускливоста на трасето.

[admin@home] > ping address=93.155.131.1 size=10000
93.155.131.1 10000 byte ping: ttl=62 time=4 ms
93.155.131.1 10000 byte ping: ttl=62 time=11 ms
93.155.131.1 10000 byte ping: ttl=62 time=11 ms
93.155.131.1 10000 byte ping: ttl=62 time=10 ms
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 4/9.0/11 ms

Следван от traceroute.

[admin@home] > tool traceroute dir.bg
     ADDRESS                                    STATUS
   1   212.233.179.1 119ms 5ms 210ms
   2 212.233.255.165 5ms 1ms 1ms
   3    93.155.131.1 5ms 1ms 1ms
   4   212.70.158.89 9ms 5ms 5ms
   5    109.160.0.66 timeout 13ms 5ms
   6     80.72.64.83 15ms 6ms 5ms
   7 212.116.135.209 5ms 5ms 5ms
   8 212.116.136.126 6ms 6ms 6ms
   9   194.145.63.12 14ms 5ms 6ms

Тук искам да покажа един инструмент който аз често ползвам когато клиентите се оплачат от ниска скорост. Това е ping speed, да си кажа честно нямам представа колко точно мери но дори и да не е точен е приблизително сигурен источник на информация особено ако не се намираш близо до рутера. Стандартната случка е когато клиент отваря определен сайт много бавно поради софтуерен проблем и твърди, че му е лоша свързаноста – този инструмент е перфектния вариант за откриване на проблема.

[admin@home] /tool ping-speed address=194.145.63.12
  current: 2.7Mbps
  average: 7.0Mbps
-- [Q quit|D dump|C-z pause]

ip scan е друг много полезен инструмент който аз позлвам за да сканирам обикновено вътрешната мрежа.

[admin@home] /tool ip-scan address-range=192.168.88.0/24 interface=ether2-local-master
Flags: D - dhcp
  ADDRESS         MAC-ADDRESS      TIME  DNS        SNMP  NETBIOS
  192.168.88.1                     7ms   router     home
  192.168.88.201  00:25:9C:1A:BC:0A15ms
  192.168.88.239  00:21:63:09:C2:8E67ms
  192.168.88.252  00:17:3F:D5:B1:7162ms
  192.168.88.253  00:1B:77:D6:DB:3E67ms
-- [Q quit|D dump|C-z pause]

netwatch може да се използва за много неща но главно при мен целта му е да следя едновременно свързаноста ми с няколко хоста. Деиноста му може да се разшири доста със стартирането на скриптове при загубата на някой хост и някой други интересни неща но на мен не ми се е налагало досега.

tool netwatch add host=192.168.88.253
tool netwatch add host=93.155.131.1
tool netwatch add host=10.125.3.1
tool netwatch add host=192.168.88.252 
 
[admin@home] > tool netwatch print interval=5
Flags: X - disabled
 #   HOST            TIMEOUT              INTERVAL             STATUS  SINCE
 0   192.168.88.253  1s                   1m                   up      aug/20/2010 13:16:59
 1   93.155.131.1    1s                   1m                   up      aug/20/2010 13:20:52
 2   10.125.3.1      1s                   1m                   up      aug/20/2010 13:21:38
 3   192.168.88.252  1s                   1m                   down    aug/20/2010 13:25:03
-- [Q quit|D dump|C-z pause]

Sniffer е най мощният инструмент в мрежата той е трудно разчитаем но без съмнение дава най детайлна информация какво се случва в действителност. В реалния свят се ползва от по опитни системни администратори за по завъртяни трудно откриваеми проблеми. Въпреки всичко аз ще го покажа защото има моменти когато това е единственият спасителен пояс за откриването на проблем който вече е опънал нервите до скъсване. Първо трябва да стартираме снифера за да събере определено количество информация:

tool sniffer start

След около минута можем да го спрем:

tool sniffer stop

След което можем да извлечем нужната ни информация:

[admin@home] > tool sniffer connection print
Flags: A - active
 #   SRC-ADDRESS                                                       DST-ADDRESS                                                      BYTES      RESENDS    MSS
 0 A 192.168.88.1:22 (ssh)                                             192.168.88.253:36847                                             128/0      256/0     0/0
 1 A 192.168.88.248:2004                                               85.14.4.134:80 (http)                                            0/0        0/0       0/0
 2 A 10.125.3.2:2004                                                   85.14.4.134:80 (http)                                            0/0        0/0       0/0
 3   87.120.165.69:43196                                               10.125.3.2:2003                                                  14/0       0/0       0/0
 4   87.120.165.69:43196                                               192.168.88.248:2003                                              14/0       42/0      0/0
 5   192.168.88.248:2003                                               87.120.165.69:43196                                              0/0        0/0       0/0
 6   192.168.88.248:2003                                               87.120.165.69:43196                                              0/0        0/0       0/0
 7   192.168.88.248:2003                                               87.120.165.69:43196                                              0/0        0/0       0/0
 8 A 212.233.211.223:1955                                              212.233.172.40:59557                                             0/0        0/0       1460/0
 9 A 89.207.18.80:80 (http)                                            10.125.3.2:2007                                                  1460/806   0/0       1460/0
10 A 89.207.18.80:80 (http)                                            192.168.88.248:2007                                              1460/806   0/2418    1460/0
11 A 184.73.192.119:80 (http)                                          10.125.3.2:53140                                                 304/0      0/0       0/0
12 A 184.73.192.119:80 (http)                                          192.168.88.239:53140                                             304/0      912/0     0/0
13 A 212.233.211.223:1984                                              89.253.190.160:80 (http)                                         0/0        0/0       1460/0
14 A 212.233.211.223:1986                                              87.121.69.168:36328                                              0/0        0/0        1460/0
[admin@home] > tool sniffer host print
# ADDRESS         RATE                PEEK-RATE           TOTAL
 0 0.0.0.0         0bps/0bps           0bps/7.5kbps        0/998
 1 10.10.0.41      0bps/0bps           0bps/1248bps        0/156
 2 10.10.0.100     0bps/0bps           472bps/0bps         177/0
 3 10.31.11.130    0bps/0bps           384bps/0bps         144/0
 4 10.123.4.3      0bps/0bps           384bps/0bps         144/0
 5 10.125.3.2      0bps/0bps           22.2kbps/639.7kbps  20634/421660
 6 27.0.26.235     0bps/0bps           5.0kbps/1840bps     940/432
 7 41.215.94.189   0bps/0bps           0bps/1008bps        0/126
 8 64.12.27.27     0bps/0bps           3.0kbps/1648bps     385/206
 9 77.70.4.62      0bps/0bps           384bps/0bps         96/0
10 77.70.10.98     0bps/0bps           7.8kbps/5.1kbps     977/645
11 77.76.144.118   0bps/0bps           384bps/0bps         48/0
12 77.78.10.77     0bps/0bps           384bps/0bps         96/0
13 77.78.41.29     0bps/0bps           44.2kbps/52.6kbps   6928/7232
14 77.85.127.188   0bps/0bps           20.7kbps/23.2kbps   2835/3780
15 77.85.136.157   0bps/0bps           384bps/0bps         144/0
16 77.85.160.15    0bps/0bps           384bps/0bps         96/0
17 77.85.163.216   0bps/0bps           5.5kbps/0bps        2085/0
18 77.242.168.170  0bps/0bps           0bps/1072bps        0/134
19 78.83.124.236   0bps/0bps           384bps/0bps         96/0
20 78.90.137.21    0bps/0bps           2.0kbps/2.0kbps     255/255
21 78.128.15.23    0bps/0bps           384bps/0bps         144/0
22 78.144.227.42   0bps/0bps           384bps/0bps         144/0
23 79.100.67.105   0bps/0bps           384bps/0bps         96/0
24 79.100.69.92    0bps/0bps           384bps/0bps         144/0
25 79.132.0.138    0bps/0bps           384bps/0bps         48/0
26 79.132.14.101   0bps/0bps           26.8kbps/31.0kbps   3568/4352
27 84.43.150.245   0bps/0bps           3.1Mbps/43.8kbps    1839000/31970
28 84.54.186.56    0bps/0bps           384bps/0bps         48/0
29 85.11.188.187   0bps/0bps           384bps/0bps         144/0
30 85.104.155.8    0bps/0bps           115.6kbps/5.2kbps   46609/3595
31 87.120.26.35    0bps/0bps           384bps/0bps         144/0
32 87.120.106.96   0bps/0bps           768bps/0bps         384/0
33 87.120.208.114  0bps/0bps           384bps/0bps         96/0
34 87.121.210.50   0bps/0bps           384bps/0bps         96/0
35 87.126.227.52   0bps/0bps           384bps/0bps         48/0
36 87.246.53.227   0bps/0bps           384bps/0bps         96/0
[admin@home] > tool sniffer packet print
 # TIME    INTERFACE SRC-ADDRESS                                                      DST-ADDRESS                                                     IP-PROTOCOL SIZE
 
[admin@home] > tool sniffer protocol print
 # PROTOCOL IP-PROTOCOL PORT                                                                                                         PACKETS    BYTES     SHARE
 0 ip                                                                                                                                37         10944     100%
 1 ip       tcp                                                                                                                      13         1056      9.64%
 2 ip       udp                                                                                                                      24         9888      90.35%
 0 ip       tcp         2048                                                                                                         13         1056      9.64%
 0 ip       udp         2048                                                                                                         24         9888      90.35%

Също много удобен е torch монитор за трафик в реално време. Тук ще дам само три кратки примера.

[admin@home] /tool torch ether1-gateway  protocol=any-ip
PROTOCOL TX         RX         TX-PACKETS RX-PACKETS
tcp      4.8kbps    418.6kbps  15         35
udp      10.8kbps   5.7kbps    9          4
icmp     0bps       448bps     0          1
 
[admin@home] /tool torch ether1-gateway  protocol=any-ip port=any
PROTOCOL SRC-PORT                             DST-PORT         TX         RX         TX-PACKETS RX-PACKETS
tcp      80 (http)                            62430            6.0kbps    538.6kbps  19         45
tcp      51325                                26713            0bps       368bps     0          1
udp      138 (netbios-dgm)                                     0bps       1936bps    0          1
udp      6771                                                  0bps       3.5kbps    0          3
udp      21608                                26713            2.4kbps    1048bps    1          1
 
[admin@home]/ tool torch interface=ether2-local-master  src-address=192.168.88.0/24 protocol=any
PROTOCOL SRC-ADDRESS     TX         RX         TX-PACKETS RX-PACKETS
tcp      192.168.88.254  4.2kbps    832bps     2          2
tcp      192.168.88.242  538.6kbps  7.7kbps    45         21
udp      192.168.88.242  0bps       984bps     0          1
igmp     192.168.88.242  0bps       368bps     0          1
udp      192.168.88.243  456bps     5.2kbps    1          1

Но най добрия мониторинг си остава графиката от една страна защото тя показва във времето една година назад какво се е случило а от друга може да се наблюдава през уеб с Internet Explorer, Firefox и Chrome например.

tool graphing interface add allow-address=0.0.0.0/0 interface=all store-on-disk=yes
tool graphing queue add allow-address=0.0.0.0/0 store-on-disk=yes allow-target=yes
tool graphing resource add allow-address=0.0.0.0/0 store-on-disk=yes

Адреса на който трябва да посетите за да разгледате графиката си по подразбиране е:
http://192.168.88.1/graphs/

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

This Post Has One Comment

  1. Puppy

    Strahoten Article kolega, tocho tezi ruteri me interesuvat podochuh che sa dosta funcionalni i ti me ubedi v tova. Prodyljavai v syshtiq duh, mnogo dobre detailno i posledovatelno si go obqsnil Cheers!