Baza wiedzy - MikroTik – konfiguracja tunelu VPN WireGuard

MikroTik – konfiguracja tunelu VPN WireGuard

Czym jest tunel VPN? W dużym skrócie pozwala on korzystać z internetu tak, jakbyśmy byli wpięci bezpośrednio do urządzenia, które jest serwerem VPN. Można dzięki temu przeglądać strony lub korzystać z usług, które są ograniczone dla danego kraju, jeżeli serwer znajduje się w nim. Połączenia VPN służą też do bezpiecznego połączenia się z wewnętrzną siecią np. w pracy.

Zaczynamy od zalogowania się do naszego urządzenia MikroTik. Następnie aktywujemy serwer WireGuard, wybierając z menu „WireGuard” i przycisk „Add New”:

Następnie powinien pojawić się nam formularz dodawania nowego serwera, gdzie musimy kliknąć tylko „OK”:

Po tej operacji mamy aktywny serwer WireGuard na naszym Mikrotiku w domyślnej konfiguracji. Dodatkowo w systemie pojawi się nowy interface, do którego będziemy mogli przypisać adres IP. Robimy to w zakładce IP -> Addresses, a następnie wybieramy „Add New”:

Otwiera nam się nowy formularz dodawania adresu IP, w Address wpisujemy przykładowo 10.66.77.1/24, co spowoduje, że na interface wireguarda Mikrotik będzie dostępny pod tym adresem, w network wpisujemy 10.66.77.0. Bardzo ważne jest wybranie odpowiedniego Interface, w naszym wypadku wireguard1. Po wpisaniu danych dodajemy przyciskiem „OK”.

W następnym kroku musimy wygenerować konfigurację dla klienta. Klienta WireGuard możemy ściągnąć pod adresem: https://www.wireguard.com/install/, wybieramy oczywiście wersję odpowiednią dla naszego systemu, z którego chcemy połączyć się do VPNa.
Po instalacji klienta przechodzimy na stronę https://www.wireguardconfig.com/, gdzie możemy wygenerować w prosty sposób konfigurację dla klienta. Konfigurację po stronie serwera mamy już zrobioną z powyższych kroków, więc interesuje nas jedynie konfiguracja klienta. Wypełniamy dane na stronie w następujący sposób:
  • Listen Port: 13231 (lub taki jaki ustawiliśmy podczas dodawania WireGuarda)
  • Number of Clients: ustawiamy w zależności, ile potrzebujemy dodać osób, które mają móc się połączyć do VPNa
  • CIDR: 10.66.77.0/24
  • Client Allowed IPs: 10.66.77.0/24
  • Endpoint (Optional): 194.110.5.15:13231 (194.110.5.15 zamieniamy na IP naszego serwera VPS z Mikrotikiem)
  • Post-Up rule: puste
  • Post-Down rule: puste
  • Use Pre-Shared Keys (Enhanced Security): zaznaczone
Następnie możemy kliknąć przycisk „Generate Config”:

Powinniśmy teraz zobaczyć na dole konfigurację zarówno serwera, jak i klienta. To, co nas interesuje to konfiguracja klienta.
Pierwsze co musimy zrobić to dodać po stronie Mikrotika konfiguracje klientów WireGuarda. Robimy to, przechodząc w menu do zakładki „WireGuard”, a następnie wybierając na górze kartę „Peers” i klikając „Add New”:

Formularz uzupełniamy danymi z generatora, dla przykładu bierzemy informację oznaczone jako „Client 1” (potem możemy dodać w taki sam sposób następnych Peerów):
  • Interface wybieramy „wireguard1”, jeżeli dodaliśmy tylko jeden serwer WireGuard
  • PresharedKey (oznaczony na zielono) kopiujemy z generatora do pola „PresharedKey” w formularzu. PublicKey (oznaczony na niebiesko)
  • Public Key (oznaczony na niebiesko) kopiujemy z generatora do pola „Public Key” w formularzu. PublicKey (oznaczony na niebiesko)
  • Endpoint ustawiamy jako IP naszego serwera (jeżeli mamy kilka adresów IP możemy tutaj wybrać, do którego ma łączyć się klient)
  • Endpoint Port ustawiamy jako port, który wpisaliśmy na początku w konfiguracji serwera WireGuard, domyślnie jest to 13231
  • Allowed Address jest to adres IP z jakim może połączyć się klient, ustawiamy zgodnie z tym co w generatorze, czyli „10.66.77.2/32” dla pierwszego klienta. Zazwyczaj jest to po prostu następny dostępny adres IP (UWAGA, adresy nie powinny się powtarzać, ponieważ będzie to prowadziło do konfliktów i problemów z działaniem sieci)

Po wpisaniu danych dodajemy przyciskiem „OK”
Następnie musimy skompletować komplet ustawień dla klienta. Zaczynamy od klucza publicznego serwera, który będzie wspólny dla wszystkich. Znajdziemy go po stronie Mikrotika w menu „WireGuard” klikając na nazwę serwera na liście. Zaznaczony on jest czerwoną ramką:

Tworzymy przykładowy plik konfiguracji używając templatki:
[Interface]
PrivateKey = NIEBIESKI_KLUCZ_GENERATOR
ListenPort = 13231
Address = 10.66.77.X/24

[Peer]
PublicKey = CZERWONY_KLUCZ_SERWER
PresharedKey = ZIELONY_KLUCZ_GENERATOR
AllowedIPs = 10.66.77.0/24
Endpoint = IP_VPS:13231

W naszym przykładzie z generatora będzie to:
[Interface]
PrivateKey = QN3t4jq3hOZl/Q25wOZ1beOwtRKEidVrQDvpY2uMIEE=
ListenPort = 13231
Address = 10.66.77.2/24

[Peer]
PublicKey = 3qtBm4/zSM1w59mQLBzdVPxz9nzFMsGttZ1Fr4cNlhg=
PresharedKey = O4QPJfgmoEVG+NBcnAaIK1XtxMEkjYlXhMXvqvBhl7o=
AllowedIPs = 10.66.77.0/24
Endpoint = 194.110.5.15:13231

Tak utworzony plik zapisujemy z rozszerzeniem .conf np. vpn.conf i importujemy w oknie klienta WireGuard. Robimy to wybierając na dole „Dodaj Tunel” -> „Importuj Tunel z Pliku” i wskazując nasz plik vpn.conf:

Jeżeli poprawnie stworzyliśmy plik to tunel powinen pojawić się na liście, pozostaje kliknąc tylko „Aktywuj”:

Powinniśmy otrzymać informację, że tunel został aktywowany:

Na koniec sprawdzamy czy możemy pingować bramę sieciową na Mikrotiku (pingujemy adres IP przypisany do interface WireGuarda):
ping 10.66.77.1

Pinging 10.66.77.1 with 32 bytes of data:
Reply from 10.66.77.1: bytes=32 time=14ms TTL=64
Reply from 10.66.77.1: bytes=32 time=13ms TTL=64
Reply from 10.66.77.1: bytes=32 time=14ms TTL=64
Reply from 10.66.77.1: bytes=32 time=14ms TTL=64

Ping statistics for 10.66.77.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 13ms, Maximum = 14ms, Average = 13ms

Jeżeli ping przechodzi to działa wszystko poprawnie. Tak skonfigurowany tunel będzie dostarczał bezpieczny dostęp do serwera albo inftrastruktury, jednak zanim będziemy mogli przeglądać internet z poziomu VPN musimy dodać obsługę NAT do Mikrotika oraz zmienić lekko konfigurację WireGuarda. Informacje o tym znajdziemy w innych wpisach w bazie wiedzy.