User Tools

Site Tools


bio-sk:mikrotik_ospf

O urządzeniach MikroTik

MikroTik jest łotewską firmą (i marką) produkującą sprzęt sieciowy w segmencie od budżetowego do sprzętu dla małych/średnich firm i małych/średnich usługodawców internetowych. Oprogramowanie sprzętu firmy MikroTik, RouterOS, wyróżnia się szerokim zakresem funkcji przy względnie łatwej i dość dobrze udokumentowanej konfiguracji.

Na laboratoriach część zajęć (poza bieżącymi, sieci bezprzewodowe i kawałek zajęć z VLANów) będzie używać hAP ax².
Pracę na oprogramowaniu RouterOS można ćwiczyć używając jego darmowej wersji dla wirtualnych urządzeń, np. korzystając z programu GNS3 do łączenia kilku wirtualnych urządzeń w sieć.

Narzędzia do konfiguracji

Urządzenia MikroTik można konfigurować używając:

  • połączenia SSH lub portu szeregowego (pozwala tylko na konfigurację w trybie tekstowym),
  • łącząc się przeglądarką internetową na adres IP urządzenia do interfejsu webowego WebFig,
  • aplikacji WinBox, która potrafi połączyć się do podanego IP, lub, używając adresów rozgłoszeniowych do komunikacji, wykryć bezpośrednio podłączone urządzenia i dalej używając komunikacji rozgłoszeniowej konfigurować urządzenie nawet bez adresu IP na konfigurowanym urządzeniu.

[ekstra] Poruszanie się po konsoli

Rozwiń

Początkowa konfiguracja, trwałość

W startowej konfiguracji MikroTiki mają adres 192.168.88.1/24 na wybranych interfejsach przewodowych (używane podczas laboratoriów hAP ax² mają ten adres na ether1, inaczej niż w fabrycznej konfiguracji).
Starsze urządzenia nie mają w początkowej konfiguracji haseł, nowe mają hasła nieczytelnie wydrukowane na nalepce (te w laboratorach mają ustawione puste hasła).

Każda zmiana konfiguracji jest automatycznie zapisywana.
Po skończeniu laboratoriów trzeba zresetować konfigurację

Proszę NIE ustawiać haseł na sprzęcie laboratoryjnym:

W trybie graficznym wybieramy "Cancel":
W terminalu używamy skrótu Ctrl+c:

Resetowanie konfiguracji:

WinBox

konsola

[admin@R1] > /system/reset-configuration
Dangerous! Reset anyway? [y/N]:
Y

Ustawianie adresów i tras statycznych na urządzeniach MikroTik

Lista interfejsów jest widoczna z poziomu /interface.

Przykłady:

WinBox

konsola

[admin@R1] > /interface print
Flags: X - DISABLED; R - RUNNING
Columns: NAME, TYPE, ACTUAL-MTU, MAX-L2MTU, MAC-ADDRESS
#    NAME    TYPE      ACTUAL-MTU  MAX-L2MTU  MAC-ADDRESS
0  R ether1  ether           1500             0C:08:4F:4C:00:00
1    ether2  ether           1500             0C:08:4F:4C:00:01
2  R ether3  ether           1500             0C:08:4F:4C:00:02
3    ether4  ether           1500             0C:08:4F:4C:00:03
4    ether5  ether           1500             0C:08:4F:4C:00:04
5  R lo      loopback       65536             00:00:00:00:00:00
6 X  wifi1   wifi            1500       2290  0C:08:4F:4C:00:05
7 X  wifi2   wifi            1500       2290  0C:08:4F:4C:00:06

Zauważ że flagi pokazują czy interfejs jest włączony (wyłączone mają X) i czy nawiązał połączenie na warstwie łącza danych (wyświetla R).

Adresy IP

Konfiguracja adresów IP jest dostępna z /ip/address oraz /ipv6/address.

Przykłady:

WinBox

konsola

