WireGuard Site to Site VPN [konfiguracja MikroTik]

W tym artykule pokażę, jak skonfigurować połączenie VPN między dwoma routerami MikroTik. Przedstawione połączenie Site to Site spotykane jest w sieciach VPN łączących różne oddziały firmy.
Konfigurację w formie video obejrzysz TUTAJ 🙂
Jak działają sieci Site to Site
Ogólnym założeniem sieci VPN Site to Site jest łączenie odległych lokalizacji w bezpieczną sieć. Sposób działania można porównać do sieci Peer to Peer (P2P). Aby zestawić takie połączenie, router musi nasłuchiwać na porcie udostępniającym usługę VPN i sam też łączyć się z odległą lokalizacją. Co ważne, w konfiguracji Peerów musi posiadać informacje o budowie sieci, z którą się łączy, mam tutaj na myśli wskazanie zakresów adresów IP, którym pozwalamy na komunikację przez tunel.
Sieci Site to Site mają tą zaletę, że do działania nie potrzebują dodatkowego serwera VPN, który łączy ze sobą te sieci. Ta zaleta jest jednocześnie ich wadą, bo skoro nie ma centralnego serwera VPN, to jeśli w przyszłości będziemy chcieli dodać kolejny oddział firmy do sieci, to będziemy musieli dodać wszystkie istniejące Peery na routerze nowego oddziału i we wszystkich istniejących routerach pododawać informację o nowym oddziale. Rozwiązaniem tego problemu może być oskryptowanie takiej konfiguracji lub zainstalowanie gdzieś w chmurze centralnego serwera pośredniczącego, dzięki temu prędkość Internetu podczas komunikacji między routerami nie będzie ograniczana przez najsłabsze ogniwo, czyli serwer VPN przetwarzający ten ruch.
Konfiguracja
Ustawianie tożsamości routera
Pierwszą czynnością jaką warto wykonać to zmiana nazwy routerów, dzięki temu nie tylko adres MAC będzie identyfikatorem, który jednoznacznie określa router w WinBox, ale też ta nazwa. Aby ustawić taki identyfikator należy:
- Zalogować się programem WinBox do pierwszego routera. O ile to możliwe można wyłączyć drugi router, aby mieć pewność, że zestawiamy połączenie z właściwym routerem.
- Przejdź do menu System > Identity.

- W wyświetlonym oknie wpisz nową nazwę urządzenia i kliknij OK.

- Punkty 0-2 powtórz na innych routerach.
Po nadaniu nazw routerom, ich tożsamość jest widoczna w kolumnie Identity w oknie połączenia. Pozwala to jednoznacznie zidentyfikować router.
Tworzenie interfejsu WireGuard
- Połącz się z routerami MikroTik wykorzystując WinBox. W miarę możliwości zestaw 2 oddzielne sesje konfiguracyjne, po jednej na router.
- Na obu routerach utwórz konfigurację interfejsu WireGuard wybierając z menu bocznego WireGuard.

- W wyświetlonym oknie pozostając na karcie WireGuard naciśnij znak
. - W razie potrzeby zmień nazwę dla interfejsu i port nasłuchiwania.

- Naciśnij OK.
- Powtórz czynności na drugim routerze.
Konfiguracja Peera
- Przejdź do zakładki Peers i naciśnij ikonę

- W wyświetlonym oknie wskaż:
– interfejs WireGuard
– klucz publiczny drugiego routera (znajdziesz go w szczegółach interfejsu WireGuard)
– Endpoint (publiczny adres IP drugiego routera)
– Endpoint Port (port na którym nasłuchuje interfejs na drugim routerze)
– dozwolone adresy (zakresy adresów urządzeń, które mogą się komunikować z urządzeniami w sieci tego routera, muszą być to adresy wewnętrzne drugiego routera) - Naciśnij OK.
- Powtórz czynność na drugim routerze pamiętając o zmianach adresów IP i kluczu publicznym.



Konfiguracja adresu IP i routingu
- Przejdź do menu IP > Addresses.

- Naciśnij ikonę
. - Wypełnij formularz według wzoru.

- Przejdź do menu IP > Routes.

- Powtórz czynność na drugim routerze zmieniając adres IP.
- Naciśnij przycisk
. - Wpisz adres docelowy podając zakres sieci z drugiego routera i jako bramę podaj nazwę interfejsu WireGuarda.

- Naciśnij OK.
- Powtórz czynności na drugim routerze. Poniżej zrzuty ekranu z analogicznej konfiguracji drugiego routera.


Konfiguracja firewalla
Może się zdarzyć, że router będzie odrzucał połączenie przychodzące i uniemożliwi zestawienie połączenia VPN. Warto dodać do konfiguracji kilka reguł.
- Przejdź do IP > Firewall i do zakładki Filter Rules.
- Naciśnij ikonę
. - Dodaj reguły na Firewallu zgodnie z poniższym zrzutem ekranu (zwróć uwagę na dwie karty ustawień).

