Opisywałem już wcześniej jak utworzyć połączenie VPN dla urządzeń Apple iOS oraz Windows. Teraz kolej na Android.
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.
Polecenie utworzy plik client1.p12
, kopiujemy go razem z plikiem cert_export_myCa.crt
do pamięci urządzenia Android.
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.
Jeżeli otrzymamy komunikat Nie można zainstalować certyfikatów CA… to przechodzimy do Ustawienia/Bezpieczeństwo i prywatność/Inne ustawienia zabezpieczeń/Instaluj z pamięci urządzenia/Certyfikat CA
.
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 ,a będę miał więcej energii na pisanie kolejnych ciekawych wpisów.