[admin@R1] /ip/address> add address=192.168.0.21/30 interface=ether2
[admin@R1] /ip/address> a a=10.8.1.1/24 i=ether3
[admin@R1] /ip/address> print
Columns: ADDRESS, NETWORK, INTERFACE, VRF
# ADDRESS          NETWORK       INTERFACE  VRF
0 10.8.0.1/24      10.8.0.0      ether1     main
1 192.168.0.21/30  192.168.0.20  ether2     main
2 10.8.1.1/24      10.8.1.0      ether3     main
[admin@R1] /ip/address> print detail
0  address=10.8.0.1/24 network=10.8.0.0 interface=ether1 actual-interface=ether1 vrf=main

1  address=192.168.0.21/30 network=192.168.0.20 interface=ether2 actual-interface=ether2 vrf=main

2  address=10.8.1.1/24 network=10.8.1.0 interface=ether3 actual-interface=ether3 vrf=main

ping i traceroute

Te narzędzia są dostępne jako /tool/ping i /tool/traceroute, przy czym w trybach graficznych są w kategorii Tools.
Zauważ że /tool/traceroute działa podobnie jak Linuksowy mtr – ponawia badanie trasy aż nie zostanie zatrzymany.

Przykłady:

WinBox

konsola

[admin@R1] > /tool/traceroute 10.0.0.254
Columns: ADDRESS, LOSS, SENT, LAST, AVG, BEST, WORST, STD-DEV
#  ADDRESS     LOSS  SENT  LAST     AVG   BEST  WORST  STD-DEV
0  10.8.0.10   0%      12  0.5ms    0.7   0.1   1      0.3
1              100%    12  timeout
2  10.0.1.1    0%      11  1.5ms    1.4   0.7   2      0.3
3  10.0.0.254  0%      11  19.2ms   19.1  18.2  20.5   0.6

[admin@R1] > /ping 10.0.1.9
  SEQ HOST                                     SIZE TTL TIME       STATUS                          
    0 10.0.1.9                                   56  63 745us
    1 10.0.1.9                                   56  63 1ms305us
    2 10.0.1.9                                   56  63 1ms520us
    sent=3 received=3 packet-loss=0% min-rtt=745us avg-rtt=1ms190us max-rtt=1ms520us

[admin@R1] > /tool/traceroute count=3 address=10.0.0.254
Columns: ADDRESS, LOSS, SENT, LAST, AVG, BEST, WORST, STD-DEV
#  ADDRESS     LOSS  SENT  LAST     AVG   BEST  WORST  STD-DEV
0  10.8.0.10   0%       3  0.7ms    0.7   0.4   1.1    0.3
1              100%     3  timeout
2  10.0.1.1    0%       3  1.3ms    1.1   0.9   1.3    0.2
3  10.0.0.254  0%       3  18.2ms   18.7  18.2  19.1   0.4
[admin@R1] > /ping interval=0.1 count=4 size=1000 10.0.1.9
  SEQ HOST                                     SIZE TTL TIME       STATUS                          
    0 10.0.1.9                                 1000  63 1ms655us
    1 10.0.1.9                                 1000  63 1ms373us
    2 10.0.1.9                                 1000  63 1ms375us
    3 10.0.1.9                                 1000  63 1ms646us
    sent=4 received=4 packet-loss=0% min-rtt=1ms373us avg-rtt=1ms512us max-rtt=1ms655us
Ping można używać jako /tool/ping lub /ping.
Używając autouzupełniania (klawisza Tab) możesz wyświetlić jakie parametry można podać tym narzędziom.

Trasy

Tablica tras jest podzielona na tablicę dla IPv4 (/ip/route) oraz dla IPv6 (/ipv6/route). Z tych poziomów można dodawać trasy statyczne.
RouterOS nie ma osobnego słowa kluczowego na trasę domyślną, dodając taką trasę należy podać sieć docelową 0.0.0.0/0 lub ::/0.
Metryka (koszt) trasy jest określana w sprzęcie MikroTik jako distance i oczywiście z pasujących tras o tej samej masce sieci docelowej wybierana jest trasa o najniższym koszcie.

