W trzeciej części cyklu VPN opiszę jak zainstalować i skonfigurować OpenVPN w chmurze AWS, oraz jak przygotować pliki konfiguracyjne dla OnCell G3150A-LTE.
Wpis ma bardziej formę skróconej instrukcji z odnośnikami do innych witryn, ponieważ temat ten jest zbyt obszerny do formatu wpisu.
Topologia
Na serwerze wirtualnym w chmurze AWS będzie zainstalowany Linux Ubuntu 16.04, a na nim OpenVPN server w wersji Open source. Do serwera będzie łączył się OnCell G3150A-LTE oraz komputer jako klienci, a celem jest połączenie obu stron tunelu VPN, tak aby oba urządzenia mogły się pingować wzajemnie.
Co będziemy potrzebować?
Na pewno instancji maszyny wirtualnej na AWS. O tym jak założyć darmowe konto w AWS i uruchomić takową maszynę można znaleźć sporo informacji w sieci. Osobiście polecam posiłkować tą instrukcją:
https://chmurowisko.pl/uruchomic-swoj-wlasny-serwer-amazon-aws-darmo/
Do tego celu będzie potrzebna karta kredytowa oraz 15 minut. Dodam że obecnie nie jest już dostępny klient ssh w Javie, a z wirtualną maszyną można połączyć się korzystając z popularnego klient Putty. Oczywiście należy pamiętać o utworzeniu klucza prywatnego w AWS i zapisaniu go na dysku. Należy pamiętać o utworzeniu odpowiednich zasad bezpieczeństwa w AWS (security group), chodzi o to aby otworzyć odpowiednie porty UDP/TCP, aby klienci mogli się łączyć z serwerem VPN bezproblemowo. Standardowy port OpenVPN to 1194, ale polecam go zmienić na inny nietypowy, koniecznie nieużywany przez inne procesy. Jeśli już mamy gotową świeżą instancję możemy przejść do instalacji i konfiguracji serwera VPN.
Proces konfiguracji OpenVPN:
- Instalacja i konfiguracja środowiska OpenVPN
- Wygenerowanie certyfikatu CA, oraz certyfikatu serwera i klucza
- Generowanie certyfikatów i kluczy dla klientów.
- Tworzenie zunifikowanego profilu (konfiguracji) .ovpn , oraz .p12 dla OnCella
- Instalowanie pliku konfiguracyjnego OpenVPN na klientach
- Testowanie połączenia
- Dodatkowe ustawienia, routing etc.
Bardzo dobrze proces instalacji i konfiguracji opisany jest na poniższej stronie innego dostawcy rozwiązań chmurowych:
Dodam że aby uniknąć potencjalnego błędu nsCertType ERROR na kliencie VPN, przed wygenerowaniem certyfikatów i kluczy dla serwera VPN i klientów, warto sprawdzić czy w konfiguracji openssl (/etc/openvpn/easy-rsa/openssl.cnf) jest wpisana / odkomentowana odpowiednia dyrektywa:
nsCertType=SERVER
Jest ona niezbędna, aby nasz testowy klient (OnCell G3150A-LTE) był w stanie się prawidłowo połączyć z serwerem. Prawidłowe pliki konfiguracyjne serwera oraz klienta, kompatybilne z OnCell G3150A-LTE: Server client
Jak przekonwertować certyfikat i klucz klienta na format .p12?
Sam OnCell G3150A-LTE jako klient jest w stanie zaimportować konfigurację tylko w formacie .p12, a sam serwer OpenVPN nie generuje plików konfiguracyjnych w tym formacie dlatego należy skorzystać z OpenSSL aby utworzyć plik konfiguracyjny właśnie w formacie .p12. Krótki opis jak to zrobić można znaleźć tutaj:
https://www.ssl.com/how-to/create-a-pfx-p12-certificate-file-using-openssl/
W trakcie generowania certyfikatu .p12 użytkownik jest proszony o podanie hasła, które będzie zabezpieczać plik. Trzeba je zapamiętać, ponieważ będzie potrzebne przy importowaniu w kliencie. Wygenerowane przez serwer OpenVPN certyfikaty ca.crt oraz certyfikat_klienta.p12 należy zaimportować w Oncell G3150A-LTE, wystarczy je pobrać za pomocą WinSCP z serwera. Połączenie tym programem wygląda podobnie jak putty, też należy podać ścieżkę do klucza prywatnego pobranego wcześniej z AWS. Analogicznie jak przy putty należy podać nazwę użytkownika maszyny wirtualnej oraz hasło, którym został zabezpieczony klucz prywatny. Przy próbie kopiowania może nam wyskoczyć komunikat „Access Denied”, co oznacza najprawdopodobniej, że nie jesteśmy właścicielami tychże certyfikatów. Wystarczy zmienić właściciela pliku (ownership). Załóżmy, że logujemy się winscp jako użytkownik „ubuntu”, to wtedy polecenie do zmiany ownership wygląda tak:
sudo chown ubuntu:ubuntu /nazwa_pliku
Konfiguracja OnCell G3150A-LTE
Teraz, gdy już jesteśmy w posiadaniu wszystkich certyfikatów, należy je zaimportować w G3150A. Należy też pamiętać o odpowiedniej, zbieżnej konfiguracji połączenia VPN, tj. właściwy publiczny adres IP serwera VPN, numer portu (TCP lub UDP), algorytm szyfrowania itd. Na koniec trzeba zapisać i zatwierdzić zmiany konfiguracji w OnCell G3150A-LTE. Aby sprawdzić czy nasze urządzenie łączy się z serwerem wystarczy sprawdzić logi:
Status -> VPN - > OpenVPN -> Client Status, oraz client logs.
Można też sprawdzić System logs. Jeśli w konfiguracji serwera (/etc/openvpn/server.conf) wpisaliśmy dyrektywę „status openvpn-status.log” to można za pomocą tego pliku (/etc/openvpn/openvpn-status.log) sprawdzać aktualny status serwera OpenVPN. Można tam znaleźć informacje np. na temat aktualnie połączonych klientów, a także tablicę routingu wg, której serwer VPN kieruje ruchem pomiędzy podsieciami klientów. Jeśli zależy nam na bardziej szczegółowym logu to można też posiłkować się plikiem /etc/openvpn/openvpn.log.
Komunikacja pomiędzy klientami serwera OpenVPN
Aby urządzenia z podsieci Oncelli widziały się z innymi klientami serwera, należy jeszcze skonfigurować routing i inne dyrektywy zgodnie z opisem na stronie projektu OpenVPN:
https://openvpn.net/index.php/open-source/documentation/howto.html#scope
„Including multiple machines on the client side when using a routed VPN (dev tun)”
Powyższy akapit opisuje co należy zamieścić w pliku konfiguracyjnym serwera aby klienci się „widzieli”. Jeśli naszym klientem VPN jest maszyna-router (czyli nie punkt końcowy), a tunel VPN jest w trybie „Router”, to należy pamiętać aby włączyć IP forwarding, zarówno na klientach Windows jak i Linux, poniżej referencja:
https://community.openvpn.net/openvpn/wiki/265-how-do-i-enable-ip-forwarding
Poniżej efekty konfiguracji:
Adresacja:
192.168.15.10 - Adres IP komputera połączonego do OnCella 10.8.0.1 - wirtualny adres IP serwera VPN 10.8.0.6 - wirtualny adres IP clienta VPN (laptop) przydzielony przez serwer 10.8.0.10 - Wirtualny adres IP client VPN (Oncell) przydzielony przez serwer
Podsumowanie
Darmowe konto AWS umożliwia testowanie maszyny wirtualnej i opisywanego serwera przez rok od utworzenia konta (nie przekraczając limitów) co umożliwia gruntowne przetestowanie wielu scenariuszy i nie tylko. Najważniejsza korzyść posiadania serwera VPN w chmurze to wygoda, ponieważ nie trzeba utrzymywać fizycznego serwera oraz dedykowanego łącza do niego. Drugą zaletą jest to, że budowanie topologii opartej o jeden taki serwer z wieloma klientami komórkowymi jest tańsze i prostsze, ponieważ klienci nie muszą posiadać stałych publicznych adresów , co w przypadku sieci komórkowych może obniżyć koszty. Serwer OpenVPN w chmurze jest wygodnym i bezpiecznym pośrednikiem pomiędzy zdalnymi podsieciami łączonymi za pomocą bramek komórkowych OnCell G3150A-LTE. Jeśli mielibyście problemy z konfiguracją AWS i bramek komórkowych Moxy to zapraszam do kontaktu, zawsze postaramy się pomóc, i rozwiązać problem.
Zapraszam również do zapoznania się z pozostałymi częściami cyklu „Zdalny dostęp za pośrednictwem sieci komórkowej”:
Część 4 - OnCell Central Manager
Część 3 - OpenVPN w chmurze AWS
Źródła:
Strona projektu OpenVPN - najlepsze źródło informacji na temat konfiguracji serwera i klienta: https://openvpn.net/index.php/open-source/documentation/howto.html
OpenVPN FAW: https://community.openvpn.net/openvpn/wiki/FA
Instrukcja użytkownika OnCell G3150A-LTE: https://www.elmark.com.pl/pl/sklep/moxa/Oncell_G3150A_LTE
Dokumentacja Amazon Web Services: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html
Skontaktuj się ze specjalistą Elmark
Masz pytania? Potrzebujesz porady? Zadzwoń lub napisz do nas!