56

Mikrotik OpenVPN Server

Jeżeli nie używasz jeszcze VPN’a, to najwyższy czas zacząć. Jest wiele zastosowań VPN’a, jednak najważniejsze to bezpieczeństwo. Nie odważyłbym się podłączyć do otwartego hotspotu, np. w kawiarni czy dworcu bez aktywnego połączenia VPN. Jest wiele dostawców usługi VPN, ale jeżeli posiadasz router Mikrotika taki serwer możesz postawić u siebie w domu czy też biurze. O samych zaletach i wadach VPN’a postaram się wam przybliżyć w następnym poście. Teraz skupimy się na konfiguracji Mikrotik OpenVPN Server.

Schemat połączeniowy

Mikrotik OpenVPN Server

Konfiguracja routera

Ponieważ OpenVPN bazuje na certyfikatach, zaczniemy od wygenerowania 3 certyfikatów. Dla serwera, klienta i certyfikat CA. Przechodzimy na zakładkę System->Certificates
Oczekiwany efekt powinien wyglądać tak:
Mikrotik OpenVPN Server

Generowanie certyfikatu CA
Zaczniemy od wygenerowania własnego CA, którym w późniejszym etapie podpiszemy certyfikat dla klienta i serwera. Klikamy na znak plusa i uzupełniamy:
Mikrotik OpenVPN Server

  • Name: podajemy dowolnie
  • Common Name: nazwę domeny
  • Key Size: 4096
  • Days Valid: 3650, czyli 10 lat

Zakładka Key Usage, zaznaczamy tylko:
Mikrotik OpenVPN Server

  • key cert. sign
  • crl sign

Generowanie certyfikatu dla serwera
Mikrotik OpenVPN Server

  • Name: podajemy dowolnie
  • Common Name: *.grzegorzkowalik.com, czyli certyfikat typu wildcard
  • Key Size: 4096
  • Days Valid: 3650, czyli 10 lat

Zakładka Key Usage, zaznaczamy tylko:

  • digital signature
  • key enciphement
  • data enciphement
  • tls server

Generowanie certyfikatu dla klienta
Mikrotik OpenVPN Server

  • Name: podajemy dowolnie
  • Common Name: user.grzegorzkowalik.com
  • Key Size: 4096
  • Days Valid: 3650, czyli 10 lat

Zakładka Key Usage, zaznaczamy tylko:

  • tls client

Podpisywanie certyfikatów

Po wygenerowaniu certyfikatu dla serwera i klienta musimy je podpisać naszym certyfikatem CA. Czas podpisywania zależy od CPU routera, i może zająć nawet kilkanaście minut. Certyfikaty możemy podpisać na dwa sposoby. Za pomocą terminala oraz z poziomu winbox’a. W przypadku skorzystania z terminala możecie otrzymać timeout dlatego warto dodatkowo włączyć podgląd zużycia CPU i poczekać, aż zjedzie ze 100%.
Mikrotik OpenVPN Server
CA tworzymy za pomocą terminala: sign CA-Cert name=CA-Certificate
Kolejne podpiszemy za pomocą winboxa klikając prawym myszy na certyfikacie i sign.
Mikrotik OpenVPN Server
przy podpisywaniu certyfikatu dla klienta podajemy dowolne hasło.

Eksport certyfikatów

Klient OpenVPN do poprawnej pracy potrzebuje certyfikatów(CA, klient i key). Klikamy prawym myszy na CA i wciskamy Eksport. Analogicznie postępujemy przy certyfikacie dla klienta. Jeżeli wszystko poprawnie zrobiliście, po przejściu na Files, powinny się pojawić trzy nowe pliki.
Mikrotik OpenVPN Server
Za pomocą drag&drop przenosimy pliki na dysk.

Przygotowanie adresacji dla klientów VPN

Tworzymy osobną pulę adresową dedykowaną dla połączeń VPN. Klikamy na IP->pool i dodajemy nową pulę.
Mikrotik OpenVPN Server

Konfiguracja serwera OpenVPN

Przechodzimy na PPP zakładka Profiles i dodajemy profil dla klientów VPN.
Mikrotik OpenVPN Server
Uzupełniamy:

  • Name: podajemy dowolnie
  • Local Address: w tej samej sieci co wcześniej stworzona pula. Np. 10.0.0.1
  • Remote Address: wybieramy pulę vpn
  • DNS Server: podajemy wewnętrzny adres routera

w zakładce Protocols zaznaczamy Use Encryption na required
Mikrotik OpenVPN Server
Przechodzimy na zakładkę Secrets i znakiem plusa dodajemy nowe konto. Ważne jest, aby nazwa konta była taka sam jak przy tworzeniu certyfikatu z pola Common Name, ale bez domeny.
Przy tworzeniu certyfikatu podałem nazwę user.grzegorzkowalik.com dlatego konto secret ustawiam na samo user, z dowolnym hasłem.

  • Service: wybieramy ovpn
  • Profile: wcześniej utworzony profil, czyli openvpn

Pozostaje nam jeszcze włączenie serwera, w tym celu przechodzimy na zakładkę Interface, będąc oczywiście dalej w PPP
Mikrotik OpenVPN Server

Konfiguracja Firewall’a

Ostatnia z rzeczy jakie musimy ustawić na Mikrotiku to odblokowanie portu 1194 dla połączeń przychodzących. Przechodzimy na IP->Firewall, dodajemy nową regułę:

  • Chain: wybieramy input
  • Protocol: tcp
  • Dst. Port: 1194
  • Action: accept

Mikrotik OpenVPN Server

Konfiguracja klienta OpenVPN

Zaczynamy od pobrania klienta OpenVPN, najlepiej z oficjalnej strony. Po instalacji dodajemy certyfikaty i plik z konfiguracją. W zależności od systemu operacyjnego może to być C:\Users\nazwa_usera\OpenVPN\config albo C:\Program Files\OpenVPN\config.
Plik z konfiguracją .ovpn powinien wyglądać mniej więcej tak:

client
dev tun
proto tcp
remote grzegorzkowalik.com 1194 #podajemy adres IP serwera
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert user.crt
key user.key
remote-cert-tls server
cipher AES-256-CBC
auth SHA1
auth-user-pass
redirect-gateway def1
verb 3

Mikrotik OpenVPN Server

Grzegorz Kowalik

56 Comments

  1. Dzień dobry,

    Świetny artykuł!

    Mam kilka spostrzeżeń:

    1. Można wygenerować jeden certyfikat klienta a dostęp dla poszczególnych użytkowników ustawić w PPP. Wszyscy użytkownicy mają ten sam certyfikat klienta (a co za tym idzie jeden plik profilu .ovpn, ale o tym w punkcie 3).

    2. Można uniknąć pytania o hasło do klucza prywatnego (oprócz loginu i hasła). W tym celu trzeba wykonać:
    openssl.exe rsa -in user.key -out user.key

    3. Zamiast 4 plików (profil.ovpn, ca.cert, user.cert, user.key) można mieć jeden – profil.ovpn w nim sekcje:

    W tych sekcjach należy wkleić odpowiednie certyfikaty (ca.cert, user.cert, user.key).

    Z pliku profilu trzeba usunąć linie:
    ca ca.crt
    cert user.crt
    key user.key

    Pozdrawiam,
    Bogusław Gębura

  2. Widzę, że do komentarza nie wkleiły się sekcje. Hmmm… Jak to napisać?

    znak mniejszośći ca znak większości
    znak mniejszośći /ca znak większości

    znak mniejszośći cert znak większości
    znak mniejszośći /cert znak większości

    znak mniejszośći key znak większości
    znak mniejszośći /key znak większości

  3. Witam, walczę z OpenVPN wg Pana poradnika i pawie się udało ale…
    Tue May 15 22:09:56 2018 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
    Tue May 15 22:09:56 2018 TLS Error: TLS handshake failed
    Tue May 15 22:09:56 2018 Fatal TLS error (check_tls_errors_co), restarting
    Mogę liczyć na drobną pomoc? Mogę przesłać cały log i plik konfiguracji ovpn

  4. Tak, na mikrotiku w chain input jest accept na 1194 i TCP. Wg licznika przepuścił 66 pakietów.
    Router jest za modemem/routerem LTE ale Mikrotik jest w strefie DMZ

      • Witam, po kilku kombinacjach w pliku konfiguracyjnym klienta wszystko OK. Dodałem certyfikaty do pliku i mam całość w jednym miejscu. Tylko co będzie jak taki plik dostanie się w niepowołane ręce?
        Teraz próbuje skonfigurować klienta na innym Mikrotiku, zaimportowałem certyfikaty ale w konfiguracji interfejsu można wybrać tylko jeden. Oczywiście się nie łączy: TCP zostaje nawiązane ale TLS failed….

        • Może się komuś przyda klient openvpn w Mikrotik: Najpierw trzeba przekonwertować user.cert i user.key do jednego pliku user.pem i dopiero wgrać w Mikrotika i zaimportować. Jeśli dodamy interfejs openvpn i wskażemy certyfikat pem to ładnie się łączy.
          Konwersja w openssl na linuksie:
          openssl pkcs12 -export -in hostname.crt -inkey hsotname.key -out hostname.p12
          openssl pkcs12 -in hostname.p12 -nodes -out hostname.pem (stevenhaddox z github).
          Po dodaniu interfejsu do bridge teoretycznie powinno się połączyć obie sieci LAN mikrotików w jedną przez przezroczysty tunel ale niestety u mnie nie działa. Jak pinguję zdalne komputery przez interfejs openvpn to jest ok ale jak ping idzie przez bridge to nie wraca niestety. Tu już mi zabrakło wiedzy niestety 🙂 Zachęcam autora bloga do napisania kiedyś artykułu jak połączyć dwie sieci w jedną za pomocą dwóch Mikrotików po VPN tak aby łącze było “przezroczyste” jak po kablu. Pozdrawiam

          • To jest w przypadku gdy cert mamy z innego źródła niż wygenerowany z MT. Dziękuje za komentarz, postaram się także rozszerzyć artykuł o taką opcję. Dwa mikrotiki lepiej połączyć l2tp/ipsec albo samym ipsec. Nie wykorzystywałbym do tego openvpna.

  5. Podpowie ktoś jak skonfigurować klienta aby w tej konfiguracji przez tunel vpn łączył się tylko z jednym hostem bądz z konkretną siecią natomiast internet był dostępny przez łącze lokalne.

  6. Witam, mam problem z zestawieniem sesji cały czas zapętla się jak w logu poniżej uprzejmie proszę o pomoc

    Tue Jun 19 10:21:52 2018 MANAGEMENT: >STATE:1529396512,RESOLVE,,,,,,
    Tue Jun 19 10:21:52 2018 TCP/UDP: Preserving recently used remote address: [AF_INET]188.125.X.X:1194
    Tue Jun 19 10:21:52 2018 Socket Buffers: R=[65536->65536] S=[65536->65536]
    Tue Jun 19 10:21:52 2018 Attempting to establish TCP connection with [AF_INET]188.125.X.X:1194 [nonblock]
    Tue Jun 19 10:21:52 2018 MANAGEMENT: >STATE:1529396512,TCP_CONNECT,,,,,,

  7. Dzień dobry,
    czy jeśli moje połączenie z dostawcą internetowym nie odbywa się przy pomocy PPPoE to czy taka konfiguracja powinna działać? Pytam bo mam problem z połączeniem po skonfigrowaniu wg instrukcji. Moje połączenie to dostaje adres zewnętrzny przez DHCP od dostawcy.

  8. Witam, potrzebujemy zestawić połączenie VPN między 1 lokalizacją w które będą stały kamery IP z routerem LTE SXT mikrotik jako klient a 2 lokalizacją gdzie stoi rejestrator NVR. Po stronie rejestratora stałe IP jest, po stronie routera LTE mamy kartę sim bez publicznego IP. Proszę o info czy podana instrukcja postawienia serwera nadaje się do w/w celu – czy lepiej ovpn czy lepiej przez pptp ?

  9. Witam
    Piewszy raz chciałbym postawić jakiegoś VPNa Mam stały publiczny adres IP połączenie PPPoE i MT RB2011 UiAS. Zależy mi żeby z jednego góra dwóch komputerów mieć dostęp do sieci LAN. Próbowałem l2tp ale wystąpił u mnie w kompie jakiś “nieoczekiwany błąd” nie dało się wejść we właściwości nowego połączenia.

    Czy żeby móc korzystać z OPENVPN muszę mieć jakieś konto? Wszystko jest płatne czy jak? Bo potrzebuję domeny jak w artykule: “Common Name: *.grzegorzkowalik.com, czyli certyfikat typu wildcard”
    Pewnie za jakiś czas douczę się, dowiem o co chodzi, więc jeśli mój wpis zaniża poziom proszę usunać.
    Zajmuję się konfigurowaniem systemów KD CCTV SAP itp polubiłem MT ale o co chodzi z tym VPN? Szukam w google top 10 darmowych VPN otwieram jakies a tam załóż konto podaj nr karty kredytowej…

    • Do openvpna nie potrzebujesz konta. Domena także nie jest wymagana, można wszystko robić po adresie IP. W przypadku CCTV najlepszą opcją będzie l2tp/ipsec. Sprawdź w logach MT co dokładnie się dzieje przy komunikacie “nieoczekiwany błąd”.

      • Cz dobrze zrozumiałem, że w polu “domena” można wpisać adres IP WAN? Mama stały adres IP Providera.

  10. Witam serdecznie. Mam pytanie problem dot. polecenia ” redirect-gateway def1″ po stronie klienta. Z poleceniem cały ruch w komputerze klienta (nawet internetowy) kierowany jest poprzez vpn do bramy sieci lokalnej. Natomiast bez tego polecenia nie widzi z kolej sieci lokalnej, co jest mi bardzo potrzebne do pracy.
    Stąd moje pytanie: czy istnieje możliwość dostępu do sieci LAN przez VPN bez przekierowywania całego ruchu poprzez VPN i LAN ?

    • Cześć, musisz ręcznie ustawić routing do sieci lokalnej. Skasuj “redirect-gateway def1” i dodaj:
      route 192.168.1.0 255.255.255.0 – oczywiście w miejsce 192.168.1.0 podajesz adres ip swojej sieci.

  11. Przez ustawienie user.key nie działa autoryzacja, nazwę należy ustawić jako user a system sam doda .key, inaczej wychodzi user.key.key

  12. Dzięki za poradnik, działa super, nawet przy braku statycznego adresu IP (wykorzystuję *sn.mynetname.net zamiast IP) 🙂
    Mam jeden problem. Potrzebuję, by osoba łącząca się przez VPN miała adres z tej samej puli co główne DHCP.
    Eksperymentalnie ustawiłem “Local address” 192.168.8.2 dla OpenVPN (DNS server na 192.168.8.1 – taki sam jak IP MT) i wskazałem zarówno dla głównej sieci jak i dla OVPN tę samą pulę adresów 192.168.8.x-y. Jest to połowiczny sukces
    Jestem w stanie się połączyć się, mam internet i zewn. IP od MT ale chyba brakuje jakiejś reguły bo nie mam dostępu do zasobów (rdp i udostępnione foldery) wewnątrz sieci.

  13. Czy jest możliwość konfiguracji VPN zgodnie z powyższym opisem bez domeny tylko ze stałym adresem IP?

    • Jeżeli chcesz łączyć dwa routery ze sobą site-to-site to l2tp z ipsec będzie lepszym rozwiązaniem. Łatwiejszy w konfiguracji, lepiej poradzi sobie jeżeli urządzenia są za NAT’em. Nie wymaga instalacji dodatkowego klienta. Natomiast jeżeli chcesz używać VPN per użytkownik(komórka, pc, laptop) to OpenVPN będzie lepszym rozwiązaniem. Do obrazu z kamer l2tp będzie wygodniejszym rozwiązaniem.

  14. Skonfigurował wszystko jak w tutorialu i nie mogę nawiązać połączenia.

    LOG z OVPN:
    Tue Sep 25 21:40:50 2018 Certificate does not have extended key usage extension
    Tue Sep 25 21:40:50 2018 VERIFY EKU ERROR
    Tue Sep 25 21:40:50 2018 OpenSSL: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
    Tue Sep 25 21:40:50 2018 TLS_ERROR: BIO read tls_read_plaintext error
    Tue Sep 25 21:40:50 2018 TLS Error: TLS object -> incoming plaintext read error
    Tue Sep 25 21:40:50 2018 TLS Error: TLS handshake failed
    Tue Sep 25 21:40:50 2018 Fatal TLS error (check_tls_errors_co), restarting
    Tue Sep 25 21:40:50 2018 SIGUSR1[soft,tls-error] received, process restarting

    Ma ktoś jakiś pomysł gdzie szukać przyczyny?

  15. Dziękuję za świetny opis, szczególnie, że pułapek przy tej konfiguracji jest co nie miara:) Mam jednak problem z połączeniem się z iPhone’a:

    error parsing config private key : PKCS5 – Requested encryption or digest alg not available

    Rozwiązanie nawet istnieje, okazuje się że plik z kluczem powinien być zaszyfrowany/zahasłowany(?) algorytmem(?) RSA
    https://forums.openvpn.net/viewtopic.php?t=23223#p72298

    Przy czym easy-rsa na moim Macu nie działa, bo chyba mamy LibreSSL zamiast OpenSSL i już te przeszkody zaczynają mnie przerastać.

    Może jest w MikroTiku jakiś magiczny switch, który wygeneruje klucz tak jak należy? 🙂

  16. Cześć, nie mogę sobie poradzić z błędem
    ++ Certificate has key usage 00b0, expects 00a0
    ++ Certificate has key usage 00b0, expects 0088
    VERIFY KU ERROR

    Zakładam, ze to problem certyfikatu serwera vpn lub klienta, ale którego i czego mu brakuje?

    • Odpowiem sobie sam, dla potomnych…
      W opcjach certyfikatu serwera ustawiłem tylko digital signature, key encipherment and tls server i poszło…

    • Dodatkowo w moim przypadku konieczne było ustawienie opcji certyfikatu użytkownika:
      – digital signature
      – key enciphement
      – tls client

  17. Cześć, fajny artykuł, przydatny – pomógł mi skonfigurować OpenVPN na Mikrotiku. Mam jednak mały problem, wszystko działa jednak nie działa 🙂
    Łączy się ale zaraz soft-reset. Nic w logach, po prostu w pętli połączenie i reset. Żadnego błędu. Jak włączyć logowanie openvpn żeby zobaczyć gdzie leży problem?

  18. Dzień Dobry
    Czy jest możliwość ustawienia przypisania adresów IP z ustalonej puli na stałe dla konkretnego klienta zdalnego aby taki sam miał za każdym razem po podłączeniu się ?
    “Przygotowanie adresacji dla klientów VPN”
    Dziękuję.

  19. A ja mam dziwną zagwozdkę.
    Wszystko działa, ale z jakiegoś powodu certyfikaty zachowują się jak by ich ważność była na poziomie kilki – kilkunastu godzin. I to w dwóch różnych routerach/konfiguracjach.
    Mogę się podłączyć, ale wieczorem już nie. Wystawiam nowe certyfikaty – śmiga natychmiast.

  20. Cześć.Dzięki za artykuł. Przeprowadziłem konfigurację na mikrotiku wg. Twojego filmu. Dla VPN jest następująca adresacja : 10.0.0.2-10.0.0.40
    Na kliencie normalnie nawiązuje połączenie z serwerem VPN.
    Niestety nie mam dostępu do komputerów w sieci lokalnej : 192.168.2.0/24

    Co muszę wykonać ? Proszę Cię o przedstawienie kroku po kroku 🙂

    • Poradziłem sobie przez skasowanie w konfiguracji klienta : redirect-gateway def1 i wstawienie route 192.168.2.0 255.255.255.0

      Jednak czy jest to bezpieczne rozwiązanie ?

  21. Cześć, Mam pytanko. Zrobiłem wszystko jak opisałeś ale po połączeniu do routera na którym mam server VPN nie mogę pingować w sieci LAN. Nie mam dostępu do innych stacji. Czy mógłbyś mi pomóc?

  22. Hej. Rozwiązanie z certyfikatami generowanymi z mikrotiku mi działa, jednak chciałbym importować certyfikaty z CA mojej domeny, dodatkowo by na mikrotiku sprawdzany był certyfikat stacji – Win10, Zależy mi na łączeniu z VPN większej ilości maszyn by były weryfikowane ich indywidualne certyfikaty stacji.

  23. Witam.
    Walczę z mikrotikiem i mam taki problem. Ustawiłem już sobie połączenie VPN. Serwer działa i klient się łączy z nim. Dodałem sobie w kliencie opcje: route 192.168.1.0 255.255.255.0 10.0.0.1
    Dzięki temu mogę pingować już mikrotika przez internet. Problem w tym że nie mogę się połączyć z nim przez winboxa. Czy trzeba jakąś regułę dodać w firewallu żeby dało się dostać przez winboxa przez openvpn?
    Pierwszy raz w życiu robię mikrotika i nie jest to dla mnie proste.

  24. Udało się komuś połączyć z Androida?? z Windows działa bezproblemowo ale z telefonu nie chce się połączyć

  25. Jak należy skonfigurować Mikrotika aby było połączenie między komputerem w sieci lan a komputerem w sieci VPN? Chciałbym się połączyć przez uvnc na komputer za vpn aby zdalnie na nim coś zrobić.

  26. Witam, wykonałem wszystko według poradnika niestety przy łączeniu po wpisaniu haseł, brak połączenia. W certyfikatach w common name dałem swoje IP.
    https://pastebin.com/E2finbz8. Dodam tylko, że miałem wcześniej skonfigurowane OpenVPN na OpenWrt, więc portów z zewnątrz nie mam zamkniętych (po drodze mam router operatora jeszcze).

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Captcha * Time limit is exhausted. Please reload the CAPTCHA.