Przykłady:

WinBox

konsola

[admin@R1] /ip/route> print
Flags: D - DYNAMIC; A - ACTIVE; c - CONNECT
Columns: DST-ADDRESS, GATEWAY, ROUTING-TABLE, DISTANCE
    DST-ADDRESS      GATEWAY  ROUTING-TABLE  DISTANCE
DAc 10.8.0.0/24      ether1   main                  0
DAc 10.8.1.0/24      ether3   main                  0
DAc 192.168.0.20/30  wifi1    main                  0
[admin@R1] /ip/route> add dst-address=0.0.0.0/0 gateway=10.8.0.10
[admin@R1] /ip/route> add dst-address=192.168.1.0/24 gateway=10.8.1.2
[admin@R1] /ip/route> add dst-address=192.168.1.0/24 gateway=192.168.0.22 distance=10
[admin@R1] /ip/route> print
Flags: D - DYNAMIC; A - ACTIVE; c - CONNECT, s - STATIC
Columns: DST-ADDRESS, GATEWAY, ROUTING-TABLE, DISTANCE
#     DST-ADDRESS      GATEWAY       ROUTING-TABLE  DISTANCE
0  As 0.0.0.0/0        10.8.0.10     main                  1
  DAc 10.8.0.0/24      ether1        main                  0
  DAc 10.8.1.0/24      ether3        main                  0
  DAc 192.168.0.20/30  wifi1         main                  0
1  As 192.168.1.0/24   10.8.1.2      main                  1
2   s 192.168.1.0/24   192.168.0.22  main                 10
[admin@R1] /ip/route>
W konsoli można też wyświetlać pełną tablicę tras z poziomu /routing/route.

[esktra] Sposoby i protokoły tworzenia tablicy tras

Rozwiń

OSPF (Open Shortest Path First)

Wstęp

OSPF to protokół trasowania (czyli tworzenia tablicy tras), do wewnątrz obszaru autonomicznego (IGP), używający podejścia stanu łącza.
W protokole OSPF routery najpierw wyszukują sąsiednich routerów, a następnie wymieniają się z nimi informacjami sieci, np. o podsieciach, o adresach IP routerów. Na podstawie takich informacji każdy router konstruuje mapę całej sieci i używa algorytmu Dijkstry dla znajdowania najkrótszych tras do wszystkich znanych podsieci.
Pojedyncza porcja informacji o sieci w protokole OSPF nazywa się LSA.

OSPF do odróżniania routerów wykorzystuje czterobajtowy identyfikator routera, zwyczajowo zapisywany tak jak adres IPv41). Jeżeli administrator sam nie wybierze identyfikatora routera, zwykle używany jest jeden z adresów IP routera.

Przy użyciu OSPF do wyznaczania tras w dużych sieciach (setki urządzeń) można podzielić sieć na obszary (ang. areas).
Przy "małych" sieciach używa się tylko obszaru 0.0.0.0.

OSPFv2 działa tylko dla IPv4, OSPFv3 stworzono dla IPv6, ale może przenosić też informacje o IPv42).

[extra] Działanie OSPF

Rozwiń

OSPF na urządzeniach MikroTik

Do działania OSPF wymaga oczywiście wcześniejszego poprawnego skonfigurowania połączeń bezpośrednich (czyli podłączenia kabli i nadania adresów IP).

Kolejne kroki konfiguracji OSPF na RouterOS to:

  1. stworzenie instancji protokołu OSPF (/routing/ospf/instance),
  2. dodanie obszaru 0.0.0.0 w tej instancji (/routing/ospf/area),
  3. określenie na których połączeniach mają być wyszukiwani sąsiedzi (/routing/ospf/interface-template),
  4. określenie które jeszcze sieci/trasy mają być ogłaszane w informacjach o sieci (część ustawień w instancji, część w interfejsach).

