|

Tunele VPN (site to site) na Mikrotiku

Obecnie sposobów na zbudowanie infrastruktury w oparciu o wirtualne sieci prywatne jest tyle co framework’ów do każdego z języków programowania. Nie dość, że możemy przebierać jak w ulęgałkach to jeszcze każdy z producentów ma własne dedykowane rozwiązanie. Oczywiście cechami dobrego VPN’a są:

  • wygoda w konfiguracji,
  • możliwość szyfrowania za pomocą silnych algorytmów kryptograficznych,
  • łatwe przechodzenie przez NAT.

W przypadku dedykowanych rozwiązań można to wykonać za pomocą dosłownie kilku kliknięć bez szczegółowej wiedzy jak takie połączenie jest realizowane. Myślę natomiast, że warto wrócić do korzeni i przypomnieć sobie sposób działania i konfiguracji w oparciu o podstawowe protokoły sieciowe. W naszym przypadku uruchomimy tunele site to site, które pozwolą na połączenie dwóch lokalizacji. Każdy z nich ma swoje zalety i wady, ale postaramy się wypośrodkować a przynajmniej pokazać jak wypośrodkować łatwość wdrożenia, bezpieczeństwo i wydajność. Wykorzystamy w tym celu, a jakże, urządzenia Mikrotik. Połączenia między routerami zrealizujemy używając protokołów:

  • IPsec
  • L2TP
  • GRE

Topologia sieci

IPsec (Internet Protocol Security)

Konfiguracja A

Zaczynamy od zdefiniowania profilu, który posłuży nam w pierwszej fazie zestawiania tunelu. W tym celu przechodzimy do zakładki „IP -> IPsec” i dodajemy nowy profil znakiem „+”.

Definiujemy parametry jakie mają być użyte podczas pierwszej fazy połączenia do routera w drugiej lokalizacji. Nazwa profilu nie ma znaczenia.

Przechodzimy na zakładkę „Proposals” i ustawiamy metodę prezentacji, która posłuży nam do wygenerowania kluczy SA (security associations) w drugiej fazie połączenia. W tym celu naciskamy znak „+”.

Wprowadzamy kolejno algorytm autentyfikacji i algorytm szyfrowania.

To jakie mechanizmy wybierzemy na wyżej wymienionych screenach zależy od poziomu bezpieczeństwa jaki chcemy zachować przy tym rodzaju połączenia. Im wyższy poziom bezpieczeństwa tym mniejsza wydajność sprzętu, dlatego trzeba dobierać te parametry starannie.

Następnie przechodzimy do zakładki „Peers” aby wprowadzić informację o urządzeniu, które znajdować się będzie po drugiej stronie tunelu. W tym celu naciskamy znak „+”.

Definiujemy nazwę dla urządzenia w sieci zdalnej, wprowadzamy jego adres IP i wskazujemy profil połączenia stworzony w poprzednich krokach.

W zakładce „Identities” wprowadzamy metodę autentykacji i hasło do połączenia.

Przy wprowadzeniu informacji o haśle otrzymamy komunikat, że punkt po drugiej stronie tunelu nie istnieje i jest to poprawne zachowanie. Należy wprowadzić te same informacje na drugim routerze i po zestawieniu tunelu ostrzeżenie zniknie.

Następnie przechodzimy do zakładki „Policies” aby wskazać między jakimi sieciami lokalnymi ma zostać zestawiony tunel. W tym celu naciskamy znak „+”.

Wybieramy punkt docelowy tunelu, zaznaczamy opcję „tuneluj” oraz wpisujemy adresy sieci lokalnych za routerami.

Nie możemy pominąć zakładki „Action”, ponieważ tam zaznaczamy dodatkowe opcje oraz wybieramy sposób przedstawienia się w drugiej fazie połączenia.

Ustawiamy regułę NATowania. Przechodzimy do zakładki „IP -> Firewall – > NAT” i naciskamy znak „+”.

Reguła ta powinna zostać umiejscowiona przed maskaradą aby router przed wysłaniem pakietu na drugą stronę tunelu zdążył podmienić adres IP sieci lokalnej źródłowej na adres IP sieci lokalnej docelowej. Dopiero później zaszyfruje pakiet, który będzie zawierał prawidłową adresację.

Konfiguracja B

