Raspberry Pi – serwer VPN – cz. 3

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:

  1. Import => Import from SD card
  2. Wskazujemy folder, w którym znajduje się skopiowany plik konfiguracyjny (NAZWA_UZYTKOWNIKA.ovpn)
  3. (W razie problemów polecam program Total Commander na Androida, który pomoże nam przenieść plik w wybrane przez nas miejsce)
  4. I już!
  5. 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).
  6. 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ć.


2 przemyślenia nt. „Raspberry Pi – serwer VPN – cz. 3

Dodaj komentarz

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