Uruchamianie instancji OSPF

Tworząc nową instancję (/routing/ospf/instance) zaleca się ręcznie określić identyfikator routera.
Identyfikatory muszą być unikalne – protokół będzie działać nieprawidłowo jeżeli dwa routery będą mieć ten sam identyfikator.
Jeżeli nie poda się identyfikatora ręcznie a na routerze jest jeszcze adres IP 192.168.88.1, to RouterOS może wybrać na identyfikator routera właśnie wartość 192.168.88.1. Jeżeli kilka urządzeń tak zrobi, konfiguracja nie będzie działać! W trakcie laboratoriów koniecznie ustawiaj identyfikator routera ręcznie.

W ustawieniach instancji można skonfigurować też ogłaszanie informacji o trasach spoza OSPF:

  • jeśli parametr originate-default zostanie ustawiony na if-installed, to router będzie ogłaszać swoją trasę domyślą (czyt. będzie podawał siebie jako trasę "do internetu"),
  • parametr redistribute wskazuje na źródła z których trasy będą ogłaszane po OSPF przez ten router;
    przykładowo wartość static,isis będzie dołączać do wysyłanych przez ten router informacji też informacje że ten router ma każdą3) z dodanych statycznie tras i każdą z tras które poznał używając protokołu IS-IS (tj. konkurencyjnego protokołu trasowania).

Przykłady:

WinBox

konsola

[admin@R1] /routing/ospf/instance> add name=IPv4 router-id=0.0.0.1 originate-default=if-installed
[admin@R1] /routing/ospf/instance> print
0  name="IPv4" version=2 vrf=main router-id=0.0.0.1 originate-default=if-installed
[admin@R1] /routing/ospf/instance> set IPv4 redistribute=static
[admin@R1] /routing/ospf/instance> print
0  name="IPv4" version=2 vrf=main router-id=0.0.0.1 originate-default=if-installed redistribute=static
[admin@R1] /routing/ospf/instance> unset IPv4 originate-default
[admin@R1] /routing/ospf/instance> print
0  name="IPv4" version=2 vrf=main router-id=0.0.0.1 redistribute=static
Przykład pokazuje dodanie instancji i późniejszą zmianę jej ustawień.
Nazwa jest tylko etykietą dla administratora, używaną później do wskazania którego z procesów mają dotyczyć kolejne ustawienia. To czy OSPF będzie trasować IPv4 czy IPv6 zależy od wybranej wersji OSPF.

Tworzenie obszaru i dodawanie interfejsów

W RouterOS trzeba ręcznie stworzyć dla każdej instancji OSPF obszar (/routing/ospf/area), np. sieci szkieletowej (backbone) o identyfikatorze 0.0.0.0.

Po stworzeniu obszaru trzeba dodać do niego interfejsy. Dodanie interfejsu dodaje do rozsyłanych przez OSPF informacji dane o wszystkich podsieciach z których adresy są na tym interfejsie. (Można też ograniczyć te informacje tylko do wybranych podsieci).

Domyślnie na dodanym do OSPF interfejsie są też wyszukiwaniu sąsiedzi. Jeżeli nie ma na tym interfejsie być nawiązywanych relacji z innymi routerami OSPF, należy4) ustawić ten interfejs jako pasywny (passive).

Dodawanie interfejsów w RouterOS zwykle wykonuje się podając szablon ustawień (/routing/ospf/interface-template), w którym trzeba wybrać obszar oraz: albo listę interfejsów, albo listę sieci na których OSPF ma działać. Stworzenie takiego szablonu dynamicznie będzie dodawać pasujące do niego interfejsy. Można też dodać ręcznie każdy interfejs osobno, ale jest to niewygodne i jeśli ręczne dodanie nie jest niezbędne, to jest niezalecane.

Przykłady:

WinBox

konsola

Konfiguracja na brzegowym routerze (łączącym sieć z "internetem"):