Dokładnie te same kroki wykonujemy po stronie drugiego routera. Rzeczy które się zmieniają to:

  • ustawienie punktu końcowego peer routerA= 192.168.12.2
  • ustawienie polisy do routera A = 10.0.13.0/24 -> 10.0.12.0/24
  • regułę NATowania sieci = 10.0.13.0/24 -> 10.0.12.0/24 (accept)

L2TP (Layer 2 Tunneling Protocol)

Konfiguracja B (serwer)

Zaczynamy od utworzenia danych logowania dla klienta, którym będzie router A. W tym celu przechodzimy do zakładki „PPP -> Secrets” i dodajemy nowe poświadczenia znakiem „+”

Definiujemy dane logowania dla klienta.

Reguła wpisywana w polu „Routes” doda nam dynamicznie wpis w tablicy routingu. Natomiast możemy ominąć ten wpis i dodać ją sobie później z ręcznie. Tak samo ręcznie będziemy musieli ją dodać na routerze A, ponieważ nie możemy wymusić na kliencie dodawania konkretnej trasy.

Następnie uruchamiamy serwer L2TP przechodząc na zakładkę „PPP -> Interface”. W tym celu musimy kliknąć w kafelek „L2TP Server”.

Po wciśnięciu odpowiedniego kafelka, zaznaczamy opcję „Enabled” i już nasz serwer zostanie uruchomiony.

Opcjonalnie możemy użyć IPsec dla zabezpieczenia połączenia. Należy pamiętać, że taką samą opcję należy wybrać dla klienta serwera.

Konfiguracja A (klient)

W celu połączenia routera jako klienta serwera L2TP przechodzimy na zakładkę „PPP -> Interface” i wybieramy typ interfejsu znakiem „+”.

Z listy dostępnych interfejsów wybieramy „L2TP Client”.

Wprowadzamy dane logowania do serwera.

Pozostało nam wprowadzenie trasy do routera B. W tym celu przechodzimy do zakładki „IP -> Routes” i dodajemy nową trasę znakiem „+”.

Dodajemy trasę do sieci lokalnej za routerem B poprzez interfejs L2TP.

GRE (Generic Router Encapsulation)

Konfiguracja B

Zaczynamy od dodania interfejsu GRE, który będzie niezbędny aby zbudować tunel. W tym celu przechodzimy do zakładki „Interfaces -> GRE Tunnel” i naciskamy znak „+”.

Definiujemy informacje o drugiej stronie tunelu.

Jeżeli chcemy skorzystać z IPsec musimy pamiętać o odznaczeniu opcji „Allow Fast Path”. Po wpisaniu hasła Mikrotik użyje domyślnych ustawień do zestawienia obu faz połączenia.

Teraz powinniśmy przypisać adresację dla interfejsu GRE. W tym celu przechodzimy do zakładki „IP -> Addresses” i wprowadzamy nowy adres znakiem „+”.

Wprowadzamy adres dla interfejsu GRE.

Pozostało nam wyznaczenie trasy do każdej z sieci. W tym celu przechodzimy do zakładki „IP – > Routes” i dodajemy nową trasę znakiem „+”.

Wprowadzamy trasę do sieci lokalnej za routerem A.

Konfiguracja A

Dokładnie te same kroki wykonujemy po stronie drugiego routera. Rzeczy które się zmieniają to:

  • adres IP drugiej strony tunelu GRE = 192.168.13.2
  • adres IP interfejsu GRE = 171.16.1.2/30
  • trasa do sieci lokalnej za routerem B = 10.0.13.0/24 via gre-tunnel

Podsumowanie

Teraz, po zapoznaniu się z podstawowymi koncepcjami, możemy zacząć kombinować z różnymi konfiguracjami. Możemy przerzucić się całkowicie na innego vendora ale również pozostać przy kompatybilnych rozwiązaniach zaproponowanych przez łotyszy. W przypadku Mikrotika będzie to popularny WireGuard, klasyczny OpenVPN i coraz bardziej popularny ZeroTier. Im prościej i bardziej intuicyjnie tym lepiej, ale nie zapominajmy, że korzystanie z gotowych przepisów na zupę nie zawsze się opłaca, bo uzależnia nas od jednej opcji. Jeżeli mamy dobre podstawy, które w tym wpisie starałem się przekazać, to możemy dostosować się do każdej nieoczekiwanej sytuacji.

Instrukcja wideo


Podobne wpisy

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *