Ostatnia część cyklu o konfiguracji własnego serwera VPN na minikomputerze Raspberry PI, po zeszło-artykułowej walce z serwerem, nadszedł czas na konfigurację klienta.+
W tej części również podpieram się m.in. znakomitym artykułem autorstwa Johna, w paru miejscach dokonałem jednak istotnych modyfikacji.
Tworzymy plik konfiguracyjny
Najszybszym sposobem skonfigurowania klienta jest stworzenie specjalnego pliku konfiguracyjnego i zasilenie nim oprogramowania klientowskiego, w tym celu logujemy się za pomocą SSH na Malinę, na której konfigurowaliśmy serwer (posłuży nam on do wygenerowania pliku z konfiguracją).
Podwyższamy uprawnienia sesji:
sudo -s
Tworzymy plik tekstowy w folderze z naszymi kluczami:
sudo nano /etc/openvpn/easy-rsa/keys/Default.txt
Wypełniamy utworzony plik podstawowymi informacjami o serwerze:
client dev tun proto udp remote TWOJ_PUBLICZNY_ADRES_IP 1194 resolv-retry infinite nobind persist-key persist-tun mute-replay-warnings ns-cert-type server key-direction 1 cipher AES-128-CBC comp-lzo verb 1 mute 20 <code>tls-client</code>
Swój publiczny adres IP można sprawdzić w konfiguracji routera, lub np. na tej stronie.
Korzystamy ze skryptu:
Teraz skorzystamy ze skryptu Erica Jodoina, jego najnowsza wersja dostępna jest tutaj.
Na dzień publikacji artykułu jego treść jest następująca:
#!/bin/bash # Default Variable Declarations DEFAULT="Default.txt" FILEEXT=".ovpn" CRT=".crt" KEY=".3des.key" CA="ca.crt" TA="ta.key" #Ask for a Client name echo "Please enter an existing Client Name:" read NAME #1st Verify that client’s Public Key Exists if [ ! -f $NAME$CRT ]; then echo "[ERROR]: Client Public Key Certificate not found: $NAME$CRT" exit fi echo "Client’s cert found: $NAME$CR" #Then, verify that there is a private key for that client if [ ! -f $NAME$KEY ]; then echo "[ERROR]: Client 3des Private Key not found: $NAME$KEY" exit fi echo "Client’s Private Key found: $NAME$KEY" #Confirm the CA public key exists if [ ! -f $CA ]; then echo "[ERROR]: CA Public Key not found: $CA" exit fi echo "CA public Key found: $CA" #Confirm the tls-auth ta key file exists if [ ! -f $TA ]; then echo "[ERROR]: tls-auth Key not found: $TA" exit fi echo "tls-auth Private Key found: $TA" #Ready to make a new .opvn file - Start by populating with the default file cat $DEFAULT > $NAME$FILEEXT #Now, append the CA Public Cert echo "<ca>" >> $NAME$FILEEXT cat $CA >> $NAME$FILEEXT echo "</ca>" >> $NAME$FILEEXT #Next append the client Public Cert echo "<cert>" >> $NAME$FILEEXT cat $NAME$CRT | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >> $NAME$FILEEXT echo "</cert>" >> $NAME$FILEEXT #Then, append the client Private Key echo "<key>" >> $NAME$FILEEXT cat $NAME$KEY >> $NAME$FILEEXT echo "</key>" >> $NAME$FILEEXT #Finally, append the TA Private Key echo "<tls-auth>" >> $NAME$FILEEXT cat $TA >> $NAME$FILEEXT echo "</tls-auth>" >> $NAME$FILEEXT echo "Done! $NAME$FILEEXT Successfully Created." #Script written by Eric Jodoin \ No newline at end of file
Tworzymy plik i wypełniamy go powyższą treścią:
sudo nano /etc/openvpn/easy-rsa/keys/MakeOVPN.sh
Teraz trzeba nadać skryptowi uprawnienia do wykonani:
cd /etc/openvpn/easy-rsa/keys chmod 700 MakeOVPN.sh
i… wykonać:
./MakeOVPN.sh
Jeśli skrypt zakończy swoje działanie bez błędów – zostanie utworzony plik NAZWA_UZYTKOWNIKA.ovpn
Konfigurujemy połączenie na Androidzie
Nadszedł czas próby generalnej – połączymy się z naszym VPNem za pomocą urządzenia mobilnego z systemem Android .
Ze sklepu Google Play na urządzeniu pobieramy aplikację OppenVPN Connect.
Kopiujemy utworzony przez skrypt z Raspberry Pi na urządzenie z Androidem (z Raspberry możemy kopiować pliki za pomocą np. WinSCP lub FileZilli, na Androida wgrywamy dowolnym sposobem: mail, dysk Google, AirDroid, etc.).
Plik znajduje się w lokalizacji:
/etc/openvpn/easy-rsa/keys/NAZWA_UZYTKOWNIKA.ovpn
Aby łatwiej było go skopiować możemy go przenieść do naszego katalogu domowego (katalog keys jest dostępny wyłacznie tylko dla użytkowników o podwyższonych uprawnieniach):
cp ŃAZWA_UZYTKOWNIKA.ovpn ~
Pamiętajmy, aby dla bezpieczeństwa – na końcu – usunąć ten plik z folderu domowego!
W aplikacji mobilnej na Androidzie wybieramy:
- Import => Import from SD card
- Wskazujemy folder, w którym znajduje się skopiowany plik konfiguracyjny (NAZWA_UZYTKOWNIKA.ovpn)
- (W razie problemów polecam program Total Commander na Androida, który pomoże nam przenieść plik w wybrane przez nas miejsce)
- I już!
- Aby się połączyć wprowadzamy hasło do naszego klucza (to, które podaliśmy podczas konfiguracji (po pytaniu: Enter PEM pass phrase Generujemy klucze użytkowników).
- Po chwili powinniśmy uzyskać połączenie.
Powodzenia, w razie problemów – zapraszam do komentowania! 🙂
Artykuł w ukazuje się w ramach projektu CyberHome tworzonego w ramach akcji DajSięPoznać.
Łącząc się przez pakiety internetowe z telefonu nie ma połączenie. Jakieś pomysły?
A z innego komputera stacjonarnego działa?
Sprawdź czy masz otwarty i widoczny ze świata port, na którym działa OpenVPN (https://www.yougetsignal.com/tools/open-ports/).
Jeśli port jest otwarty – obstawiałbym jakiś błąd w konfiguracji…