- Naciśnij OK.
- Analogiczną regułę z adresem IP pierwszego routera dodaj na drugim routerze.
- Na obu routerach utwórz jeszcze identyczne reguły w łańcuchu forward z akcją accept.


Test konfiguracji
Po przeprowadzeniu konfiguracji, komunikacja między sieciami odbywa się bez problemów.

Dzięki, wszystko działa.
A jeżeli do schematu dojdzie „Mikrotik3”, i każdy będzie łączył się z każdym,
czyli będą po dwa połączenia na każdym Mikrotiku. To co wtedy?
Tworzymy drugi interfejs?
Czy wystarczy dodać drugiego peera na tym samym interfejsie?
Brakuje mi tego jakiegoś statusu połączenia w Mikrotiku
oraz ustawienia peera pasywnego i inicjatora.
Jeżeli będzie więcej Mikrotików to trzeba potworzyć więcej Peer’ów, lub osobnych interfejsów WG. Przygotowuję właśnie nowy odcinek na YouTube i artykuł, gdzie pokaże scenariusz wielu tuneli WireGuard’a.
Już do tego sam doszedłem i powoli buduję kolejne drzewo połączeń Site-2-site.
Przy okazji zauważyłem troszkę większe użycie CPU na Mikrotikach.
IPSec pod tym względem chyba ma przewagę nad WG ze względu na sprzętową akcelerację szyfrowania.
Rozumiem, że nie działa ona w przypadku szyfrowania WireGuard?
Akceleracja szyfrowania nie dotyczy konkretnej technologii, IPSec czy WireGueard, a dotyczy konkretnych algorytmów szyfrowania i platformy na jakiej jest zainstalowany RouterOS. Dzisiaj najczęściej akceleracja realizowana jest przed dedykowane funkcje procesora i dotyczą najczęściej AES. W tym kontekście możesz widzieć różnicę, jako że WireGuard chcąc pozycjonować się jako bardziej bezpieczny i prostszy, używa nowszych algorytmów szyfrowania a w tym kontekście ma mniejsze szanse na sprzętowe wsparcie tych algorytmów.
Tendencja jaką widzę od kliku lat w różnych urządzeniach, to odchodzenie od sprzętowego dedykowanego akceleratora szefowania, jako mało elastycznego w kontekście wprowadzania nowych algorytmów, niezależnie od wykorzystywanej technologii tunelowej.
Czyli możemy założyć scenariusz,
w którym dla jednego interfejsu wg1 mamy np 10 peerów (tuneli Site2Site).
W tabeli routingu dodajemy dziesięć tras, ale wszystkie dla tego samego interfejsu wg1.
Skąd Mikrotik ma wiedzieć, którym peerem do podsieci?
Bo chyba nie po Allowed IPS?
To niezależne od tras…?
Można taki scenariusz założyć, że na jednym interfejsie konfigurujemy wiele Peerów, ale w takim przypadku sterujemy wpisując zezwolone sieci dla każdego Peru. Czyli taki scenariusz będzie trudny do zarządzania. Jeżeli chciałbyś wykorzystać OSFP do sterowania ruchem to należy utworzyć osobne interfejsy i podsieci, wtedy możemy wykorzystać dynamiczny routing, co jest wg mnie najlepszym podejściem
Możemy tak zrobić, wybór peera następuje na postawie przypisanych sieci do poszczególnych peerów, to też oznacza że nie można zezwolić na sieć 0.0.0.0/0 na każdym z sąsiadów, bo router nie będzie wiedział gdzie kierować pakiet.
Czy ten filmik już się pokazał może ??bo nie ukrywam, że czekam na niego jak na zbawienie
Witam,
A kto wie jak rozwiązać problem „widoczności” wszystkich urządzeń połączonych w jedną sieć jeśli dodatkowo połączę się poprzez VPN z komputera na MikroTik1.
U mnie po zestawieniu połączenia VPN WireGuard z komputera do routera 1 nie widzę żadnych urządzeń podłączonych do routera 2 (w „Neighbors” WinBoxa również nic nie widzę). Zaznaczę, że łącząc się poprzez ipsek wszytsko działa poprawnie.
Dzięki za pomoc
Widoczność jest uzależniona 2 warunkami:
1. Dozwolone sieci w konfiguracji tunelu Wireguard
2. Routing – zarówno brama na komputerze, jak i trasy routingu na MikroTik1 dla ruchu powracającego do komputera.
To i podpytam.
Lokalizacja nr1
Adresacja 192.168.1.0/24
Lokalizacja nr2
Adresacja 192.168.88.0/24
Oba mikrotiki widzą się bez problemu. Mogę z podsieci 192.168.88.0/24 łączyć pulpitem zdlanym do servera na adresie 192.168.11.11. otwierać pliki udostępnione itd.
ALE
mam do rozwiązania taką zagadkę. W podsieci 192.168.88.0/24 mam podłączony skaner który ma statyczny adres 192.168.11.95, którego nie zmianiam, bo 4 dnio w tygodniu ten skaner znajduje się w lokalizacji nr1 i łaczy się do adresu 192.168.11.11 skanując tam pewne dokumenty do pewnego programu (skaner ma wbudowaną aplikację w którj konfiguruje się adres z którym ma się łaczyć i tam wrzucać zeskanowane dokumenty)
Raz w tygodniu znajduje się w lokalizacji nr2 i mając ten sam statyczny adres chciałbym żeby mógl skanowac do adresu 192.168.11.11. Czyli skaner ma adres 192.168.11.95, a jest wpięty do mikrotika z podsiecią 192.168.88.0/24 i ma coś przesłać do 192.168.11.11. Jak to ogarnąć przez wireguarda?
Opcja 1:
Jeżeli chcesz przenosić urządzenie i ma być cały czas w tej samej podsieci L2 i adresacji, to potrzebujesz skonfigurować jakąś metodę tunelowania tej sieci na poziomie L2.
Może to być np. VXLAN.
(pamiętaj że to jest sieć nakładkowa i trzeba zmniejszyć maksymalną wielkość pakietu na interfejsie WAN, żeby zmieścić się w limicie wielkości pakietu nakładanym przez operatora)
Opcja2:
Skonfigurować w aplikacji 2 różne adresy IP z różnych podsieci przyznawane przez DHCP dla każdej lokalizacji i statyczne mapowanie na każdym z 2 serwerów DHCP MAC-IP. Adresy będą się zmieniać, ale funkcjonalność skanowania pozostanie.
Z tym pierwszym sobie nie poradzę, ale w zasadzie opcja 2 jest bardzo prosta i logiczna. Owszem w aplikacji na serwerze można ustawić, że będą się łączyć różne urządzenia. W tym przypadku to samo, ale z innych podsieci. Czyli ustawić skaner aby dostawał adres z DHCP, ale na obu mikrotikach przypisać mu statyczny adres taki jak w aplikacji. Kurde dzięki, jesteś gość :))))
Z tym pierwszym sobie nie poradzę, ale w zasadzie opcja 2 jest bardzo prosta i logiczna. Owszem w aplikacji na serwerze można ustawić, że będą się łączyć różne urządzenia. W tym przypadku to samo, ale z innych podsieci. Czyli ustawić skaner aby dostawał adres z DHCP, ale na obu mikrotikach przypisać mu statyczny adres taki jak w aplikacji. Kurde dzięki, jesteś gość :))))
Cieszę się że mogłem pomóc ????
Witam
Podłączyłem dwa mikrotiki vpn-em WireGuard.
Z obydwu mikrotików jestem wstanie pingować komputery za nimi ale z poziomu terminala mikrotika. Nie jestem w stanie pingować z komputerów za routerami.
W allowed adresys dawałem same zera próbowałem dac podsieci i nic nie zmieniło.
Domyślam sie ze jest problem z routingiem ale nie mogę sobie poradzić, mam zrobiony tak: dst. podana jest podsieć z drugiego routera np. yyy.0.0.0/24 i wskazany brama to utworzony WireGuard i na drugim np.xxx.0.0.0/24 i wskazany port wireguard.
I niestety nie działa dla pewności wyłączyłem wszystkie reguły w zaporze mikrotika i też bez zmian.
Cześć,
To ewidentnie problem z routingiem, ale żeby odkryć czego brakuje, to trzeba podłączyć się do tego środowiska. Jeżeli chciałbyś wziąć udział w odcinku który debuguje taki problem, to napisz do nas. Możemy pomóc w ramach pokazania innym jak się takie problemy rozwiązuje.
No mam ten tunel i pytanie za 1M$ dlaczego ten WireGuard na obu łączach 1gibt/s symetrycznych z 5ms opóznieniem między nimi mam raptem 300Mbit/s transferu?
Myślałem, że to lepiej będzie działać. Jedyna różnica to taka, że w jednym jest stałe IP i MTU=1500 a w drugim PPPoE i MTU=1492 (tak podejrzewam, że to może mieć znaczenie?) MTU=1420 w obu Wireguardach. Zrobione 1:1 w/g poradnika.
Test połączenia używając bandwidth test tunelu daje pełne osiągi zarówno po UDP jak i TCP, ale i Samba i FTP działa strasznie kulawo. Gdzie szukać problemu?
Odpowiedziałem w formie podkastu, zajrzyj: https://youtu.be/HgzUVzq_Mhk
Odpowiedziałem w formie podcastu, zajrzyj: https://youtu.be/GZx4FN9enro
Bardzo dobry opis! Mam natomiast pytanie, bowiem po restarcie jednego z Mikrotików nie mogę pingnąć hostów z drugiego końca (peer'a) o ile tego samego nie zrobię na drugiej końcówce. Po wykonaniu pingów w dwie strony komunikacja "się nawiązuje" i pingi latają…
już działa 🙂 w zakładce w firewallu, były złe adresy IP wpuszczane.
@dexter80 😀👍