[admin@R1] > /ip/route/add dst-address=0.0.0.0/0 gateway=10.8.0.10
[admin@R1] > /routing/ospf/instance/add name=v4 router-id=0.0.0.1 originate-default=if-installed
[admin@R1] > /routing/ospf/area/add area-id=0.0.0.0 instance=v4 name=v4a0
[admin@R1] > /routing/ospf/interface-template/add area=v4a0 interfaces=ether1 passive
[admin@R1] > /routing/ospf/interface-template/add area=v4a0 interfaces=ether3

Konfiguracja na innym routerze:

[admin@R3] > /routing/ospf/instance/add name=v4 router-id=0.0.0.3
[admin@R3] > /routing/ospf/area/add area-id=0.0.0.0 instance=v4 name=v4a0
[admin@R3] > /routing/ospf/interface-template/add area=v4a0 interfaces=ether1,ether3

Konfiguracja na routerze który ma trasę statyczną (np. do routera który nie potrafi OSPF):

[admin@R5] > /ip/route/a dst=192.168.0.0/24 gate=10.8.9.8
[admin@R5] > /routing/ospf/inst/a name=v4 router-id=0.0.0.5 redistribute=static
[admin@R5] > /routing/ospf/area/a area-id=0.0.0.0 inst=v4 name=v4a0
[admin@R5] > /routing/ospf/interface-template/a ar=v4a0 int=ether1
[admin@R5] > /routing/ospf/interface-template/a ar=v4a0 int=ether2 passive

Te przykładowe konfiguracje używają parametru interface-template/ … interface=… do wyboru interfejsów. Zamiast tego można użyć interface-template/ … network=… i podać zakres adresów IP w którym zawierają się sieci na których ma działać OSPF.

Sprawdzanie działania

Pierwszym krokiem do sprawdzenia czy OSPF został właściwie skonfigurowany jest sprawdzenie listy interfejsów (/routing/ospf/interface) – powinny na niej pojawić się interfejsy na których ma działać OSPF.

Kolejny krok sprawdzenia czy wszystko jest OK to sprawdzenie czy zostały nawiązane relacje z sąsiadami (/routing/ospf/neighbor) – powinny tam być wymienione wszystkie bezpośrednio połączone routery OSPF.

Dalej należy sprawdzić tablicę tras (/ip/route lub /routing/route/) – powinny tam być trasy do wszystkich sieci.
W WinBoksie, w widoku tablicy tras z IP / Routes, z prawej strony nagłówków kolumn jest ikona menu ≡, po kliknięciu na którą można wybrać pokazywane kolumny. Warto zaznaczyć OSPF Metric oraz OSPF Type które pokazują koszt i typ trasy dla tras z protokołu OSPF.
W konsoli, z domyślnych widoków, koszty pokazywane są dopiero w rozwlekłym /routing/route/print details, ale można zamiast tego ręcznie ustawić widok tablicy tras z wybranymi parametrami, dodatkowo ograniczając wyniki tylko do tras IPv4 komendą: /routing/route/print proplist=dst,gate,dist,ospf.m,ospf.ty where afi=ip

Jeżeli brakuje jakichś sieci, to najprościej sprawdzić ustawienia na urządzeniach które powinny generować informacje o niej. Można też przejrzeć listę LSA (/routing/ospf/lsa) i sprawdzić czego tam brakuje lub która informacja nie jest pełna/oczekiwana.

Oczywiście łączność można potwierdzić używając /tool/ping i /tool/traceroute.

Przykłady:

WinBox

konsola

Diagnostyka z routera ze "środka" sieci:

[admin@R3] > /routing/ospf/interface/print
Flags: D - DYNAMIC
0  D interface=ether3 address=10.8.1.3%ether3 area=v4a0 instance-id=0 state=dr-other type=broadcast
     dr=10.8.1.2 bdr=10.8.1.1 cost=1 priority=128 retransmit-interval=5s transmit-delay=1s
     hello-interval=10s dead-interval=40s

1  D interface=ether1 address=10.8.3.3%ether1 area=v4a0 instance-id=0 state=dr type=broadcast
     bdr=10.8.3.6 cost=1 priority=128 retransmit-interval=5s transmit-delay=1s hello-interval=10s
     dead-interval=40s
[admin@R3] > /routing/ospf/neighbor/print
Flags: D - DYNAMIC
0 D instance=v4 area=v4a0 interface=ether3 address=10.8.1.1 priority=128 router-id=0.0.0.1
    dr=10.8.1.2 bdr=10.8.1.1 state="Full" state-changes=6 adjacency=19m48s timeout=32s

1 D instance=v4 area=v4a0 interface=ether3 address=10.8.1.2 priority=128 router-id=0.0.0.2
    dr=10.8.1.2 bdr=10.8.1.1 state="Full" state-changes=6 adjacency=19m48s timeout=32s

2 D instance=v4 area=v4a0 interface=ether1 address=10.8.3.4 priority=128 router-id=0.0.0.4
    dr=10.8.3.3 bdr=10.8.3.6 state="Full" state-changes=5 adjacency=18m14s timeout=39s

3 D instance=v4 area=v4a0 interface=ether1 address=10.8.3.5 priority=128 router-id=0.0.0.5
    dr=10.8.3.3 bdr=10.8.3.6 state="Full" state-changes=6 adjacency=16m34s timeout=40s

4 D instance=v4 area=v4a0 interface=ether1 address=10.8.3.6 priority=1 router-id=0.0.0.6
    dr=10.8.3.3 bdr=10.8.3.6 state="Full" state-changes=6 adjacency=19m9s timeout=36s
[admin@R3] > /routing/route/print proplist=dst,gate,dist,ospf.m,ospf.ty where afi=ip
Flags: A - ACTIVE; c - CONNECT, o - OSPF; + - ECMP
Columns: DST-ADDRESS, GATEWAY, DISTANCE, OSPF.METRIC, OSPF.TYPE
    DST-ADDRESS     GATEWAY          DISTANCE  OSPF.METRIC  OSPF.TYPE
Ao  0.0.0.0/0       10.8.1.1%ether3       110            2  ext-type-1
Ao  10.8.0.0/24     10.8.1.1%ether3       110            2  intra
Ac  10.8.1.0/24     ether3                  0
Ao+ 10.8.2.0/24     10.8.3.4%ether1       110            2  intra
Ao+ 10.8.2.0/24     10.8.1.2%ether3       110            2  intra
Ac  10.8.3.0/24     ether1                  0
Ao  10.8.4.0/22     10.8.3.6%ether1       110          101  intra
Ao  10.8.8.0/26     10.8.3.6%ether1       110          201  intra
Ao  10.8.9.0/24     10.8.3.5%ether1       110            2  intra
Ao  192.168.0.0/24  10.8.3.5%ether1       110            3  ext-type-1

Sama tablica tras z routera brzegowego:

Ilustracja topologii sieci

Zrzut pełnej bazy informacji LSA – wynik /routing/ospf/lsa/print

Pamiętaj żeby po skończeniu laboratoriów zresetować konfigurację

[extra] OSPF na Linuksie (i CISCO)

W materiałach do SK z poprzednich lat jest opis konfiguracji OSPF na urządzeniach CISCO; tego samego zestawu poleceń używa też frr pozwalający uruchomić protokół OSPF na Linuksie. Konkurencyjny bird jest ustawiany w pliku konfiguracyjnym.

1)
Identyfikator routera dla OSPFv3, zwykle używanego do liczenia tras IPv6, dalej ma postać czterobajtowej liczby zapisywanej tak jak adres IPv4.
2)
Uwaga, implementacja OSPF w Mikrotiku tego nie wspiera.
3)
Można ograniczyć które trasy są ogłaszane dodając filtry.
4)
Ze względów bezpieczeństwa.
bio-sk/mikrotik_ospf.txt · Last modified: by jkonczak