MikroTik VPN dla Android IKEv2 IPSec

Opisywałem już wcześniej jak utworzyć połączenie VPN dla urządzeń Apple iOS oraz Windows. Teraz kolej na Android.

Grafika wygenerowana przez AI https://www.bing.com/images/create

Poniższa konfiguracja była testowana i działa na systemie Android 5x, 7x i 13x oraz na RouterOS 6.48.6, 6.49.10 i 7.12.1 Na początek musimy wygenerować certyfikaty. Pierwszy to myCa (Certificate authority).

/certificate add name=ca-template common-name=myCa key-usage=key-cert-sign,crl-sign days-valid=3650 key-size=2048 country=PL
/certificate sign ca-template name=myCa
/certificate set myCa trusted=yes

Następnie certyfikat serwera VPN (naszego routera) poświadczony przez wcześniej utworzony CA.

/certificate add name=server-template common-name=server days-valid=3650 key-size=2048 country=PL
/certificate sign server-template ca=myCa name=server
/certificate set server trusted=yes

Ostatni certyfikat dla klienta (naszego urządzenia Android).

/certificate add name=client1-template common-name=client days-valid=3650 key-size=2048 country=PL
/certificate sign client1-template ca=myCa name=client1

Teraz eksportujemy do pliku certyfikat myCa oraz certyfikat client1 wraz z kluczem. Zauważ że w poleceniu eksportującym certyfikat klienta musisz podać hasło export-passphrase=. Może być to dowolne, wymyślone przez Ciebie hasło.

/certificate export-certificate myCa
/certificate export-certificate client1 export-passphrase=12345678

Po wykonaniu powyższych poleceń, w plikach routera powinieneś mieć pliki o następujących nazwach:

  • cert_export_client1.crt
  • cert_export_client1.key
  • cert_export_myCa.crt

Teraz musimy użyć komputera z systemem operacyjnym LINUX (może być maszyna wirtualna) i programu openssl. Posłuży nam on do utworzenia pliku .p12 (personal information exchange file). Kopiujemy wszystkie 3 powyższe pliki z routera do systemu linux i wykonujemy poniższe polecenie.

openssl pkcs12 -export -in cert_export_client1.crt -inkey cert_export_client1.key -certfile cert_export_myCa.crt -out client1.p12

Polecenie zapyta o hasło importu, a następnie poprosi o wpisanie 2x hasła eksportu. Na potrzeby tego wpisu zostawiam wszystkie hasła na 12345678.

Wróćmy jednak jeszcze do konfiguracji naszego MikroTik. Musimy utworzyć pulę adresów, które będą przydzielane w punktach końcowych tunelu VPN.

/ip pool add name=pool_vpn ranges=172.16.18.2-172.16.18.100

Oraz konfigurację IPSec dla utworzonej puli. Zauważ, że w parametrze split-include= musisz podać adres sieci lokalnej, do której klient VPN Android ma mieć dostęp.

/ip ipsec mode-config add address-pool=pool_vpn address-prefix-length=32 name=vpn split-include=10.0.0.0/24 system-dns=no

Kolej na resztę konfiguracji IPSec. Wszystkie komendy można przekopiować bez zmian.

/ip ipsec peer add exchange-mode=ike2 name=peer1 passive=yes send-initial-contact=no
/ip ipsec proposal set [ find default=yes ] auth-algorithms=sha256,sha1 enc-algorithms=aes-256-cbc pfs-group=none
/ip ipsec profile set [ find default=yes ] enc-algorithm=aes-256 hash-algorithm=sha256 proposal-check=strict
/ip ipsec identity add auth-method=digital-signature certificate=server generate-policy=port-strict match-by=certificate peer=peer1 remote-certificate=client1

Jeżeli na swoim routerze masz skonfigurowany firewall, który blokuje ruch, to odpowiednio wysoko umieść reguły pozwalające na ruch UDP na portach 500 i 4500 oraz protokół ipsec-esp. Dodatkowo określ in-interface= na ten, którym chcesz się łączyć przez VPN.

/ip firewall filter add action=accept chain=input dst-port=500,4500 in-interface=ether1 protocol=udp
/ip firewall filter add action=accept chain=input in-interface=ether1 protocol=ipsec-esp

To wszystko w kwestii konfiguracji MikroTik, kolejne kroki wykonujemy na urządzeniu android.


Przechodzimy do aplikacji Moje pliki i klikamy w ikonę pliku o nazwie cert_export_myCa.crt. W ten sposób wykonujemy import certyfikatu myCa.

Kiedy cert_export_myCa.crt zostanie zaimportowany, system android zapyta o nazwę. Po prostu zostawmy tą automatycznie uzupełnioną.

Następnie importujemy plik client1.p12 (już z poziomu aplikacji Moje pliki ), kiedy system zapyta o hasło importu, wpisujemy ustawione wcześniej hasło (w moim poleceniu było 12345678).

Następnie na urządzeniu android przechodzimy do Ustawienia/Połączenia/Więcej ustawień połączenia/VPN i przez kliknięcie trzech ktopek w prawym górnym rogu ekranu dodajemy nowy profil VPN:

Z następującymi opcjami:

  • Nazwa: What-IT (nazwa może być dowolna)
  • Typ: IKEv2/IPSecRSA
  • Adres serwera: 8X.XX.XXX.X (publiczny adres IP naszego routera)
  • Certyfikat użytkownika IPSec: client1 (wybieramy z listy)
  • Certyfikat Ca IPSec: cert_export_myCa (wybieramy z listy)
  • Certyfikat serwera IPSec: Otrzymany z serwera

Na starszych wersjach systemu android wyglądało to w ten sposób:

Klikamy zapisz.

Koniec 🙂

Jeżeli pomogłem to Postaw mi kawę na buycoffee.to ,a będę miał więcej energii na pisanie kolejnych ciekawych wpisów.

Dodaj komentarz

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